diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index fdd84a2c..4e97d077 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -22,11 +22,12 @@ jobs: - { compiler: gcc, version: 9, build_type: Release, cppstd: 17 } - { compiler: gcc, version: 11, build_type: Debug, cppstd: 20 } - { compiler: gcc, version: 12, build_type: Release, cppstd: 20 } - - { compiler: clang, version: 12, build_type: Debug, cppstd: 17, asan: OFF } - - { compiler: clang, version: 15, build_type: Release, cppstd: 20, asan: OFF } + - { compiler: gcc, version: 12, build_type: Debug, cppstd: 20, asan: ON } + - { compiler: clang, version: 12, build_type: Debug, cppstd: 17 } + - { compiler: clang, version: 15, build_type: Release, cppstd: 20, tsan: ON } container: image: ${{ matrix.config.compiler == 'clang' && 'teeks99/clang-ubuntu' || matrix.config.compiler }}:${{ matrix.config.version }} - name: "${{ matrix.config.compiler}} ${{ matrix.config.version }} (C++${{ matrix.config.cppstd }}, ${{ matrix.config.build_type }})" + name: "${{ matrix.config.compiler}} ${{ matrix.config.version }} (C++${{ matrix.config.cppstd }} ${{ matrix.config.build_type }} ${{ matrix.config.asan == 'ON' && 'ASAN' || '' }}${{ matrix.config.tsan == 'ON' && 'TSAN' || '' }})" steps: - uses: actions/checkout@v4 - name: Setup @@ -40,10 +41,8 @@ jobs: - name: Setup Compiler if: matrix.config.compiler == 'clang' run: | - if [[ "${{ matrix.config.version }}" -ge 4 ]]; then - scripts/ci_setup_clang.sh "${{ matrix.config.version }}" - echo "CXXFLAGS=-stdlib=libc++" >> $GITHUB_ENV - fi + scripts/ci_setup_clang.sh "${{ matrix.config.version }}" + echo "CXXFLAGS=-stdlib=libc++" >> $GITHUB_ENV echo "CC=clang-${{ matrix.config.version }}" >> $GITHUB_ENV echo "CXX=clang++-${{ matrix.config.version }}" >> $GITHUB_ENV - name: Build @@ -58,7 +57,8 @@ jobs: -DSPDLOG_BUILD_BENCH=OFF \ -DSPDLOG_BUILD_TESTS=ON \ -DSPDLOG_BUILD_TESTS_HO=OFF \ - -DSPDLOG_SANITIZE_ADDRESS=${{ matrix.config.asan || 'ON' }} + -DSPDLOG_SANITIZE_ADDRESS=${{ matrix.config.asan || 'OFF' }} \ + -DSPDLOG_SANITIZE_THREAD=${{ matrix.config.tsan || 'OFF' }} make -j 4 ctest -j 4 --output-on-failure @@ -85,4 +85,3 @@ jobs: -DSPDLOG_SANITIZE_ADDRESS=OFF make -j 4 ctest -j 4 --output-on-failure - diff --git a/cmake/utils.cmake b/cmake/utils.cmake index 0e340bcc..8926657c 100644 --- a/cmake/utils.cmake +++ b/cmake/utils.cmake @@ -58,7 +58,7 @@ function(spdlog_enable_addr_sanitizer target_name) target_compile_options(${target_name} PRIVATE -fno-sanitize=signed-integer-overflow) target_compile_options(${target_name} PRIVATE -fno-sanitize-recover=all) target_compile_options(${target_name} PRIVATE -fno-omit-frame-pointer) - target_link_libraries(${target_name} PRIVATE -fsanitize=address,undefined -fuse-ld=gold) + target_link_libraries(${target_name} PRIVATE -fsanitize=address,undefined) endfunction() # Enable thread sanitizer (gcc/clang only) @@ -69,5 +69,5 @@ function(spdlog_enable_thread_sanitizer target_name) message(STATUS "Thread sanitizer enabled") target_compile_options(${target_name} PRIVATE -fsanitize=thread) target_compile_options(${target_name} PRIVATE -fno-omit-frame-pointer) - target_link_libraries(${target_name} PRIVATE -fsanitize=thread -fuse-ld=gold) + target_link_libraries(${target_name} PRIVATE -fsanitize=thread) endfunction()