Using CHECK with bitfield fails to compile #786 #1267
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
paths-ignore: | |
- 'doc/**' | |
- 'scripts/**' | |
- 'LICENSE.txt' | |
- 'README.md' | |
pull_request: | |
paths-ignore: | |
- 'doc/**' | |
- 'scripts/**' | |
- 'LICENSE.txt' | |
- 'README.md' | |
env: | |
CTEST_OUTPUT_ON_FAILURE: ON | |
CTEST_PARALLEL_LEVEL: 2 | |
jobs: | |
coverage: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install | |
run: sudo apt-get install -y ninja-build lcov | |
- name: Generate | |
run: cmake -B build -S . -G Ninja -D CMAKE_CXX_FLAGS="-fprofile-arcs -ftest-coverage" | |
- name: Build | |
run: cmake --build build | |
- name: Test | |
run: ctest --test-dir build --no-tests=error | |
- name: LCOV | |
run: | | |
mkdir coverage | |
lcov -c -d build/ -o coverage/lcov.info --include "*doctest/parts*" | |
- name: Codecov | |
uses: codecov/codecov-action@v2 | |
with: | |
files: ./coverage/lcov.info | |
fail_ci_if_error: true | |
clang-tidy: | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install | |
run: sudo apt-get install -y ninja-build clang-tidy-14 | |
- name: Generate | |
run: cmake -B build -S . -G Ninja -D CMAKE_CXX_COMPILER=clang++ -D CMAKE_EXPORT_COMPILE_COMMANDS=ON -D CMAKE_CXX_CLANG_TIDY="clang-tidy-14;-warnings-as-errors=*" | |
- name: Build | |
run: cmake --build build | |
sanitizers: | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
sanitizers: ["address", "thread", "undefined", "integer", "implicit-conversion", "nullability", "safe-stack"] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install | |
run: sudo apt-get install -y ninja-build | |
- name: Generate | |
run: cmake -B build -S . -G Ninja -D CMAKE_CXX_COMPILER=clang++ -D CMAKE_EXPORT_COMPILE_COMMANDS=ON -D CMAKE_CXX_FLAGS="-fsanitize=${{ matrix.sanitizers }}" | |
- name: Build | |
run: cmake --build build | |
- name: Test | |
run: ctest --test-dir build --no-tests=error | |
ci: | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
runs-on: ${{ matrix.os }} | |
env: | |
CMAKE_GENERATOR: Ninja | |
ASAN_OPTIONS: strict_string_checks=true:detect_odr_violation=2:detect_stack_use_after_return=true:check_initialization_order=true:strict_init_order=true | |
TSAN_OPTIONS: force_seq_cst_atomics=1 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ["windows-2019", "windows-2022"] | |
compiler: ["cl", "clang", "clang-cl"] | |
include: | |
- os: ubuntu-18.04 | |
compiler: gcc | |
version: "4.8" | |
- os: ubuntu-18.04 | |
compiler: gcc | |
version: "4.9" | |
- os: ubuntu-18.04 | |
compiler: gcc | |
version: "5" | |
- os: ubuntu-18.04 | |
compiler: gcc | |
version: "6" | |
- os: ubuntu-18.04 | |
compiler: gcc | |
version: "7" | |
- os: ubuntu-18.04 | |
compiler: gcc | |
version: "8" | |
- os: ubuntu-latest | |
compiler: gcc | |
version: "9" | |
- os: ubuntu-latest | |
compiler: gcc | |
version: "10" | |
- os: ubuntu-latest | |
compiler: gcc | |
version: "11" | |
- os: ubuntu-latest | |
compiler: gcc | |
version: "12" | |
- os: ubuntu-18.04 | |
compiler: clang | |
version: "3.5" | |
- os: ubuntu-18.04 | |
compiler: clang | |
version: "3.6" | |
- os: ubuntu-18.04 | |
compiler: clang | |
version: "3.7" | |
- os: ubuntu-18.04 | |
compiler: clang | |
version: "3.8" | |
- os: ubuntu-18.04 | |
compiler: clang | |
version: "3.9" | |
- os: ubuntu-18.04 | |
compiler: clang | |
version: "4.0" | |
- os: ubuntu-18.04 | |
compiler: clang | |
version: "5.0" | |
- os: ubuntu-18.04 | |
compiler: clang | |
version: "6.0" | |
- os: ubuntu-18.04 | |
compiler: clang | |
version: "7" | |
- os: ubuntu-18.04 | |
compiler: clang | |
version: "8" | |
- os: ubuntu-20.04 | |
compiler: clang | |
version: "9" | |
- os: ubuntu-20.04 | |
compiler: clang | |
version: "10" | |
- os: ubuntu-20.04 | |
compiler: clang | |
version: "11" | |
- os: ubuntu-20.04 | |
compiler: clang | |
version: "12" | |
- os: ubuntu-latest | |
compiler: clang | |
version: "13" | |
- os: ubuntu-latest | |
compiler: clang | |
version: "14" | |
- os: ubuntu-latest | |
compiler: clang | |
version: "15" | |
- os: macOS-10.15 | |
compiler: xcode | |
version: "10.3" | |
- os: macOS-latest | |
compiler: xcode | |
version: "13.2.1" | |
- os: macos-12 | |
compiler: xcode | |
version: "14.0.1" | |
- os: macOS-latest | |
compiler: gcc | |
version: "11" | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install (Linux) | |
if: runner.os == 'Linux' | |
run: | | |
# Required for libc6-dbg:i386 and g++-multilib packages which are | |
# needed for x86 builds. | |
sudo dpkg --add-architecture i386 | |
sudo apt-get update | |
# libc6-dbg:i386 is required for running valgrind on x86. | |
sudo apt-get install -y ninja-build valgrind libc6-dbg:i386 wget gpg ca-certificates | |
# clang-3.7 and earlier are not available in Bionic anymore so we get | |
# them from the Xenial repositories instead. | |
sudo gpg --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 | |
sudo gpg --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32 | |
#sudo sh -c 'wget -q -O - "https://keyserver.ubuntu.com/pks/lookup?search=0x40976EAF437D05B5&fingerprint=on&op=get" | gpg -q --dearmor - | tee "/usr/share/keyrings/dk.gpg" > /dev/null' | |
sudo add-apt-repository "deb http://dk.archive.ubuntu.com/ubuntu/ xenial main" | |
sudo add-apt-repository "deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe" | |
# clang->=13 is not currently available by default | |
# causing compiler conflict for clang-14 as the below pulls from focal for 22.04 (ubuntu-latest) | |
#if [ "${{ matrix.compiler }}" = "clang" -a ${{ matrix.version }} -ge 13 ]; then | |
#wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - | |
#sudo add-apt-repository "deb https://apt.llvm.org/focal/ llvm-toolchain-focal-${{ matrix.version }} main" | |
#fi | |
if [ "${{ matrix.compiler }}" = "gcc" ]; then | |
sudo apt-get install -y g++-${{ matrix.version }} g++-${{ matrix.version }}-multilib | |
else | |
sudo apt-get install -y clang-${{ matrix.version }} libclang-${{ matrix.version }}-dev llvm-${{ matrix.version }}-dev g++-multilib | |
fi | |
- name: Install (macOS) | |
if: runner.os == 'macOS' | |
run: | | |
brew install ninja | |
if [ "${{ matrix.compiler }}" = "xcode" ]; then | |
sudo xcode-select -switch /Applications/Xcode_${{ matrix.version }}.app | |
fi | |
- name: Configure x64 | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Build & Test x64 | |
run: python3 .github/workflows/build_and_test.py ${{ runner.os }} x64 ${{ matrix.compiler }} ${{ matrix.version }} | |
- name: Configure x86 | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: x86 | |
# MacOS doesn't support x86 from Xcode 10 onwards. | |
- name: Build & Test x86 | |
if: runner.os == 'Linux' || runner.os == 'Windows' && matrix.compiler != 'clang-cl' | |
run: python3 .github/workflows/build_and_test.py ${{ runner.os }} x86 ${{ matrix.compiler }} ${{ matrix.version }} | |
ci-min-gw: | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
configuration: ["Debug", "Release"] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up MinGW | |
uses: egor-tensin/setup-mingw@v2 | |
- name: Generate | |
run: cmake -B build -S . -G "MinGW Makefiles" -D CMAKE_BUILD_TYPE=${{ matrix.configuration }} | |
- name: Build | |
run: cmake --build build | |
- name: Test | |
run: ctest --test-dir build --no-tests=error | |
ci-msvs: | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
runs-on: ${{ matrix.toolset == 'v143' && 'windows-2022' || 'windows-2019' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
toolset: ["v140", "v141", "v142", "v143", "ClangCl"] | |
architecture: ["Win32", "x64"] | |
configuration: ["Debug", "Release"] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Generate | |
run: cmake -B build -S . -G "${{ matrix.toolset == 'v143' && 'Visual Studio 17 2022' || 'Visual Studio 16 2019' }}" \ | |
-A ${{ matrix.architecture }} -T ${{ matrix.toolset }} | |
- name: Build | |
run: cmake --build build --config ${{ matrix.configuration }} | |
- name: Test | |
run: ctest -C ${{ matrix.configuration }} --test-dir build --no-tests=error | |
ci-icpc: | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
configuration: ["Debug", "Release"] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install | |
run: | | |
#wget -O - https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | sudo apt-key add - | |
#sudo add-apt-repository "deb [signed-by=/etc/apt/keyrings/icpc.gpg] https://apt.repos.intel.com/oneapi all main" | |
# apt-key is deprecated replace with below lines | |
wget -O - https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | sudo gpg --dearmor |sudo tee /etc/apt/keyrings/icpc.gpg > /dev/null | |
echo "deb [signed-by=/etc/apt/keyrings/icpc.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/icpc.list | |
sudo apt-get update | |
sudo apt-get install -y intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic ninja-build | |
- name: Generate | |
run: | | |
. /opt/intel/oneapi/setvars.sh | |
cmake -B build -S . -G Ninja -D CMAKE_CXX_COMPILER=icc -D CMAKE_C_COMPILER=icc -D CMAKE_CXX_COMPILER=icpc -D CMAKE_BUILD_TYPE=${{ matrix.configuration }} -D CMAKE_CXX_FLAGS="-w2 -Wcheck -Werror -diag-disable=10441 -D DOCTEST_CONFIG_NO_CONTRADICTING_INLINE" | |
- name: Build | |
run: | | |
. /opt/intel/oneapi/setvars.sh | |
cmake --build build --config ${{ matrix.configuration }} | |
- name: Test | |
run: | | |
. /opt/intel/oneapi/setvars.sh | |
ctest -C ${{ matrix.configuration }} --test-dir build --no-tests=error | |