Skip to content

Commit b831192

Browse files
committed
include presets
1 parent 4be809d commit b831192

File tree

6 files changed

+453
-15
lines changed

6 files changed

+453
-15
lines changed

.github/workflows/ci_tests.yml

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,38 @@ on:
1111
- cron: '30 15 * * *'
1212

1313
jobs:
14-
# preset-test:
15-
# runs-on: ubuntu-latest
16-
# strategy:
17-
# matrix:
18-
# preset: []
19-
# name: "Preset Test: ${{ matrix.preset }}"
20-
# steps:
21-
# - uses: actions/checkout@v4
22-
# - name: Setup build environment
23-
# uses: lukka/get-cmake@latest
24-
# with:
25-
# cmakeVersion: "~3.25.0"
26-
# ninjaVersion: "^1.11.1"
27-
# - name: Run preset
28-
# run: cmake --workflow --preset ${{ matrix.preset }}
14+
preset-test:
15+
strategy:
16+
matrix:
17+
presets:
18+
- preset: "gcc-debug"
19+
platform: "ubuntu-latest"
20+
- preset: "gcc-release"
21+
platform: "ubuntu-latest"
22+
- preset: "appleclang-debug"
23+
platform: "macos-latest"
24+
- preset: "appleclang-release"
25+
platform: "macos-latest"
26+
- preset: "msvc-debug"
27+
platform: "windows-latest"
28+
- preset: "msvc-release"
29+
platform: "windows-latest"
30+
name: "Preset: ${{ matrix.presets.preset }} on ${{ matrix.presets.platform }}"
31+
runs-on: ${{ matrix.presets.platform }}
32+
steps:
33+
- uses: actions/checkout@v4
34+
- name: Setup build environment
35+
uses: lukka/get-cmake@latest
36+
with:
37+
cmakeVersion: "~3.25.0"
38+
ninjaVersion: "^1.11.1"
39+
- name: Setup MSVC
40+
if: startsWith(matrix.presets.platform, 'windows')
41+
uses: TheMrMilchmann/setup-msvc-dev@v3
42+
with:
43+
arch: x64
44+
- name: Run preset
45+
run: cmake --workflow --preset ${{ matrix.presets.preset }}
2946

3047
test:
3148
strategy:

CMakePresets.json

