summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Boeckel <ben.boeckel@kitware.com>2022-05-24 21:20:42 (GMT)
committerBen Boeckel <ben.boeckel@kitware.com>2022-06-14 23:27:30 (GMT)
commitff30a5397d804b9de564d54868bd5fdf504361c2 (patch)
tree7e11794498c6fc46f9f2af1ee00b25432ac866e6
parentfb289dfcd9be3ceb9dcca20b3f51b779d77e01ee (diff)
downloadCMake-ff30a5397d804b9de564d54868bd5fdf504361c2.zip
CMake-ff30a5397d804b9de564d54868bd5fdf504361c2.tar.gz
CMake-ff30a5397d804b9de564d54868bd5fdf504361c2.tar.bz2
cmExperimental: add an experimental feature to handle C++ modules
-rw-r--r--Help/dev/experimental.rst17
-rw-r--r--Source/cmExperimental.cxx9
-rw-r--r--Source/cmExperimental.h2
3 files changed, 27 insertions, 1 deletions
diff --git a/Help/dev/experimental.rst b/Help/dev/experimental.rst
index 7638d22..2c2eb21 100644
--- a/Help/dev/experimental.rst
+++ b/Help/dev/experimental.rst
@@ -7,6 +7,23 @@ See documentation on `CMake Development`_ for more information.
.. _`CMake Development`: README.rst
+Features are gated behind ``CMAKE_EXPERIMENTAL_`` variables which must be set
+to specific values in order to enable their gated behaviors. Note that the
+specific values will change over time to reinforce their experimental nature.
+When used, a warning will be generated to indicate that an experimental
+feature is in use and that the affected behavior in the project is not part of
+CMake's stability guarantees.
+
+C++20 Module APIs
+=================
+
+Variable: ``CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API``
+Value: ``17be90bd-a850-44e0-be50-448de847d652``
+
+In order to support C++20 modules, there are a number of behaviors that have
+CMake APIs to provide the required features to build and export them from a
+project.
+
C++20 Module Dependencies
=========================
diff --git a/Source/cmExperimental.cxx b/Source/cmExperimental.cxx
index 5689714..e815d0e 100644
--- a/Source/cmExperimental.cxx
+++ b/Source/cmExperimental.cxx
@@ -25,7 +25,14 @@ struct FeatureData
std::string const Variable;
std::string const Description;
bool Warned;
-} LookupTable[] = {};
+} LookupTable[] = {
+ // CxxModuleCMakeApi
+ { "17be90bd-a850-44e0-be50-448de847d652",
+ "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 },
+};
static_assert(sizeof(LookupTable) / sizeof(LookupTable[0]) ==
static_cast<size_t>(cmExperimental::Feature::Sentinel),
"Experimental feature lookup table mismatch");
diff --git a/Source/cmExperimental.h b/Source/cmExperimental.h
index c2df019..26e0d17 100644
--- a/Source/cmExperimental.h
+++ b/Source/cmExperimental.h
@@ -12,6 +12,8 @@ class cmExperimental
public:
enum class Feature
{
+ CxxModuleCMakeApi,
+
Sentinel,
};