diff --git a/.github/workflows/linux-sqlite-cxx20.yaml b/.github/workflows/linux-sqlite-cxx20.yaml new file mode 100644 index 0000000..e2425b6 --- /dev/null +++ b/.github/workflows/linux-sqlite-cxx20.yaml @@ -0,0 +1,66 @@ +name: linux-sqlite-cxx20 + +on: [ pull_request, workflow_dispatch ] + +env: + VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" + +jobs: + linux: + strategy: + fail-fast: false + matrix: + include: + - compiler: llvm + compiler-version: 16 + - compiler: llvm + compiler-version: 18 + - compiler: gcc + compiler-version: 11 + additional-dep: "g++-11" + - compiler: gcc + compiler-version: 12 + - compiler: gcc + compiler-version: 14 + name: "${{ github.job }} (${{ matrix.compiler }}-${{ matrix.compiler-version }})" + runs-on: ubuntu-24.04 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + - name: Export GitHub Actions cache environment variables + uses: actions/github-script@v7 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1 + with: + key: "${{ github.job }}-${{ matrix.compiler }}-${{ matrix.compiler-version }}" + max-size: "2G" + - name: Run vcpkg + uses: lukka/run-vcpkg@v11 + - name: Install dependencies + run: | + sudo apt update + sudo apt install -y ninja-build ${{ matrix.additional-dep }} + - name: Compile + run: | + if [[ "${{ matrix.compiler }}" == "llvm" ]]; then + export CC=clang-${{ matrix.compiler-version }} + export CXX=clang++-${{ matrix.compiler-version }} + elif [[ "${{ matrix.compiler }}" == "gcc" ]]; then + export CC=gcc-${{ matrix.compiler-version }} + export CXX=g++-${{ matrix.compiler-version }} + fi + sudo ln -s $(which ccache) /usr/local/bin/$CC + sudo ln -s $(which ccache) /usr/local/bin/$CXX + $CXX --version + cmake -S . -B build -G Ninja -DCMAKE_CXX_STANDARD=20 -DSQLGEN_BUILD_TESTS=ON -DSQLGEN_POSTGRES=OFF + cmake --build build + - name: Run tests + run: | + ctest --test-dir build --output-on-failure