Apply the Beman Standard; more tree refactoring #17
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: [ main ] | |
pull_request: | |
branches: [ main ] | |
jobs: | |
build: | |
name: ${{ matrix.config.name }} | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: "Ubuntu Clang 17", | |
os: ubuntu-24.04, | |
toolchain: "clang-17-toolchain.cmake", | |
clang_version: 17, | |
installed_clang_version: 14, | |
cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" " | |
} | |
- { | |
name: "Ubuntu Clang 18", | |
os: ubuntu-24.04, | |
toolchain: "clang-18-toolchain.cmake", | |
clang_version: 18, | |
installed_clang_version: 14, | |
cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" " | |
} | |
- { | |
name: "Ubuntu Clang 19", | |
os: ubuntu-24.04, | |
toolchain: "clang-19-toolchain.cmake", | |
clang_version: 19, | |
installed_clang_version: 14, | |
cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" " | |
} | |
- { | |
name: "Ubuntu GCC 13", | |
os: ubuntu-24.04, | |
toolchain: "gcc-13-toolchain.cmake", | |
clang_version: 17, | |
installed_clang_version: 14, | |
cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" " | |
} | |
- { | |
name: "Ubuntu GCC 14", | |
os: ubuntu-24.04, | |
toolchain: "gcc-14-toolchain.cmake", | |
clang_version: 17, | |
installed_clang_version: 14, | |
cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" " | |
} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: 'true' | |
- uses: seanmiddleditch/gha-setup-ninja@master | |
- name: Install LLVM+Clang | |
if: startsWith(matrix.config.os, 'ubuntu-') | |
run: | | |
cat /etc/lsb-release | |
sudo apt-get remove clang-${{matrix.config.installed_clang_version}} \ | |
lldb-${{matrix.config.installed_clang_version}} \ | |
lld-${{matrix.config.installed_clang_version}} \ | |
clangd-${{matrix.config.installed_clang_version}} \ | |
clang-tidy-${{matrix.config.installed_clang_version}} \ | |
clang-format-${{matrix.config.installed_clang_version}} \ | |
clang-tools-${{matrix.config.installed_clang_version}} \ | |
llvm-${{matrix.config.installed_clang_version}}-dev \ | |
lld-${{matrix.config.installed_clang_version}} \ | |
lldb-${{matrix.config.installed_clang_version}} \ | |
llvm-${{matrix.config.installed_clang_version}}-tools \ | |
libomp-${{matrix.config.installed_clang_version}}-dev \ | |
libc++-${{matrix.config.installed_clang_version}}-dev \ | |
libc++abi-${{matrix.config.installed_clang_version}}-dev \ | |
libclang-common-${{matrix.config.installed_clang_version}}-dev \ | |
libclang-${{matrix.config.installed_clang_version}}-dev \ | |
libclang-cpp${{matrix.config.installed_clang_version}}-dev \ | |
libunwind-${{matrix.config.installed_clang_version}}-dev | |
wget https://apt.llvm.org/llvm.sh | |
chmod +x llvm.sh | |
sudo ./llvm.sh ${{matrix.config.clang_version}} all | |
sudo apt-get install libc++-dev libc++1 libc++abi-dev libc++abi1 | |
- name: Install GCC 14 | |
if: matrix.config.name == 'Ubuntu GCC 14' | |
run: | | |
sudo apt update | |
sudo apt-get install g++-14 | |
- name: Configure | |
run: | | |
mkdir -p .build | |
cd .build | |
echo ${{ matrix.config.cmake_args }} | |
echo ${{ matrix.config.toolchain }} | |
cmake ${{ matrix.config.cmake_args }} -DCMAKE_TOOLCHAIN_FILE=etc/${{ matrix.config.toolchain }} -B . -S .. | |
- name: Build | |
run: | | |
cmake --build .build --config Asan --target all -- -k 0 | |
- name: Test | |
run: | | |
cd .build | |
ctest --output-on-failure |