ci.yml (2429B)
1 name: CI 2 3 on: [ push, pull_request, workflow_dispatch ] 4 5 permissions: { } 6 7 jobs: 8 CI: 9 name: ${{ matrix.name }} 10 runs-on: ${{ matrix.os }} 11 strategy: 12 fail-fast: false 13 matrix: 14 include: 15 - name: "Linux x64 (Ubuntu Latest) - GCC 14" 16 os: ubuntu-latest 17 build: { cc: gcc-14, cxx: g++-14, linker: ld } 18 19 #- name: "macOS arm64 (latest) - Xcode" 20 # os: macos-latest 21 # build: { cc: clang, cxx: clang++, linker: ld.lld } 22 23 env: 24 CC: ${{ matrix.build.cc }} 25 CXX: ${{ matrix.build.cxx }} 26 LD: ${{ matrix.build.linker }} 27 CPPFLAGS: -Wall 28 29 steps: 30 - name: Checkout code 31 uses: actions/checkout@v4 32 33 - name: Install Ubuntu dependencies 34 if: runner.os == 'Linux' 35 run: | 36 sudo apt-get update 37 sudo apt-get install \ 38 meson pkg-config 39 40 - name: Install macOS dependencies 41 if: runner.os == 'macOS' 42 run: | 43 pip3 install meson --break-system-packages 44 brew install \ 45 ninja pkg-config 46 47 48 - name: Prepare macOS environment 49 if: runner.os == 'macOS' 50 run: | 51 echo "PKG_CONFIG_PATH=$(brew --prefix botan)/lib/pkgconfig:$PKG_CONFIG_PATH" >> $GITHUB_ENV 52 53 - name: Build and install Botan 54 run: | 55 git clone --depth 1 https://github.com/randombit/botan.git 56 pushd botan 57 ./configure.py --prefix="${{ github.workspace }}/botan-install" 58 make -j$(nproc) 59 make install 60 popd 61 echo "PKG_CONFIG_PATH=${{ github.workspace }}/botan-install/lib/pkgconfig:$PKG_CONFIG_PATH" >> $GITHUB_ENV 62 echo "CPPFLAGS=-I${{ github.workspace }}/botan-install/include $CPPFLAGS" >> $GITHUB_ENV 63 echo "LDFLAGS=-L${{ github.workspace }}/botan-install/lib $LDFLAGS" >> $GITHUB_ENV 64 65 - name: Configure spank-olm 66 run: | 67 meson setup build \ 68 -Ddebug=true \ 69 || (cat build/meson-logs/meson-log.txt && exit 1) 70 71 - name: Build spank-olm 72 run: meson compile -C build 73 74 - name: Check spank-olm 75 run: | 76 meson test -C build \ 77 || (cat build/meson-logs/testlog.txt && exit 1) 78 79 - name: Install spank-olm 80 run: sudo meson install -C build 81 82 - name: Rebuild the shared library cache 83 if: runner.os == 'Linux' 84 run: sudo ldconfig