summaryrefslogtreecommitdiffstats
path: root/Help
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-08-21 13:49:24 (GMT)
committerKitware Robot <kwrobot@kitware.com>2023-08-21 13:49:48 (GMT)
commit0788accdfcd8f29b3853e7e1e91325515c62f1bd (patch)
treefc5338d4cba5928a4a675363dfd17b06b78eeaa6 /Help
parent355f658550d3432c29ddaf0d92aa048fa71b2d53 (diff)
parent48ee946fdcb8a610653e7ba42e9b8dba6942dbfb (diff)
downloadCMake-0788accdfcd8f29b3853e7e1e91325515c62f1bd.zip
CMake-0788accdfcd8f29b3853e7e1e91325515c62f1bd.tar.gz
CMake-0788accdfcd8f29b3853e7e1e91325515c62f1bd.tar.bz2
Merge topic 'imported-cxxmodules'
48ee946fdc cmExperimental: recycle the C++ modules API UUID 1a1806a71b gitlab-ci: declare `bmionly` support for modules where possible 457a12f3f9 Tests/RunCMake/CXXModules: add tests which use modules from imported targets 9b9ec70b54 Ninja: generate scanning and build rules for C++20 module synthetic targets 80ef50a191 CXXModules: add a variable for BMI-only compilation 80d6544398 cxxmodules: generate synthetic targets as an initial pass 3dc6676ecc cmSyntheticTargetCache: add a struct for synthetic target caching cb356b540c cmCxxModuleUsageEffects: add a class to capture module usage effects ... Acked-by: Kitware Robot <kwrobot@kitware.com> Tested-by: buildbot <buildbot@kitware.com> Merge-request: !8535
Diffstat (limited to 'Help')
-rw-r--r--Help/dev/experimental.rst8
-rw-r--r--Help/manual/cmake-properties.7.rst5
-rw-r--r--Help/prop_tgt/IMPORTED_CXX_MODULES_COMPILE_DEFINITIONS.rst14
-rw-r--r--Help/prop_tgt/IMPORTED_CXX_MODULES_COMPILE_FEATURES.rst13
-rw-r--r--Help/prop_tgt/IMPORTED_CXX_MODULES_COMPILE_OPTIONS.rst13
-rw-r--r--Help/prop_tgt/IMPORTED_CXX_MODULES_INCLUDE_DIRECTORIES.rst14
-rw-r--r--Help/prop_tgt/IMPORTED_CXX_MODULES_LINK_LIBRARIES.rst11
7 files changed, 77 insertions, 1 deletions
diff --git a/Help/dev/experimental.rst b/Help/dev/experimental.rst
index 5bfbf8d..046d214 100644
--- a/Help/dev/experimental.rst
+++ b/Help/dev/experimental.rst
@@ -18,7 +18,7 @@ C++20 Module APIs
=================
Variable: ``CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API``
-Value: ``a816ed09-43d1-40e5-bc8c-1a2824ee194e``
+Value: ``ac01f462-0f5f-432a-86aa-acef252918a6``
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
@@ -99,6 +99,10 @@ dependencies to the file specified by the ``<DYNDEP_FILE>`` placeholder. The
``CMAKE_EXPERIMENTAL_CXX_SCANDEP_DEPFILE_FORMAT`` file may be set to ``msvc``
for scandep rules which use ``msvc``-style dependency reporting.
+In order to support ``IMPORTED`` targets with associated C++20 module sources,
+the ``CMAKE_EXPERIMENTAL_CXX_MODULE_BMI_ONLY_FLAG`` variable must be provided
+to have the compiler only output a BMI instead of a BMI and an object file.
+
The module dependencies should be written in the format described
by the `P1689r5`_ paper.
@@ -113,6 +117,8 @@ For compilers that generate module maps, tell CMake as follows:
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "gcc")
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG
"${compiler_flags_for_module_map} -fmodule-mapper=<MODULE_MAP_FILE>")
+ set(CMAKE_EXPERIMENTAL_CXX_MODULE_BMI_ONLY_FLAG
+ "-fmodule-only")
Currently, the only supported formats are, ``clang``, ``gcc``, and ``msvc``.
The ``gcc`` format is described in the GCC documentation, but the relevant
diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst
index c8a433d..fa1d297 100644
--- a/Help/manual/cmake-properties.7.rst
+++ b/Help/manual/cmake-properties.7.rst
@@ -240,6 +240,11 @@ Properties on Targets
/prop_tgt/IMPORTED
/prop_tgt/IMPORTED_COMMON_LANGUAGE_RUNTIME
/prop_tgt/IMPORTED_CONFIGURATIONS
+ /prop_tgt/IMPORTED_CXX_MODULES_COMPILE_DEFINITIONS
+ /prop_tgt/IMPORTED_CXX_MODULES_COMPILE_FEATURES
+ /prop_tgt/IMPORTED_CXX_MODULES_COMPILE_OPTIONS
+ /prop_tgt/IMPORTED_CXX_MODULES_INCLUDE_DIRECTORIES
+ /prop_tgt/IMPORTED_CXX_MODULES_LINK_LIBRARIES
/prop_tgt/IMPORTED_GLOBAL
/prop_tgt/IMPORTED_IMPLIB
/prop_tgt/IMPORTED_IMPLIB_CONFIG
diff --git a/Help/prop_tgt/IMPORTED_CXX_MODULES_COMPILE_DEFINITIONS.rst b/Help/prop_tgt/IMPORTED_CXX_MODULES_COMPILE_DEFINITIONS.rst
new file mode 100644
index 0000000..88687b2
--- /dev/null
+++ b/Help/prop_tgt/IMPORTED_CXX_MODULES_COMPILE_DEFINITIONS.rst
@@ -0,0 +1,14 @@
+IMPORTED_CXX_MODULES_COMPILE_DEFINITIONS
+----------------------------------------
+
+.. versionadded:: 3.28
+
+.. note ::
+
+ Experimental. Gated by ``CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API``
+
+Preprocessor definitions for compiling an ``IMPORTED`` target's C++ module
+sources.
+
+CMake will automatically drop some definitions that are not supported
+by the native build tool.
diff --git a/Help/prop_tgt/IMPORTED_CXX_MODULES_COMPILE_FEATURES.rst b/Help/prop_tgt/IMPORTED_CXX_MODULES_COMPILE_FEATURES.rst
new file mode 100644
index 0000000..c3eb7fb
--- /dev/null
+++ b/Help/prop_tgt/IMPORTED_CXX_MODULES_COMPILE_FEATURES.rst
@@ -0,0 +1,13 @@
+IMPORTED_CXX_MODULES_COMPILE_FEATURES
+-------------------------------------
+
+.. versionadded:: 3.28
+
+.. note ::
+
+ Experimental. Gated by ``CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API``
+
+Compiler features enabled for this ``IMPORTED`` target's C++ modules.
+
+The value of this property is used by the generators to set the include
+paths for the compiler.
diff --git a/Help/prop_tgt/IMPORTED_CXX_MODULES_COMPILE_OPTIONS.rst b/Help/prop_tgt/IMPORTED_CXX_MODULES_COMPILE_OPTIONS.rst
new file mode 100644
index 0000000..5c62c77
--- /dev/null
+++ b/Help/prop_tgt/IMPORTED_CXX_MODULES_COMPILE_OPTIONS.rst
@@ -0,0 +1,13 @@
+IMPORTED_CXX_MODULES_COMPILE_OPTIONS
+------------------------------------
+
+.. versionadded:: 3.28
+
+.. note ::
+
+ Experimental. Gated by ``CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API``
+
+List of options to pass to the compiler for this ``IMPORTED`` target's C++
+modules.
+
+.. include:: ../command/OPTIONS_SHELL.txt
diff --git a/Help/prop_tgt/IMPORTED_CXX_MODULES_INCLUDE_DIRECTORIES.rst b/Help/prop_tgt/IMPORTED_CXX_MODULES_INCLUDE_DIRECTORIES.rst
new file mode 100644
index 0000000..08a993d
--- /dev/null
+++ b/Help/prop_tgt/IMPORTED_CXX_MODULES_INCLUDE_DIRECTORIES.rst
@@ -0,0 +1,14 @@
+IMPORTED_CXX_MODULES_INCLUDE_DIRECTORIES
+----------------------------------------
+
+.. versionadded:: 3.28
+
+.. note ::
+
+ Experimental. Gated by ``CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API``
+
+List of preprocessor include file search directories when compiling C++
+modules for ``IMPORTED`` targets.
+
+The value of this property is used by the generators to set the include
+paths for the compiler.
diff --git a/Help/prop_tgt/IMPORTED_CXX_MODULES_LINK_LIBRARIES.rst b/Help/prop_tgt/IMPORTED_CXX_MODULES_LINK_LIBRARIES.rst
new file mode 100644
index 0000000..5111dc5
--- /dev/null
+++ b/Help/prop_tgt/IMPORTED_CXX_MODULES_LINK_LIBRARIES.rst
@@ -0,0 +1,11 @@
+IMPORTED_CXX_MODULES_LINK_LIBRARIES
+-----------------------------------
+
+.. versionadded:: 3.28
+
+.. note ::
+
+ Experimental. Gated by ``CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API``
+
+List of direct dependencies to use for usage requirements for C++ modules in
+the target's C++ modules.