@@ -33,6 +33,10 @@ if(CMakePythonDistributions_SUPERBUILD)
3333
3434 option (BUILD_VERBOSE "Build reporting additional information (e.g download progress, ...)" ON )
3535
36+ option (RUN_CMAKE_TEST "Run CMake test suite when built from sources" ON )
37+
38+ set (RUN_CMAKE_TEST_EXCLUDE "BootstrapTest" CACHE STRING "CMake test suite exclusion regex" )
39+
3640 set (CMakePythonDistributions_ARCHIVE_DOWNLOAD_DIR "${CMAKE_BINARY_DIR} "
3741 CACHE PATH "Directory where to download archives"
3842 )
@@ -261,6 +265,13 @@ set(CMAKE_EXE_LINKER_FLAGS \"-lstdc++ -lgcc -lrt\" CACHE STRING \"Initial cache\
261265 message (STATUS "SuperBuild - CMakeProject-build - OPENSSL_ROOT_DIR: ${OPENSSL_ROOT_DIR} " )
262266 endif ()
263267
268+ if (DEFINED CMAKE_CXX_STANDARD)
269+ list (APPEND _cmake_cache_args
270+ -DCMAKE_CXX_STANDARD:STRING =${CMAKE_CXX_STANDARD}
271+ )
272+ message (STATUS "SuperBuild - CMakeProject-build - CMAKE_CXX_STANDARD: ${CMAKE_CXX_STANDARD} " )
273+ endif ()
274+
264275 ExternalProject_add(CMakeProject-build
265276 SOURCE_DIR ${CMakeProject_SOURCE_DIR}
266277 BINARY_DIR ${CMakeProject_BINARY_DIR}
@@ -271,7 +282,7 @@ set(CMAKE_EXE_LINKER_FLAGS \"-lstdc++ -lgcc -lrt\" CACHE STRING \"Initial cache\
271282 CMAKE_CACHE_ARGS
272283 -DBUILD_CursesDialog:BOOL =OFF
273284 -DCMAKE_USE_OPENSSL:BOOL =ON
274- -DBUILD_TESTING:BOOL =OFF
285+ -DBUILD_TESTING:BOOL =ON
275286 -DCMake_INSTALL_DEPENDENCIES:BOOL =ON
276287 -DCMAKE_INSTALL_MESSAGE:STRING =NEVER
277288 ${_common_cache_args}
@@ -285,6 +296,8 @@ set(CMAKE_EXE_LINKER_FLAGS \"-lstdc++ -lgcc -lrt\" CACHE STRING \"Initial cache\
285296 LibUV
286297 )
287298
299+ set (CMAKEPROJECT_BUILD_LAST_STEP "build" )
300+
288301 find_program (STRIP_EXECUTABLE strip)
289302 if (STRIP_EXECUTABLE)
290303
@@ -293,12 +306,25 @@ set(CMAKE_EXE_LINKER_FLAGS \"-lstdc++ -lgcc -lrt\" CACHE STRING \"Initial cache\
293306 set (ctest_executable "${CMakeProject_BINARY_DIR} /bin/ctest" )
294307
295308 ExternalProject_Add_Step(CMakeProject-build strip_executables
296- DEPENDEES build
309+ DEPENDEES ${CMAKEPROJECT_BUILD_LAST_STEP}
297310 COMMENT "Stripping CMake executables"
298311 COMMAND ${STRIP_EXECUTABLE} ${cmake_executable}
299312 COMMAND ${STRIP_EXECUTABLE} ${cpack_executable}
300313 COMMAND ${STRIP_EXECUTABLE} ${ctest_executable}
314+ USES_TERMINAL 1
315+ )
316+ set (CMAKEPROJECT_BUILD_LAST_STEP "strip_executables" )
317+ endif ()
318+
319+ if (RUN_CMAKE_TEST)
320+ ExternalProject_Add_Step(CMakeProject-build run_cmake_test_suite
321+ DEPENDEES ${CMAKEPROJECT_BUILD_LAST_STEP}
322+ COMMENT "Running CMake test suite, exclusion list: '${RUN_CMAKE_TEST_EXCLUDE} '"
323+ COMMAND ./bin/ctest --force-new-ctest-process --stop-on -failure --output -on -failure -j2 -E ${RUN_CMAKE_TEST_EXCLUDE}
324+ WORKING_DIRECTORY ${CMakeProject_BINARY_DIR}
325+ USES_TERMINAL 1
301326 )
327+ set (CMAKEPROJECT_BUILD_LAST_STEP "run_cmake_test_suite" )
302328 endif ()
303329 else ()
304330 cpd_ExternalProject_Add_Empty(CMakeProject-build "CMakeProject-src-download" )
0 commit comments