Lines changed: 268 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,268 @@
1+
{
2+
"version": 6,
3+
"configurePresets": [
4+
{
5+
"name": "_root-config",
6+
"hidden": true,
7+
"generator": "Ninja",
8+
"binaryDir": "${sourceDir}/build/${presetName}",
9+
"cacheVariables": {
10+
"CMAKE_CXX_STANDARD": "20"
11+
}
12+
},
13+
{
14+
"name": "_debug-base",
15+
"hidden": true,
16+
"cacheVariables": {
17+
"CMAKE_BUILD_TYPE": "Debug",
18+
"BEMAN_BUILDSYS_SANITIZER": "MaxSan"
19+
}
20+
},
21+
{
22+
"name": "_release-base",
23+
"hidden": true,
24+
"cacheVariables": {
25+
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
26+
}
27+
},
28+
{
29+
"name": "gcc-debug",
30+
"displayName": "GCC Debug Build",
31+
"inherits": [
32+
"_root-config",
33+
"_debug-base"
34+
],
35+
"cacheVariables": {
36+
"CMAKE_TOOLCHAIN_FILE": "cmake/gnu-toolchain.cmake"
37+
}
38+
},
39+
{
40+
"name": "gcc-release",
41+
"displayName": "GCC Release Build",
42+
"inherits": [
43+
"_root-config",
44+
"_release-base"
45+
],
46+
"cacheVariables": {
47+
"CMAKE_TOOLCHAIN_FILE": "cmake/gnu-toolchain.cmake"
48+
}
49+
},
50+
{
51+
"name": "appleclang-debug",
52+
"displayName": "xcode Debug Build",
53+
"inherits": [
54+
"_root-config",
55+
"_debug-base"
56+
],
57+
"cacheVariables": {
58+
"CMAKE_TOOLCHAIN_FILE": "cmake/appleclang-toolchain.cmake"
59+
}
60+
},
61+
{
62+
"name": "appleclang-release",
63+
"displayName": "xcode Release Build",
64+
"inherits": [
65+
"_root-config",
66+
"_release-base"
67+
],
68+
"cacheVariables": {
69+
"CMAKE_TOOLCHAIN_FILE": "cmake/appleclang-toolchain.cmake"
70+
}
71+
},
72+
{
73+
"name": "msvc-debug",
74+
"displayName": "MSVC Debug Build",
75+
"inherits": [
76+
"_root-config",
77+
"_debug-base"
78+
],
79+
"cacheVariables": {
80+
"CMAKE_TOOLCHAIN_FILE": "cmake/msvc-toolchain.cmake"
81+
}
82+
},
83+
{
84+
"name": "msvc-release",
85+
"displayName": "MSVC Release Build",
86+
"inherits": [
87+
"_root-config",
88+
"_release-base"
89+
],
90+
"cacheVariables": {
91+
"CMAKE_TOOLCHAIN_FILE": "cmake/msvc-toolchain.cmake"
92+
}
93+
}
94+
],
95+
"buildPresets": [
96+
{
97+
"name": "gcc-debug",
98+
"configurePreset": "gcc-debug"
99+
},
100+
{
101+
"name": "gcc-release",
102+
"configurePreset": "gcc-release"
103+
},
104+
{
105+
"name": "appleclang-debug",
106+
"configurePreset": "appleclang-debug"
107+
},
108+
{
109+
"name": "appleclang-release",
110+
"configurePreset": "appleclang-release"
111+
},
112+
{
113+
"name": "msvc-debug",
114+
"configurePreset": "msvc-debug"
115+
},
116+
{
117+
"name": "msvc-release",
118+
"configurePreset": "msvc-release"
119+
}
120+
],
121+
"testPresets": [
122+
{
123+
"name": "_test_base",
124+
"hidden": true,
125+
"output": {
126+
"outputOnFailure": true
127+
},
128+
"execution": {
129+
"noTestsAction": "error",
130+
"stopOnFailure": true
131+
}
132+
},
133+
{
134+
"name": "gcc-debug",
135+
"inherits": "_test_base",
136+
"configurePreset": "gcc-debug"
137+
},
138+
{
139+
"name": "gcc-release",
140+
"inherits": "_test_base",
141+
"configurePreset": "gcc-release"
142+
},
143+
{
144+
"name": "appleclang-debug",
145+
"inherits": "_test_base",
146+
"configurePreset": "appleclang-debug"
147+
},
148+
{
149+
"name": "appleclang-release",
150+
"inherits": "_test_base",
151+
"configurePreset": "appleclang-release"
152+
},
153+
{
154+
"name": "msvc-debug",
155+
"inherits": "_test_base",
156+
"configurePreset": "msvc-debug"
157+
},
158+
{
159+
"name": "msvc-release",
160+
"inherits": "_test_base",
161+
"configurePreset": "msvc-release"
162+
}
163+
],
164+
"workflowPresets": [
165+
{
166+
"name": "gcc-debug",
167+
"steps": [
168+
{
169+
"type": "configure",
170+
"name": "gcc-debug"
171+
},
172+
{
173+
"type": "build",
174+
"name": "gcc-debug"
175+
},
176+
{
177+
"type": "test",
178+
"name": "gcc-debug"
179+
}
180+
]
181+
},
182+
{
183+
"name": "gcc-release",
184+
"steps": [
185+
{
186+
"type": "configure",
187+
"name": "gcc-release"
188+
},
189+
{
190+
"type": "build",
191+
"name": "gcc-release"
192+
},
193+
{
194+
"type": "test",
195+
"name": "gcc-release"
196+
}
197+
]
198+
},
199+
{
200+
"name": "appleclang-debug",
201+
"steps": [
202+
{
203+
"type": "configure",
204+
"name": "appleclang-debug"
205+
},
206+
{
207+
"type": "build",
208+
"name": "appleclang-debug"
209+
},
210+
{
211+
"type": "test",
212+
"name": "appleclang-debug"
213+
}
214+
]
215+
},
216+
{
217+
"name": "appleclang-release",
218+
"steps": [
219+
{
220+
"type": "configure",
221+
"name": "appleclang-release"
222+
},
223+
{
224+
"type": "build",
225+
"name": "appleclang-release"
226+
},
227+
{
228+
"type": "test",
229+
"name": "appleclang-release"
230+
}
231+
]
232+
},
233+
{
234+
"name": "msvc-debug",
235+
"steps": [
236+
{
237+
"type": "configure",
238+
"name": "msvc-debug"
239+
},
240+
{
241+
"type": "build",
242+
"name": "msvc-debug"
243+
},
244+
{
245+
"type": "test",
246+
"name": "msvc-debug"
247+
}
248+
]
249+
},
250+
{
251+
"name": "msvc-release",
252+
"steps": [
253+
{
254+
"type": "configure",
255+
"name": "msvc-release"
256+
},
257+
{
258+
"type": "build",
259+
"name": "msvc-release"
260+
},
261+
{
262+
"type": "test",
263+
"name": "msvc-release"
264+
}
265+
]
266+
}
267+
]
268+
}

cmake/appleclang-toolchain.cmake

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
2+
3+
# This toolchain file is not meant to be used directly,
4+
# but to be invoked by CMake preset and GitHub CI.
5+
#
6+
# This toolchain file configures for apple clang family of compiler.
7+
# Note this is different from LLVM toolchain.
8+
#
9+
# BEMAN_BUILDSYS_SANITIZER:
10+
# This optional CMake parameter is not meant for public use and is subject to
11+
# change.
12+
# Possible values:
13+
# - MaxSan: configures clang and clang++ to use all available non-conflicting
14+
# sanitizers. Note that apple clang does not support leak sanitizer.
15+
# - TSan: configures clang and clang++ to enable the use of thread sanitizer.
16+
17+
include_guard(GLOBAL)
18+
19+
set(CMAKE_C_COMPILER clang)
20+
set(CMAKE_CXX_COMPILER clang++)
21+
22+
if(BEMAN_BUILDSYS_SANITIZER STREQUAL "MaxSan")
23+
set(SANITIZER_FLAGS
24+
"-fsanitize=address -fsanitize=pointer-compare -fsanitize=pointer-subtract -fsanitize=undefined"
25+
)
26+
elseif(BEMAN_BUILDSYS_SANITIZER STREQUAL "TSan")
27+
set(SANITIZER_FLAGS "-fsanitize=thread")
28+
endif()
29+
30+
set(CMAKE_C_FLAGS_DEBUG_INIT "${SANITIZER_FLAGS}")
31+
set(CMAKE_CXX_FLAGS_DEBUG_INIT "${SANITIZER_FLAGS}")
32+
33+
set(RELEASE_FLAGS "-O3 ${SANITIZER_FLAGS}")
34+
35+
set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "${RELEASE_FLAGS}")
36+
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "${RELEASE_FLAGS}")
37+
38+
set(CMAKE_C_FLAGS_RELEASE_INIT "${RELEASE_FLAGS}")
39+
set(CMAKE_CXX_FLAGS_RELEASE_INIT "${RELEASE_FLAGS}")

0 commit comments

Comments
 (0)