Add compiler error reported in 991 by @vrqq #3091
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: Test | |
on: | |
push: | |
branches: | |
- '**' | |
jobs: | |
# Build and test many combinations on Linux/OS X using Conan | |
posix-conan-test: | |
strategy: | |
matrix: | |
name: [clang-11, osx-gcc-10, gcc-10, clang-11-sanitize, clang-5, gcc-5, gcc-7, armv7] | |
include: | |
# Clang-11 | |
- name: clang-11 | |
compiler: clang | |
version: "11" | |
os: linux | |
arch: x86_64 | |
build-type: Release | |
cc: clang | |
cxx: clang++ | |
exceptions: "True" | |
generator: "Ninja" | |
int128: "True" | |
linux-container: johnmcfarlane/cnl_ci:clang-11-libcpp | |
os-version: ubuntu-20.04 | |
sanitize: "False" | |
std: 17 | |
stdlib: libc++ | |
toolchain: clang-tidy-libc++.cmake | |
# OS X | |
- name: osx-gcc-10 | |
os: osx | |
compiler: gcc | |
version: "10" | |
arch: x86_64 | |
build-type: Release | |
cc: gcc-10 | |
cxx: g++-10 | |
exceptions: "True" | |
generator: "Ninja" | |
int128: "True" | |
os-version: macos-10.15 | |
sanitize: "False" | |
std: 20 | |
stdlib: libstdc++11 | |
toolchain: gcc.cmake | |
# GCC-10 | |
- name: gcc-10 | |
compiler: gcc | |
version: "10" | |
os: linux | |
arch: x86_64 | |
build-type: Release | |
cc: gcc-10 | |
cxx: g++-10 | |
exceptions: "True" | |
generator: "Ninja" | |
int128: "True" | |
linux-container: johnmcfarlane/cnl_ci:gcc-10 | |
os-version: ubuntu-20.04 | |
sanitize: "False" | |
std: 20 | |
stdlib: libstdc++11 | |
toolchain: gcc.cmake | |
# Sanitizers | |
- name: clang-11-sanitize | |
compiler: clang | |
version: "11" | |
os: linux | |
arch: x86_64 | |
build-type: Release | |
cc: clang | |
cxx: clang++ | |
exceptions: "True" | |
generator: "Ninja" | |
int128: "True" | |
linux-container: johnmcfarlane/cnl_ci:clang-11-libcpp | |
os-version: ubuntu-20.04 | |
sanitize: "True" | |
std: 17 | |
stdlib: libc++ | |
toolchain: clang-libc++.cmake | |
# Clang-5 | |
- name: clang-5 | |
compiler: clang | |
version: "5.0" | |
os: linux | |
arch: x86_64 | |
build-type: Release | |
cc: clang | |
cxx: clang++ | |
exceptions: "True" | |
generator: "Ninja" | |
int128: "True" | |
linux-container: johnmcfarlane/cnl_ci:clang-5-libstdcpp | |
os-version: ubuntu-20.04 | |
sanitize: "False" | |
std: 11 | |
stdlib: libstdc++11 | |
toolchain: clang.cmake | |
# GCC-5 | |
- name: gcc-5 | |
compiler: gcc | |
version: "5" | |
os: linux | |
arch: x86_64 | |
build-type: Release | |
cc: gcc-5 | |
cxx: g++-5 | |
exceptions: "True" | |
generator: "Ninja" | |
int128: "True" | |
linux-container: johnmcfarlane/cnl_ci:gcc-5 | |
os-version: ubuntu-20.04 | |
sanitize: "False" | |
std: 11 | |
stdlib: libstdc++11 | |
toolchain: gcc.cmake | |
# Contrary | |
- name: gcc-7 | |
cxx: g++-7 | |
cc: gcc-7 | |
version: "7" | |
exceptions: "False" | |
int128: "False" | |
os: linux | |
arch: x86_64 | |
build-type: Debug | |
compiler: gcc | |
generator: "Unix Makefiles" | |
linux-container: johnmcfarlane/cnl_ci:gcc-7 | |
os-version: ubuntu-18.04 | |
sanitize: "False" | |
std: 14 | |
stdlib: libstdc++11 | |
toolchain: gcc.cmake | |
# ARMv7 | |
- name: armv7 | |
arch: armv7 | |
compiler: gcc | |
version: "10" | |
os: linux | |
build-type: Release | |
cc: arm-linux-gnueabi-gcc-10 | |
cxx: arm-linux-gnueabi-g++-10 | |
exceptions: "True" | |
generator: "Ninja" | |
int128: "False" | |
linux-container: johnmcfarlane/cnl_ci:gcc-10-arm | |
os-version: ubuntu-20.04 | |
sanitize: "False" | |
std: 20 | |
stdlib: libstdc++11 | |
toolchain: gcc-armv7.cmake | |
container: ${{matrix.linux-container}} | |
env: | |
CC: ${{matrix.cc}} | |
CXX: ${{matrix.cxx}} | |
runs-on: ${{matrix.os-version}} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install Brew packages | |
if: ( matrix.os == 'osx' ) | |
run: brew install conan gcc@10 ninja | |
- name: Initialise Conan | |
run: | | |
conan profile new default --detect && \ | |
conan profile update settings.compiler=${{matrix.compiler}} default && \ | |
conan profile update settings.compiler.cppstd=${{matrix.std}} default && \ | |
conan profile update settings.compiler.libcxx=${{matrix.stdlib}} default && \ | |
conan profile update settings.compiler.version=${{matrix.version}} default && \ | |
conan profile update settings.arch=${{matrix.arch}} default | |
- name: Install dependencies | |
run: | | |
conan install \ | |
--build=missing \ | |
--env CONAN_CMAKE_GENERATOR="${{matrix.generator}}" \ | |
--env CONAN_CMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/test/cmake/toolchain/${{matrix.toolchain}} \ | |
--options int128=${{matrix.int128}} \ | |
--options enable_exceptions=${{matrix.exceptions}} \ | |
--options sanitize=${{matrix.sanitize}} \ | |
--options target=test-all \ | |
$GITHUB_WORKSPACE | |
- name: Build tests | |
run: conan build --build --configure $GITHUB_WORKSPACE | |
- name: Test library | |
if: ( matrix.arch != 'armv7' ) | |
run: conan build --test $GITHUB_WORKSPACE | |
- name: Run benchmarks | |
if: (matrix.name=='clang-11' || matrix.name=='gcc-10') | |
run: | | |
./test/benchmark/test-benchmark --benchmark_format=csv | tee result.csv \ | |
"${GITHUB_WORKSPACE}"/test/benchmark/report.py result.csv | |
# Build and test on Windows using Conan | |
windows-conan-test: | |
runs-on: windows-2019 | |
strategy: | |
matrix: | |
arch: [x86_64, x86] | |
include: | |
- arch: x86_64 | |
cmake_arch: x64 | |
exceptions: "True" | |
msbuild_property: x64 | |
- arch: x86 | |
cmake_arch: Win32 | |
exceptions: "False" | |
msbuild_property: win32 | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Initialise Conan | |
run: | | |
pip.exe install conan; | |
conan profile new default; | |
conan profile update settings.compiler="Visual Studio" default; | |
conan profile update settings.os=Windows default; | |
conan profile update settings.arch=${{matrix.arch}} default; | |
conan profile update settings.compiler.version=16 default | |
- name: Create build directory | |
run: mkdir ${{runner.workspace}}\build | |
- name: Install dependencies | |
working-directory: ${{runner.workspace}}/build | |
run: | | |
conan install ` | |
--build=missing ` | |
--env CONAN_CMAKE_GENERATOR="Visual Studio 16 2019" ` | |
--env CONAN_CMAKE_TOOLCHAIN_FILE="$env:GITHUB_WORKSPACE"\test\cmake\toolchain\msvc.cmake ` | |
--options enable_exceptions=${{matrix.exceptions}} ` | |
--options target=test-all ` | |
--settings build_type=Release ` | |
$env:GITHUB_WORKSPACE | |
- name: Build and run tests | |
working-directory: ${{runner.workspace}}/build | |
run: conan build --build --configure --test $env:GITHUB_WORKSPACE | |
- name: Run benchmarks | |
working-directory: ${{runner.workspace}}/build | |
run: test\benchmark\Release\test-benchmark.exe | |
# Build and test latest on Linux using only CMake | |
linux-cmake-test: | |
strategy: | |
matrix: | |
compiler: [clang-head, gcc-head] | |
include: | |
- compiler: clang-head | |
toolchain: clang.cmake | |
container: johnmcfarlane/cnl_ci:clang-head-libstdcpp | |
- compiler: gcc-head | |
toolchain: gcc.cmake | |
container: johnmcfarlane/cnl_ci:gcc-head | |
container: ${{matrix.container}} | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Build and Install GTest | |
run: | | |
git clone https://github.com/google/googletest.git && \ | |
cd googletest && \ | |
git checkout 3c95bf552405fd0cc63cea0ca2f6c4cd89c8d356 && \ | |
cmake \ | |
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=$GITHUB_WORKSPACE/test/cmake/toolchain/${{matrix.toolchain}} \ | |
. && \ | |
cmake --build . --target install | |
- name: Configure CNL | |
run: | | |
cmake \ | |
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=$GITHUB_WORKSPACE/test/cmake/toolchain/${{matrix.toolchain}} \ | |
$GITHUB_WORKSPACE | |
- name: Build CNL | |
run: cmake --build $GITHUB_WORKSPACE --target test-all | |
- name: Test CNL | |
run: ctest --output-on-failure | |
# Install on mature Linux distro using only CMake | |
linux-cmake-install: | |
runs-on: ubuntu-18.04 | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Configure CNL | |
run: cmake $GITHUB_WORKSPACE | |
- name: Install CNL | |
run: sudo cmake --build $GITHUB_WORKSPACE --target install | |
# Test shell scripts | |
shellcheck: | |
runs-on: ubuntu-20.04 | |
container: johnmcfarlane/cnl_ci:base-20.04 | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Run All Tests | |
shell: bash | |
run: $GITHUB_WORKSPACE/test/scripts/shellcheck | |
# Test documentation generation | |
doxygen: | |
runs-on: ubuntu-18.04 | |
container: johnmcfarlane/cnl_ci:gcc-10 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Generate documentation | |
shell: bash | |
run: $GITHUB_WORKSPACE/doc/generate | |
- name: Upload documentation | |
uses: actions/upload-artifact@v2 | |
with: | |
name: documentation | |
path: ${{github.workspace}}/htdocs |