From fbf2cb43ad0c29d3fc3d9f52fde9137084b399e4 Mon Sep 17 00:00:00 2001 From: RedbeanW Date: Tue, 11 Mar 2025 18:20:04 +0800 Subject: [PATCH] ci: setup linux build. (#4) --- .github/workflows/build-linux.yml | 68 +++++++++++++++++++++++++++++++ xmake.lua | 16 +++----- 2 files changed, 73 insertions(+), 11 deletions(-) create mode 100644 .github/workflows/build-linux.yml diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml new file mode 100644 index 0000000..2108e25 --- /dev/null +++ b/.github/workflows/build-linux.yml @@ -0,0 +1,68 @@ +name: Build (Linux) + +on: + push: + paths: + - .github/workflows/build-linux.yml + - src/** + - xmake.lua + workflow_dispatch: + +jobs: + build: + strategy: + matrix: + mode: [debug, release] + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + +# - name: Prepare works +# run: | +# mkdir ./.xmake-dest + + - name: Restore build cache + uses: actions/cache@v4 + with: + path: | + ~/.xmake + ./.xmake-dest + key: xmake-linux-${{ hashFiles('xmake.lua') }} + restore-keys: | + xmake-linux- + + - name: Setup XMake + uses: xmake-io/github-action-setup-xmake@v1 + with: + xmake-version: '2.9.8' + actions-cache-folder: './.xmake-dest' + + - name: Install build dependencies + run: | + sudo apt install -y build-essential llvm-19-dev libclang-19-dev + + # workaround to switch llvm version. + sudo mv /usr/include/clang /usr/include/clang-compiler + sudo ln -s /usr/lib/llvm-19/bin/llvm-config /usr/bin/llvm-config + sudo ln -s /usr/include/llvm-19/llvm /usr/include/llvm + sudo ln -s /usr/include/llvm-c-19/llvm-c /usr/include/llvm-c + sudo ln -s /usr/lib/llvm-19/include/clang /usr/include/clang + sudo ln -s /usr/lib/llvm-19/include/clang-c /usr/include/clang-c + + + - name: Configure + run: | + # c++23 requires gcc 14. + xmake f -a x64 -m ${{ matrix.mode }} -p linux --toolchain=gcc-14 -v -y + + - name: Build + run: | + xmake -v -y + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: debuginfo-${{ matrix.mode }}-linux-x64-${{ github.sha }} + path: | + build/linux/x64/${{ matrix.mode }} diff --git a/xmake.lua b/xmake.lua index 60021bc..9cddd90 100644 --- a/xmake.lua +++ b/xmake.lua @@ -63,8 +63,12 @@ target('libdi') remove_files('src/tools/**') set_basename('di') + add_ldflags('$(shell llvm-config --libs)') -- xrepo llvm bug? + add_packages( - 'nlohmann_json' + 'xxhash', + 'nlohmann_json', + 'llvm' ) target('askrva') @@ -111,15 +115,10 @@ target('extractsym') set_pcxxheader('src/pch.h') add_packages( - 'llvm', 'nlohmann_json', 'argparse' ) - if is_plat('linux') then -- workaround to fix link problem. - add_links('LLVM') - end - target('makepdb') set_kind('binary') add_deps('libdi') @@ -127,11 +126,6 @@ target('makepdb') set_pcxxheader('src/pch.h') add_packages( - 'llvm', 'nlohmann_json', 'argparse' ) - - if is_plat('linux') then - add_links('LLVM') - end