From 00202f938dde50dcd0a4040159a777e6f6fd4a2f Mon Sep 17 00:00:00 2001 From: Marco Rodolfi Date: Mon, 20 Jan 2025 18:08:15 +0100 Subject: [PATCH] [build] Fix Linux CI This changes the Gnumake build to CMake + Ninja builds in order to fix linker issues in the CI. --- .github/workflows/Linux_build.yml | 2 +- xenia-build | 31 +++++++++++++++++++++---------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/.github/workflows/Linux_build.yml b/.github/workflows/Linux_build.yml index 709304a64..aa4b37646 100644 --- a/.github/workflows/Linux_build.yml +++ b/.github/workflows/Linux_build.yml @@ -71,7 +71,7 @@ jobs: wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc sudo apt-add-repository "deb http://apt.llvm.org/${UBUNTU_BASE}/ llvm-toolchain-${UBUNTU_BASE}-$LLVM_VERSION main" sudo apt-get -y update - sudo apt-get -y install mesa-vulkan-drivers valgrind libc++-dev libc++abi-dev libgtk-3-dev libsdl2-dev libvulkan-dev libx11-dev libx11-xcb-dev clang-$LLVM_VERSION clang-format-$LLVM_VERSION llvm-$LLVM_VERSION + sudo apt-get -y install mesa-vulkan-drivers valgrind libc++-dev libc++abi-dev libgtk-3-dev libsdl2-dev libvulkan-dev libx11-dev libx11-xcb-dev clang-$LLVM_VERSION clang-format-$LLVM_VERSION llvm-$LLVM_VERSION ninja-build cmake ./xb setup - name: Build run: ./xb build --config=Release diff --git a/xenia-build b/xenia-build index 2f02b4d5e..50e4fe79d 100755 --- a/xenia-build +++ b/xenia-build @@ -533,7 +533,7 @@ def run_platform_premake(target_os_override=None, cc='clang', devenv=None): elif target_os == 'android': devenv = 'androidndk' else: - devenv = 'gmake2' + devenv = 'cmake' if target_os != 'linux': cc = None return run_premake(target_os=target_os, action=devenv, cc=cc) @@ -850,15 +850,26 @@ class BaseBuildCommand(Command): ] + scheme_args + pass_args, shell=False, env=dict(os.environ)) else: result = subprocess.call([ - 'make', - '-j' if threads == 0 else '-j%d' % threads, - '-Cbuild/', - 'config=%s_linux' % (args['config']), - ] + pass_args + args['target'], shell=False, env=dict(os.environ)) - print('') - if result != 0: - print('ERROR: build failed with one or more errors.') - return result + 'cmake', + '-S build/', + '-B build/build_%s' % (args['config']), + '-DCMAKE_BUILD_TYPE=%s' % (args['config'].title()), + '-DCMAKE_C_COMPILER=clang', + '-DCMAKE_CXX_COMPILER=clang++', + '-G Ninja' + ] + pass_args, shell=False, env=dict(os.environ)) + print('') + if result != 0: + print('ERROR: cmake failed with one or more errors.') + return result + result = subprocess.call([ + 'ninja', + '-C./build/build_%s' % (args['config']), + '-j' if threads == 0 else '-j%d' % threads, + ] + pass_args, shell=False, env=dict(os.environ)) + if result != 0: + print('ERROR: ninja failed with one or more errors.') + return result return 0