@@ -51,6 +51,17 @@ def _str2bool(v: Union[bool, str]) -> bool:
51
51
raise argparse .ArgumentTypeError ('Boolean value expected.' )
52
52
53
53
54
+ def _compiler_from_toolset (toolset : str ) -> str :
55
+ if toolset .startswith ('gcc' ):
56
+ return toolset .replace ('gcc' , 'g++' )
57
+ elif toolset .startswith ('clang' ):
58
+ return toolset .replace ('clang' , 'clang++' )
59
+ elif toolset .startswith ('msvc' ):
60
+ return 'cl'
61
+ else :
62
+ return toolset
63
+
64
+
54
65
def _deduce_boost_branch () -> str :
55
66
# Are we in GitHub Actions?
56
67
if os .environ .get ('GITHUB_ACTIONS' ) is not None :
@@ -111,12 +122,15 @@ def _setup_boost(
111
122
112
123
# Builds a Boost distribution using ./b2 install, and places it into _b2_distro.
113
124
# This emulates a regular Boost distribution, like the ones in releases
114
- def _build_b2_distro ():
125
+ def _build_b2_distro (
126
+ toolset : str
127
+ ):
115
128
os .chdir (str (_boost_root ))
116
129
_run ([
117
130
_b2_command ,
118
131
'--prefix={}' .format (_b2_distro ),
119
132
'--with-system' ,
133
+ 'toolset={}' .format (toolset ),
120
134
'-d0' ,
121
135
'install'
122
136
])
@@ -128,6 +142,7 @@ def _build_cmake_distro(
128
142
generator : str ,
129
143
build_type : str ,
130
144
cxxstd : str ,
145
+ toolset : str ,
131
146
build_shared_libs : bool = False
132
147
):
133
148
_mkdir_and_cd (_boost_root .joinpath ('__build_cmake_test__' ))
@@ -136,6 +151,7 @@ def _build_cmake_distro(
136
151
'-G' ,
137
152
generator ,
138
153
'-DBUILD_TESTING=ON' ,
154
+ '-DCMAKE_CXX_COMPILER={}' .format (_compiler_from_toolset (toolset )),
139
155
'-DCMAKE_BUILD_TYPE={}' .format (build_type ),
140
156
'-DCMAKE_CXX_STANDARD={}' .format (cxxstd ),
141
157
'-DBOOST_INCLUDE_LIBRARIES=redis' ,
@@ -151,19 +167,21 @@ def _build_cmake_distro(
151
167
_run (['cmake' , '--build' , '.' , '--target' , 'install' , '--config' , build_type ])
152
168
153
169
154
- # Builds and runs our CMake tests as a standalone project
170
+ # Builds our CMake tests as a standalone project
155
171
# (BOOST_REDIS_MAIN_PROJECT is ON) and we find_package Boost.
156
172
# This ensures that all our test suite is run.
157
- def _run_cmake_standalone_tests (
173
+ def _build_cmake_standalone_tests (
158
174
generator : str ,
159
175
build_type : str ,
160
176
cxxstd : str ,
177
+ toolset : str ,
161
178
build_shared_libs : bool = False
162
179
):
163
180
_mkdir_and_cd (_boost_root .joinpath ('libs' , 'redis' , '__build_standalone__' ))
164
181
_run ([
165
182
'cmake' ,
166
183
'-DBUILD_TESTING=ON' ,
184
+ '-DCMAKE_CXX_COMPILER={}' .format (_compiler_from_toolset (toolset )),
167
185
'-DCMAKE_PREFIX_PATH={}' .format (_build_prefix_path (_b2_distro )),
168
186
'-DCMAKE_BUILD_TYPE={}' .format (build_type ),
169
187
'-DBUILD_SHARED_LIBS={}' .format (_cmake_bool (build_shared_libs )),
@@ -173,13 +191,21 @@ def _run_cmake_standalone_tests(
173
191
'..'
174
192
])
175
193
_run (['cmake' , '--build' , '.' ])
194
+
195
+
196
+ # Runs the tests built in the previous step
197
+ def _run_cmake_standalone_tests (
198
+ build_type : str
199
+ ):
200
+ os .chdir (str (_boost_root .joinpath ('libs' , 'redis' , '__build_standalone__' )))
176
201
_run (['ctest' , '--output-on-failure' , '--build-config' , build_type , '--no-tests=error' ])
177
202
178
203
179
204
# Tests that the library can be consumed using add_subdirectory()
180
205
def _run_cmake_add_subdirectory_tests (
181
206
generator : str ,
182
207
build_type : str ,
208
+ toolset : str ,
183
209
build_shared_libs : bool = False
184
210
):
185
211
test_folder = _boost_root .joinpath ('libs' , 'redis' , 'test' , 'cmake_test' , '__build_cmake_subdir_test__' )
@@ -188,6 +214,7 @@ def _run_cmake_add_subdirectory_tests(
188
214
'cmake' ,
189
215
'-G' ,
190
216
generator ,
217
+ '-DCMAKE_CXX_COMPILER={}' .format (_compiler_from_toolset (toolset )),
191
218
'-DBUILD_TESTING=ON' ,
192
219
'-DBOOST_CI_INSTALL_TEST=OFF' ,
193
220
'-DCMAKE_BUILD_TYPE={}' .format (build_type ),
@@ -202,13 +229,15 @@ def _run_cmake_add_subdirectory_tests(
202
229
def _run_cmake_find_package_tests (
203
230
generator : str ,
204
231
build_type : str ,
232
+ toolset : str ,
205
233
build_shared_libs : bool = False
206
234
):
207
235
_mkdir_and_cd (_boost_root .joinpath ('libs' , 'redis' , 'test' , 'cmake_test' , '__build_cmake_install_test__' ))
208
236
_run ([
209
237
'cmake' ,
210
238
'-G' ,
211
239
generator ,
240
+ '-DCMAKE_CXX_COMPILER={}' .format (_compiler_from_toolset (toolset )),
212
241
'-DBUILD_TESTING=ON' ,
213
242
'-DBOOST_CI_INSTALL_TEST=ON' ,
214
243
'-DCMAKE_BUILD_TYPE={}' .format (build_type ),
@@ -224,13 +253,15 @@ def _run_cmake_find_package_tests(
224
253
def _run_cmake_b2_find_package_tests (
225
254
generator : str ,
226
255
build_type : str ,
256
+ toolset : str ,
227
257
build_shared_libs : bool = False
228
258
):
229
259
_mkdir_and_cd (_boost_root .joinpath ('libs' , 'redis' , 'test' , 'cmake_b2_test' , '__build_cmake_b2_test__' ))
230
260
_run ([
231
261
'cmake' ,
232
262
'-G' ,
233
263
generator ,
264
+ '-DCMAKE_CXX_COMPILER={}' .format (_compiler_from_toolset (toolset )),
234
265
'-DBUILD_TESTING=ON' ,
235
266
'-DCMAKE_PREFIX_PATH={}' .format (_build_prefix_path (_b2_distro )),
236
267
'-DCMAKE_BUILD_TYPE={}' .format (build_type ),
@@ -242,6 +273,8 @@ def _run_cmake_b2_find_package_tests(
242
273
_run (['ctest' , '--output-on-failure' , '--build-config' , build_type , '--no-tests=error' ])
243
274
244
275
276
+
277
+
245
278
def main ():
246
279
parser = argparse .ArgumentParser ()
247
280
subparsers = parser .add_subparsers ()
@@ -251,37 +284,47 @@ def main():
251
284
subp .set_defaults (func = _setup_boost )
252
285
253
286
subp = subparsers .add_parser ('build-b2-distro' )
287
+ subp .add_argument ('--toolset' , default = 'gcc' )
254
288
subp .set_defaults (func = _build_b2_distro )
255
289
256
290
subp = subparsers .add_parser ('build-cmake-distro' )
257
291
subp .add_argument ('--generator' , default = 'Unix Makefiles' )
258
292
subp .add_argument ('--build-type' , default = 'Debug' )
259
293
subp .add_argument ('--cxxstd' , default = '20' )
294
+ subp .add_argument ('--toolset' , default = 'gcc' )
260
295
subp .add_argument ('--build-shared-libs' , type = _str2bool , default = False )
261
296
subp .set_defaults (func = _build_cmake_distro )
262
297
263
- subp = subparsers .add_parser ('run -cmake-standalone-tests' )
298
+ subp = subparsers .add_parser ('build -cmake-standalone-tests' )
264
299
subp .add_argument ('--generator' , default = 'Unix Makefiles' )
265
300
subp .add_argument ('--build-type' , default = 'Debug' )
266
301
subp .add_argument ('--cxxstd' , default = '20' )
302
+ subp .add_argument ('--toolset' , default = 'gcc' )
267
303
subp .add_argument ('--build-shared-libs' , type = _str2bool , default = False )
304
+ subp .set_defaults (func = _build_cmake_standalone_tests )
305
+
306
+ subp = subparsers .add_parser ('run-cmake-standalone-tests' )
307
+ subp .add_argument ('--build-type' , default = 'Debug' )
268
308
subp .set_defaults (func = _run_cmake_standalone_tests )
269
309
270
310
subp = subparsers .add_parser ('run-cmake-add-subdirectory-tests' )
271
311
subp .add_argument ('--generator' , default = 'Unix Makefiles' )
272
312
subp .add_argument ('--build-type' , default = 'Debug' )
313
+ subp .add_argument ('--toolset' , default = 'gcc' )
273
314
subp .add_argument ('--build-shared-libs' , type = _str2bool , default = False )
274
315
subp .set_defaults (func = _run_cmake_add_subdirectory_tests )
275
316
276
317
subp = subparsers .add_parser ('run-cmake-find-package-tests' )
277
318
subp .add_argument ('--generator' , default = 'Unix Makefiles' )
278
319
subp .add_argument ('--build-type' , default = 'Debug' )
320
+ subp .add_argument ('--toolset' , default = 'gcc' )
279
321
subp .add_argument ('--build-shared-libs' , type = _str2bool , default = False )
280
322
subp .set_defaults (func = _run_cmake_find_package_tests )
281
323
282
324
subp = subparsers .add_parser ('run-cmake-b2-find-package-tests' )
283
325
subp .add_argument ('--generator' , default = 'Unix Makefiles' )
284
326
subp .add_argument ('--build-type' , default = 'Debug' )
327
+ subp .add_argument ('--toolset' , default = 'gcc' )
285
328
subp .add_argument ('--build-shared-libs' , type = _str2bool , default = False )
286
329
subp .set_defaults (func = _run_cmake_b2_find_package_tests )
287
330
0 commit comments