1111env :
1212 DEBIAN_FRONTEND : noninteractive
1313 CMAKE_GENERATOR : Ninja
14+ DEFAULT_CXX_STANDARD : 20
15+ DEFAULT_LLVM_VERSION : 16
16+ DEFAULT_GCC_VERSION : 12
1417
1518concurrency :
1619 group : ${{ github.head_ref || github.run_id }}
3134 - compiler : clang
3235 cc : " clang"
3336 cxx : " clang++"
37+ cxx_flags : " -stdlib=libstdc++"
3438 - version : 16
3539 compiler : clang
3640 install : wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh 16
3943 compiler : clang
4044 stdlib : libc++
4145 install : wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh 16 && sudo apt install -y libc++-16-dev libc++abi-16-dev
46+ cxx_flags : " -stdlib=libc++"
4247 - version : 15
4348 compiler : clang
4449 install : sudo apt update && sudo apt install -y clang-15
4752 compiler : clang
4853 stdlib : libc++
4954 install : sudo apt update && sudo apt install -y clang-15 libc++-15-dev libc++abi-15-dev
55+ cxx_flags : " -stdlib=libc++"
5056 - version : 14
5157 compiler : clang
5258 install : sudo apt update && sudo apt install -y clang-14
@@ -55,18 +61,21 @@ jobs:
5561 compiler : clang
5662 stdlib : libc++
5763 install : sudo apt update && sudo apt install -y clang-14 libc++-14-dev libc++abi-14-dev
64+ cxx_flags : " -stdlib=libc++"
65+ - compiler : gcc
66+ toolchain_root : " /usr"
67+ cxx_flags : " "
5868 - version : 13
5969 compiler : gcc
6070 install : sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test && sudo apt update && sudo apt-get install -y gcc-13 g++-13
61- toolchain_root : " /usr"
6271 cc : " gcc-13"
6372 cxx : " g++-13"
6473 - version : 12
6574 compiler : gcc
6675 install : sudo apt update && sudo apt install -y gcc-12
67- toolchain_root : " /usr"
6876 cc : " gcc-12"
6977 cxx : " g++-12"
78+ cxx_flags : " "
7079 exclude :
7180 - compiler : gcc
7281 version : 16
8291 stdlib : libc++
8392
8493 steps :
85- - uses : actions/checkout@v3
94+ - uses : actions/checkout@v4
8695
8796 - name : Install build tools
8897 run : |
93102 env :
94103 CC : ${{matrix.toolchain_root}}/bin/${{matrix.cc}}
95104 CXX : ${{matrix.toolchain_root}}/bin/${{matrix.cxx}}
96- CXX_STANDARD : ${{matrix.cxx_standard}}
97- CXX_STDLIB : ${{matrix.stdlib}}
98- run : cmake -B ${{github.workspace}}/build -DCMAKE_TOOLCHAIN_FILE=${{github.workspace}}/toolchains/${{matrix.compiler}}.cmake -DCMAKE_BUILD_TYPE=${{matrix.build_type}}
105+ run : cmake -B ${{github.workspace}}/build -DCMAKE_CXX_STANDARD=${{matrix.cxx_standard}} -DCMAKE_CXX_FLAGS_INIT=${{matrix.cxx_flags}} -DCMAKE_BUILD_TYPE=${{matrix.build_type}}
99106
100107 - name : Build Unit Tests
101108 run : cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -v -t build_unit_tests
@@ -107,12 +114,12 @@ jobs:
107114 quality_checks_pass :
108115 runs-on : ubuntu-22.04
109116 steps :
110- - uses : actions/checkout@v3
117+ - uses : actions/checkout@v4
111118
112119 - name : Install build tools
113120 run : |
114- wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh 16
115- sudo apt install -y ninja-build clang-tidy-16 clang-format-16
121+ wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh ${{env.DEFAULT_LLVM_VERSION}}
122+ sudo apt install -y ninja-build clang-tidy-${{env.DEFAULT_LLVM_VERSION}} clang-format-${{env.DEFAULT_LLVM_VERSION}}
116123
117124 - name : Install cmake-format
118125 run : |
@@ -121,10 +128,9 @@ jobs:
121128
122129 - name : Configure CMake
123130 env :
124- CC : " /usr/lib/llvm-16/bin/clang"
125- CXX : " /usr/lib/llvm-16/bin/clang++"
126- CXX_STANDARD : 20
127- run : cmake -B ${{github.workspace}}/build
131+ CC : " /usr/lib/llvm-${{env.DEFAULT_LLVM_VERSION}}/bin/clang"
132+ CXX : " /usr/lib/llvm-${{env.DEFAULT_LLVM_VERSION}}/bin/clang++"
133+ run : cmake -B ${{github.workspace}}/build -DCMAKE_CXX_STANDARD=${{env.DEFAULT_CXX_STANDARD}}
128134
129135 - name : Run quality checks
130136 run : cmake --build ${{github.workspace}}/build -t quality
@@ -137,38 +143,36 @@ jobs:
137143 sanitizer : [undefined, address, thread]
138144
139145 steps :
140- - uses : actions/checkout@v3
146+ - uses : actions/checkout@v4
141147
142148 - name : Install build tools
143149 run : |
144- wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh 16
150+ wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh ${{env.DEFAULT_LLVM_VERSION}}
145151 sudo apt install -y ninja-build
146152
147153 - name : Configure CMake
148154 env :
149- CC : " /usr/lib/llvm-16/bin/clang"
150- CXX : " /usr/lib/llvm-16/bin/clang++"
151- CXX_STANDARD : 20
155+ CC : " /usr/lib/llvm-${{env.DEFAULT_LLVM_VERSION}}/bin/clang"
156+ CXX : " /usr/lib/llvm-${{env.DEFAULT_LLVM_VERSION}}/bin/clang++"
152157 SANITIZERS : ${{matrix.sanitizer}}
153- run : cmake -B ${{github.workspace}}/build
158+ run : cmake -B ${{github.workspace}}/build -DCMAKE_CXX_STANDARD=${{env.DEFAULT_CXX_STANDARD}}
154159
155160 - name : Build Unit Tests
156161 run : cmake --build ${{github.workspace}}/build -t unit_tests
157162
158163 valgrind :
159164 runs-on : ubuntu-22.04
160165 steps :
161- - uses : actions/checkout@v3
166+ - uses : actions/checkout@v4
162167
163168 - name : Install build tools
164169 run : sudo apt update && sudo apt install -y gcc-12 ninja-build valgrind
165170
166171 - name : Configure CMake
167172 env :
168- CC : " /usr/bin/gcc-12"
169- CXX : " /usr/bin/g++-12"
170- CXX_STANDARD : 20
171- run : cmake -B ${{github.workspace}}/build
173+ CC : " /usr/bin/gcc-${{env.DEFAULT_GCC_VERSION}}"
174+ CXX : " /usr/bin/g++-${{env.DEFAULT_GCC_VERSION}}"
175+ run : cmake -B ${{github.workspace}}/build -DCMAKE_CXX_STANDARD=${{env.DEFAULT_CXX_STANDARD}}
172176
173177 - name : Build Unit Tests
174178 run : cmake --build ${{github.workspace}}/build -t build_unit_tests
0 commit comments