Skip to content

Merge pull request #683 from laurynas-biveinis/cmake-warnings #1845

Merge pull request #683 from laurynas-biveinis/cmake-warnings

Merge pull request #683 from laurynas-biveinis/cmake-warnings #1845

Workflow file for this run

---
name: build-with-old-compilers
on:
push:
branches:
- master
pull_request:
env:
DEFAULT_SANITIZE_ADDRESS: OFF
DEFAULT_SANITIZE_THREAD: OFF
DEFAULT_SANITIZE_UB: OFF
DEFAULT_SPINLOCK_LOOP: PAUSE
DEFAULT_STATS: ON
permissions: { }
jobs:
build:
runs-on: ubuntu-22.04
env:
BOOST: ${{matrix.BOOST}}
BUILD_TYPE: ${{matrix.BUILD_TYPE}}
COMPILER: ${{matrix.COMPILER}}
VERSION: ${{matrix.VERSION}}
SANITIZE_ADDRESS: ${{matrix.SANITIZE_ADDRESS}}
SANITIZE_THREAD: ${{matrix.SANITIZE_THREAD}}
SANITIZE_UB: ${{matrix.SANITIZE_UB}}
SPINLOCK_LOOP: ${{matrix.SPINLOCK_LOOP}}
STATS: ${{matrix.STATS}}
strategy:
fail-fast: false
matrix:
include:
- name: clang 13 Release
BUILD_TYPE: Release
COMPILER: clang
VERSION: 13
SPINLOCK_LOOP: EMPTY
- name: clang 13 Release with ASan
BUILD_TYPE: Release
SANITIZE_ADDRESS: ON
COMPILER: clang
VERSION: 13
SPINLOCK_LOOP: EMPTY
- name: clang 13 Release with TSan
BUILD_TYPE: Release
SANITIZE_THREAD: ON
COMPILER: clang
VERSION: 13
SPINLOCK_LOOP: EMPTY
- name: clang 13 Release with UBSan
BUILD_TYPE: Release
SANITIZE_UB: ON
COMPILER: clang
VERSION: 13
SPINLOCK_LOOP: EMPTY
- name: clang 13 Debug
BUILD_TYPE: Debug
COMPILER: clang
VERSION: 13
SPINLOCK_LOOP: EMPTY
- name: clang 13 Debug with ASan
BUILD_TYPE: Debug
SANITIZE_ADDRESS: ON
COMPILER: clang
VERSION: 13
SPINLOCK_LOOP: EMPTY
- name: clang 13 Debug with TSan
BUILD_TYPE: Debug
SANITIZE_THREAD: ON
COMPILER: clang
VERSION: 13
SPINLOCK_LOOP: EMPTY
- name: clang 13 Debug with UBSan
BUILD_TYPE: Debug
SANITIZE_UB: ON
COMPILER: clang
VERSION: 13
SPINLOCK_LOOP: EMPTY
- name: clang 14 Release
BUILD_TYPE: Release
COMPILER: clang
VERSION: 14
STATS: OFF
- name: clang 14 Release with ASan
BUILD_TYPE: Release
SANITIZE_ADDRESS: ON
COMPILER: clang
VERSION: 14
STATS: OFF
BOOST: OFF
- name: clang 14 Release with TSan
BUILD_TYPE: Release
SANITIZE_THREAD: ON
COMPILER: clang
VERSION: 14
STATS: OFF
- name: clang 14 Release with UBSan
BUILD_TYPE: Release
SANITIZE_UB: ON
COMPILER: clang
VERSION: 14
STATS: OFF
BOOST: OFF
- name: clang 14 Debug
BUILD_TYPE: Debug
COMPILER: clang
VERSION: 14
STATS: OFF
- name: clang 14 Debug with ASan
BUILD_TYPE: Debug
SANITIZE_ADDRESS: ON
COMPILER: clang
VERSION: 14
STATS: OFF
BOOST: OFF
- name: clang 14 Debug with TSan
BUILD_TYPE: Debug
SANITIZE_THREAD: ON
COMPILER: clang
VERSION: 14
STATS: OFF
- name: clang 14 Debug with UBSan
BUILD_TYPE: Debug
SANITIZE_UB: ON
COMPILER: clang
VERSION: 14
STATS: OFF
BOOST: OFF
- name: clang 15 Release
BUILD_TYPE: Release
COMPILER: clang
VERSION: 15
- name: clang 15 Release with ASan
BUILD_TYPE: Release
SANITIZE_ADDRESS: ON
COMPILER: clang
VERSION: 15
- name: clang 15 Release with TSan
BUILD_TYPE: Release
SANITIZE_THREAD: ON
COMPILER: clang
VERSION: 15
- name: clang 15 Release with UBSan
BUILD_TYPE: Release
SANITIZE_UB: ON
COMPILER: clang
VERSION: 15
- name: clang 15 Debug
BUILD_TYPE: Debug
COMPILER: clang
VERSION: 15
- name: clang 15 Debug with ASan
BUILD_TYPE: Debug
SANITIZE_ADDRESS: ON
COMPILER: clang
VERSION: 15
- name: clang 15 Debug with TSan
BUILD_TYPE: Debug
SANITIZE_THREAD: ON
COMPILER: clang
VERSION: 15
- name: clang 15 Debug with UBSan
BUILD_TYPE: Debug
SANITIZE_UB: ON
COMPILER: clang
VERSION: 15
- name: clang 16 Release
BUILD_TYPE: Release
COMPILER: clang
VERSION: 16
- name: clang 16 Release with ASan
BUILD_TYPE: Release
SANITIZE_ADDRESS: ON
COMPILER: clang
VERSION: 16
- name: clang 16 Release with TSan
BUILD_TYPE: Release
SANITIZE_THREAD: ON
COMPILER: clang
VERSION: 16
- name: clang 16 Release with UBSan
BUILD_TYPE: Release
SANITIZE_UB: ON
COMPILER: clang
VERSION: 16
- name: clang 16 Debug
BUILD_TYPE: Debug
COMPILER: clang
VERSION: 16
- name: clang 16 Debug with ASan
BUILD_TYPE: Debug
SANITIZE_ADDRESS: ON
COMPILER: clang
VERSION: 16
- name: clang 16 Debug with TSan
BUILD_TYPE: Debug
SANITIZE_THREAD: ON
COMPILER: clang
VERSION: 16
- name: clang 16 Debug with UBSan
BUILD_TYPE: Debug
SANITIZE_UB: ON
COMPILER: clang
VERSION: 16
- name: clang 17 Release
BUILD_TYPE: Release
COMPILER: clang
VERSION: 17
- name: clang 17 Release with ASan
BUILD_TYPE: Release
SANITIZE_ADDRESS: ON
COMPILER: clang
VERSION: 17
- name: clang 17 Release with TSan
BUILD_TYPE: Release
SANITIZE_THREAD: ON
COMPILER: clang
VERSION: 17
- name: clang 17 Release with UBSan
BUILD_TYPE: Release
SANITIZE_UB: ON
COMPILER: clang
VERSION: 17
- name: clang 17 Debug
BUILD_TYPE: Debug
COMPILER: clang
VERSION: 17
- name: clang 17 Debug with ASan
BUILD_TYPE: Debug
SANITIZE_ADDRESS: ON
COMPILER: clang
VERSION: 17
- name: clang 17 Debug with TSan
BUILD_TYPE: Debug
SANITIZE_THREAD: ON
COMPILER: clang
VERSION: 17
- name: clang 17 Debug with UBSan
BUILD_TYPE: Debug
SANITIZE_UB: ON
COMPILER: clang
VERSION: 17
- name: clang 18 Release
BUILD_TYPE: Release
COMPILER: clang
VERSION: 18
- name: clang 18 Release with ASan
BUILD_TYPE: Release
SANITIZE_ADDRESS: ON
COMPILER: clang
VERSION: 18
- name: clang 18 Release with TSan
BUILD_TYPE: Release
SANITIZE_THREAD: ON
COMPILER: clang
VERSION: 18
- name: clang 18 Release with UBSan
BUILD_TYPE: Release
SANITIZE_UB: ON
COMPILER: clang
VERSION: 18
- name: clang 18 Debug
BUILD_TYPE: Debug
COMPILER: clang
VERSION: 18
- name: clang 18 Debug with ASan
BUILD_TYPE: Debug
SANITIZE_ADDRESS: ON
COMPILER: clang
VERSION: 18
- name: clang 18 Debug with TSan
BUILD_TYPE: Debug
SANITIZE_THREAD: ON
COMPILER: clang
VERSION: 18
- name: clang 18 Debug with UBSan
BUILD_TYPE: Debug
SANITIZE_UB: ON
COMPILER: clang
VERSION: 18
- name: GCC 11 Release
BUILD_TYPE: Release
COMPILER: gcc
VERSION: 11
SPINLOCK_LOOP: EMPTY
- name: GCC 11 Release with ASan
BUILD_TYPE: Release
SANITIZE_ADDRESS: ON
COMPILER: gcc
VERSION: 11
SPINLOCK_LOOP: EMPTY
- name: GCC 11 Release with TSan
BUILD_TYPE: Release
SANITIZE_THREAD: ON
COMPILER: gcc
VERSION: 11
SPINLOCK_LOOP: EMPTY
- name: GCC 11 Release with UBSan
BUILD_TYPE: Release
SANITIZE_UB: ON
COMPILER: gcc
VERSION: 11
SPINLOCK_LOOP: EMPTY
- name: GCC 11 Debug
BUILD_TYPE: Debug
COMPILER: gcc
VERSION: 11
SPINLOCK_LOOP: EMPTY
- name: GCC 11 Debug with ASan
BUILD_TYPE: Debug
SANITIZE_ADDRESS: ON
COMPILER: gcc
VERSION: 11
SPINLOCK_LOOP: EMPTY
- name: GCC 11 Debug with TSan
BUILD_TYPE: Debug
SANITIZE_THREAD: ON
COMPILER: gcc
VERSION: 11
SPINLOCK_LOOP: EMPTY
- name: GCC 11 Debug with UBSan
BUILD_TYPE: Debug
SANITIZE_UB: ON
COMPILER: gcc
VERSION: 11
SPINLOCK_LOOP: EMPTY
- name: GCC 12 Release
BUILD_TYPE: Release
COMPILER: gcc
VERSION: 12
STATS: OFF
BOOST: OFF
- name: GCC 12 Release with ASan
BUILD_TYPE: Release
SANITIZE_ADDRESS: ON
COMPILER: gcc
VERSION: 12
STATS: OFF
- name: GCC 12 Release with TSan
BUILD_TYPE: Release
SANITIZE_THREAD: ON
COMPILER: gcc
VERSION: 12
STATS: OFF
BOOST: OFF
- name: GCC 12 Release with UBSan
BUILD_TYPE: Release
SANITIZE_UB: ON
COMPILER: gcc
VERSION: 12
STATS: OFF
- name: GCC 12 Debug
BUILD_TYPE: Debug
COMPILER: gcc
VERSION: 12
STATS: OFF
BOOST: OFF
- name: GCC 12 Debug with ASan
BUILD_TYPE: Debug
SANITIZE_ADDRESS: ON
COMPILER: gcc
VERSION: 12
STATS: OFF
- name: GCC 12 Debug with TSan
BUILD_TYPE: Debug
SANITIZE_THREAD: ON
COMPILER: gcc
VERSION: 12
STATS: OFF
BOOST: OFF
- name: GCC 12 Debug with UBSan
BUILD_TYPE: Debug
SANITIZE_UB: ON
COMPILER: gcc
VERSION: 12
STATS: OFF
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup common dependencies
run: |
sudo apt-get update
sudo apt-get install -y libc6-dev-i386
- name: Setup optional Boost
run: sudo apt-get install -y libboost-dev
if: env.BOOST != 'OFF'
- name: Setup dependencies for LLVM 13 & 15+
run: |
curl 'https://apt.llvm.org/llvm-snapshot.gpg.key' \
| sudo apt-key add -
echo "deb http://apt.llvm.org/jammy/ \
llvm-toolchain-jammy-${VERSION} main" \
| sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get install -y "llvm-${VERSION}-linker-tools" \
"clang-${VERSION}" "clang-tidy-${VERSION}"
if: >
env.COMPILER == 'clang'
&& (env.VERSION == 13 || env.VERSION >= 15)
- name: Setup dependencies for GCC 12 (versioned package)
run: |
sudo apt-get install -y "gcc-${VERSION}"
if: env.COMPILER == 'gcc' && env.VERSION == '12'
- name: Setup dependencies for GCC 11 (default OS package)
run: |
sudo apt-get install -y gcc
if: env.COMPILER == 'gcc' && env.VERSION == '11'
- name: Create build environment
run: mkdir ${{github.workspace}}/build
- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment
# variable access regardless of the host operating system
shell: bash
working-directory: ${{github.workspace}}/build
run: |
SANITIZE_ADDRESS="${SANITIZE_ADDRESS:-$DEFAULT_SANITIZE_ADDRESS}"
SANITIZE_THREAD="${SANITIZE_THREAD:-$DEFAULT_SANITIZE_THREAD}"
SANITIZE_UB="${SANITIZE_UB:-$DEFAULT_SANITIZE_UB}"
SPINLOCK_LOOP="${SPINLOCK_LOOP:-$DEFAULT_SPINLOCK_LOOP}"
STATS="${STATS:-$DEFAULT_STATS}"
export PATH=$HOME/.local/bin:$PATH
if [[ $COMPILER == "gcc" ]]; then
export CC="gcc-${VERSION}"
export CXX="g++-${VERSION}"
EXTRA_CMAKE_ARGS=("-DMAINTAINER_MODE=ON")
else
export CC="clang-${VERSION}"
export CXX="clang++-${VERSION}"
EXTRA_CMAKE_ARGS=("-DCLANG_TIDY_EXE=/usr/bin/clang-tidy-${VERSION}")
if [[ $BUILD_TYPE == "Release" ]]; then
EXTRA_CMAKE_ARGS=("${EXTRA_CMAKE_ARGS[@]}" \
"-DLLVMAR_EXECUTABLE=/usr/bin/llvm-ar-${VERSION}" \
"-DLLVMNM_EXECUTABLE=/usr/bin/llvm-nm-${VERSION}" \
"-DLLVMRANLIB_EXECUTABLE=/usr/bin/llvm-ranlib-${VERSION}")
fi
if [[ $VERSION -ge 13 ]]; then
EXTRA_CMAKE_ARGS=("${EXTRA_CMAKE_ARGS[@]}" "-DMAINTAINER_MODE=ON")
fi
fi
cmake "$GITHUB_WORKSPACE" -DSTANDALONE=ON \
"-DCMAKE_BUILD_TYPE=$BUILD_TYPE" \
"-DSANITIZE_ADDRESS=${SANITIZE_ADDRESS}" \
"-DSANITIZE_THREAD=${SANITIZE_THREAD}" \
"-DSANITIZE_UB=${SANITIZE_UB}" \
"-DSPINLOCK_LOOP=${SPINLOCK_LOOP}" "-DSTATS=${STATS}" \
"${EXTRA_CMAKE_ARGS[@]}"
- name: Build
working-directory: ${{github.workspace}}/build
run: make -j3 -k
- name: Examples
working-directory: ${{github.workspace}}/build
run: make -k examples
- name: Correctness test
working-directory: ${{github.workspace}}/build
run: ctest -j3 -V
- name: Benchmark correctness test
working-directory: ${{github.workspace}}/build
run: make -k quick_benchmarks
- name: Valgrind test
working-directory: ${{github.workspace}}/build
run: |
sudo apt-get install -y libc6-dbg
sudo snap install --classic valgrind
make -k valgrind
if: >
env.SANITIZE_ADDRESS != 'ON' && env.SANITIZE_THREAD != 'ON'
&& env.SANITIZE_UB != 'ON'