diff --git a/docs/building.md b/docs/building.md index 52a621b83..792da737b 100644 --- a/docs/building.md +++ b/docs/building.md @@ -88,18 +88,18 @@ get helpful spacers/movs in the disassembly. Linux support is extremely experimental and presently incomplete. -The build script uses LLVM/Clang 9. GCC while it should work in theory, is not easily +The build script uses LLVM/Clang 19. GCC while it should work in theory, is not easily interchangeable right now. -* Normal building via `xb build` uses Make. +* Normal building via `xb build` uses CMake+Ninja. * [CodeLite](https://codelite.org) is supported. `xb devenv` will generate a workspace and attempt to open it. Your distribution's version may be out of date so check their website. * Experimental CMake generation is available to facilitate use of other IDEs such as [CLion](https://www.jetbrains.com/clion/). If `clion` is available inside `$PATH`, `xb devenv` will start it. Otherwise `build/CMakeLists.txt` needs to be generated by invoking `xb premake --devenv=cmake` manually. -Clang-9 or newer should be available from system repositories on all up to date distributions. +Clang-19 or newer should be available from system repositories on all up to date distributions. You will also need some development libraries. To get them on an Ubuntu system: -```bash -sudo apt-get install libgtk-3-dev libpthread-stubs0-dev liblz4-dev libx11-dev libx11-xcb-dev libvulkan-dev libsdl2-dev libiberty-dev libunwind-dev libc++-dev libc++abi-dev +```sh +sudo apt-get install mesa-vulkan-drivers valgrind libc++-dev libc++abi-dev libgtk-3-dev libsdl2-dev libvulkan-dev libx11-xcb-dev clang-19 llvm-19 ninja-build ``` In addition, you will need up to date Vulkan libraries and drivers for your hardware, which most distributions have in their standard repositories nowadays. diff --git a/xenia-build b/xenia-build index 8ab08193d..19766ed66 100755 --- a/xenia-build +++ b/xenia-build @@ -443,10 +443,9 @@ def get_clang_format_binary(): Returns: A path to the clang-format executable. """ - clang_format_minimum_ver='19' + clang_format_version_req = '19' attempts = [ - 'clang-format-20', - 'clang-format-' + clang_format_minimum_ver, + 'clang-format-' + clang_format_version_req, 'clang-format', ] if sys.platform == 'win32': @@ -456,13 +455,12 @@ def get_clang_format_binary(): attempts.append(os.path.join(os.environ['VCINSTALLDIR'], 'Tools', 'Llvm', 'bin', 'clang-format.exe')) for binary in attempts: if has_bin(binary): - shell_call([ - binary, - '--version', - ]) - return binary + clang_format_out = subprocess.check_output([binary, '--version'], text=True) + if int(clang_format_out.split('version ')[1].split('.')[0]) >= int(clang_format_version_req): + print(clang_format_out) + return binary print('ERROR: clang-format is not on PATH') - print('At least version ' + clang_format_minimum_ver + ' is required.') + print('Version ' + clang_format_version_req + ' is required.') print('See docs/style_guide.md for instructions on how to get it.') sys.exit(1)