diff options
author | Ben Boeckel <ben.boeckel@kitware.com> | 2023-01-28 03:15:12 (GMT) |
---|---|---|
committer | Ben Boeckel <ben.boeckel@kitware.com> | 2023-01-30 20:25:24 (GMT) |
commit | d5ee82104f146297768c78829f2b60e76b754e8d (patch) | |
tree | a83d2833b848b28500fbf477ee6434f8e6dea7cd /.gitlab/ci | |
parent | 1c4825066b782be7773d6e6a4358082df2cc55cb (diff) | |
download | CMake-d5ee82104f146297768c78829f2b60e76b754e8d.zip CMake-d5ee82104f146297768c78829f2b60e76b754e8d.tar.gz CMake-d5ee82104f146297768c78829f2b60e76b754e8d.tar.bz2 |
ci: support debugging IWYU in CI
Instead of requiring setting up a mock CI environment with the official
image locally. While such docs would be handy anyways, requiring that
entire setup to get a small piece of information from a build is
unnecessary.
Diffstat (limited to '.gitlab/ci')
-rw-r--r-- | .gitlab/ci/ctest_build.cmake | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/.gitlab/ci/ctest_build.cmake b/.gitlab/ci/ctest_build.cmake index 4bb2924..e874a62 100644 --- a/.gitlab/ci/ctest_build.cmake +++ b/.gitlab/ci/ctest_build.cmake @@ -22,9 +22,32 @@ 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) + RETURN_VALUE build_result + ${ctest_build_args}) ctest_submit(PARTS Build) if (build_result) @@ -37,6 +60,11 @@ if ("$ENV{CTEST_NO_WARNINGS_ALLOWED}" AND num_warnings GREATER 0) "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 |