From d84681d8f068225f786453a5a77791a1eb8e5459 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Mon, 17 Jul 2023 14:02:33 -0400 Subject: try_compile(): Pass down CMAKE_EXPERIMENTAL_* feature flags --- Source/cmCoreTryCompile.cxx | 12 ++++++++++++ Source/cmExperimental.cxx | 1 + Source/cmExperimental.h | 1 + 3 files changed, 14 insertions(+) diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index 7d4ab50..586db1b 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -18,6 +18,7 @@ #include "cmArgumentParser.h" #include "cmConfigureLog.h" +#include "cmExperimental.h" #include "cmExportTryCompileFileGenerator.h" #include "cmGlobalGenerator.h" #include "cmList.h" @@ -1068,6 +1069,17 @@ cm::optional cmCoreTryCompile::TryCompileCode( cmakeVariables.emplace("CMAKE_OSX_ARCHITECTURES", *tcArchs); } + // Pass down CMAKE_EXPERIMENTAL_* feature flags + for (std::size_t i = 0; + i < static_cast(cmExperimental::Feature::Sentinel); + i++) { + auto const& data = cmExperimental::DataForFeature( + static_cast(i)); + if (data.ForwardThroughTryCompile) { + vars.insert(data.Variable); + } + } + for (std::string const& var : vars) { if (cmValue val = this->Makefile->GetDefinition(var)) { std::string flag = "-D" + var + "=" + *val; diff --git a/Source/cmExperimental.cxx b/Source/cmExperimental.cxx index bdbd353..5d25f66 100644 --- a/Source/cmExperimental.cxx +++ b/Source/cmExperimental.cxx @@ -24,6 +24,7 @@ cmExperimental::FeatureData LookupTable[] = { "CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API", "CMake's C++ module support is experimental. It is meant only for " "experimentation and feedback to CMake developers.", + false, // https://gitlab.kitware.com/cmake/cmake/-/issues/25097 false }, }; static_assert(sizeof(LookupTable) / sizeof(LookupTable[0]) == diff --git a/Source/cmExperimental.h b/Source/cmExperimental.h index 46c5fb7..bd84bb3 100644 --- a/Source/cmExperimental.h +++ b/Source/cmExperimental.h @@ -25,6 +25,7 @@ public: std::string const Uuid; std::string const Variable; std::string const Description; + bool const ForwardThroughTryCompile; bool Warned; }; -- cgit v0.12