cmake_minimum_required(VERSION 3.8) include("${CMAKE_CURRENT_LIST_DIR}/gitlab_ci.cmake") # Read the files from the build directory. ctest_read_custom_files("${CTEST_BINARY_DIRECTORY}") # Pick up from where the configure left off. ctest_start(APPEND) include(ProcessorCount) ProcessorCount(nproc) if (NOT "$ENV{CTEST_MAX_PARALLELISM}" STREQUAL "") if (nproc GREATER "$ENV{CTEST_MAX_PARALLELISM}") set(nproc "$ENV{CTEST_MAX_PARALLELISM}") endif () endif () if (CTEST_CMAKE_GENERATOR STREQUAL "Unix Makefiles") set(CTEST_BUILD_FLAGS "-j${nproc} -l${nproc}") elseif (CTEST_CMAKE_GENERATOR MATCHES "Ninja") set(CTEST_BUILD_FLAGS "-l${nproc}") endif () set(ctest_build_args) # IWYU debugging: # - set the name of the target (if not one of the main libraries) # - set the name of the source (without extension, relative to `Source/`) # - uncomment the debugging support in the relevant `configure_*_iwyu.cmake` file set(iwyu_source_target) # set for "other" targets not the "main" 3 libraries set(iwyu_source_name) # e.g., cmTarget if (iwyu_source_name AND "$ENV{CMAKE_CONFIGURATION}" MATCHES "iwyu") if (NOT iwyu_source_target) if (iwyu_source_name MATCHES "^(CTest/|cmCTest$)") set(iwyu_source_target "CTestLib") elseif (iwyu_source_name MATCHES "^CPack/") set(iwyu_source_target "CPackLib") else () # Assume everything else is in CMakeLib set(iwyu_source_target "CMakeLib") endif () endif () list(APPEND ctest_build_args TARGET "Source/CMakeFiles/${iwyu_source_target}.dir/${iwyu_source_name}.cxx.o") endif () ctest_build( NUMBER_WARNINGS num_warnings RETURN_VALUE build_result ${ctest_build_args}) ctest_submit(PARTS Build) if (build_result) message(FATAL_ERROR "Failed to build") endif () if ("$ENV{CTEST_NO_WARNINGS_ALLOWED}" AND num_warnings GREATER 0) message(FATAL_ERROR "Found ${num_warnings} warnings (treating as fatal).") endif () if (ctest_build_args) message(FATAL_ERROR "Failing to prevent debugging support from being committed.") endif () if (NOT "$ENV{CMAKE_CI_NO_INSTALL}") ctest_build(APPEND TARGET install RETURN_VALUE install_result) if (install_result) message(FATAL_ERROR "Failed to install") endif () endif ()