diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 77ff8e272..d1f8e3bd9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,60 +33,41 @@ jobs: strategy: fail-fast: false matrix: - cmake_opts: - - '-DBUILD_SHARED_LIBS=YES' - - '' - compiler: - - c: 'clang' - cpp: 'clang++' - cflags: '-gdwarf-4' - - c: 'gcc' - cpp: 'g++' - env: - CMAKE_OPTIONS: ${{ matrix.cmake_opts }} - CC: ${{ matrix.compiler.c }} - CXX: ${{ matrix.compiler.cpp }} - CFLAGS: ${{ matrix.compiler.cflags }} - CXXFLAGS: ${{ matrix.compiler.cflags }} - - steps: - - uses: actions/checkout@v4 - - name: Install valgrind - run: | - sudo apt update - sudo apt install -y valgrind - - name: Build and test - run: | - cmake $CMAKE_OPTIONS -DCMAKE_BUILD_TYPE=Debug -S . -B build - cmake --build build - ctest --test-dir build --output-on-failure - make leakcheck - - sanitizers: - - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: + shared: [YES, NO] + cc: [clang, gcc] include: - - cmake_opts: '-DBUILD_SHARED_LIBS=NO' - - cmake_opts: '-DBUILD_SHARED_LIBS=YES' - cflags: '-shared-libasan' + - cc: 'clang' + cxx: 'clang++' + cflags: '-gdwarf-4' + - cc: 'gcc' + cxx: 'g++' + - shared: 'YES' + asan_opts: 'detect_leaks=0' + - shared: 'YES' + cc: 'gcc' + test_env: 'LD_PRELOAD=$(gcc -print-file-name=libasan.so)' + - shared: 'YES' + cc: 'clang' + asan_cflags: '-shared-libasan' test_env: 'LD_PRELOAD=$(clang -print-file-name=libclang_rt.asan-x86_64.so)' - asan_options: 'detect_leaks=0' + - shared: 'NO' + cc: 'gcc' + asan_cflags: '-static-libasan' env: - CMAKE_OPTIONS: ${{ matrix.cmake_opts }} - CC: 'clang' - CXX: 'clang++' - CFLAGS: '-fsanitize=address,undefined -fno-sanitize-recover=all ${{ matrix.cflags }}' - CXXFLAGS: '-fsanitize=address,undefined -fno-sanitize-recover=all ${{ matrix.cflags }}' - ASAN_OPTIONS: ${{ matrix.asan_options }} + ASAN_OPTIONS: ${{ matrix.asan_opts }} + CC: ${{ matrix.cc }} + CXX: ${{ matrix.cxx }} + CFLAGS: '${{ matrix.cflags }} -fsanitize=address,undefined -fno-sanitize-recover=all ${{ matrix.asan_cflags }}' steps: - uses: actions/checkout@v4 - name: Build and test run: | - cmake $CMAKE_OPTIONS -DCMAKE_BUILD_TYPE=Debug -S . -B build + export CXXFLAGS="$CFLAGS" + cmake \ + -DBUILD_SHARED_LIBS=${{ matrix.shared }} \ + -DCMAKE_BUILD_TYPE=Debug \ + -S . -B build cmake --build build # https://github.com/actions/runner-images/issues/9491 sudo sysctl vm.mmap_rnd_bits=28