summaryrefslogtreecommitdiffstats
path: root/Help/variable
diff options
context:
space:
mode:
authorEvan Wilde <etceterawilde@gmail.com>2023-11-06 00:36:28 (GMT)
committerBrad King <brad.king@kitware.com>2023-11-17 13:43:21 (GMT)
commitc1d787e4734ca107e8ae084b3832e441651a6266 (patch)
tree9622a28a3c0e14caa452ac4ddb6733fa83564088 /Help/variable
parentc39384f54019adce87d676a7ed6d8e772ce5b7f8 (diff)
downloadCMake-c1d787e4734ca107e8ae084b3832e441651a6266.zip
CMake-c1d787e4734ca107e8ae084b3832e441651a6266.tar.gz
CMake-c1d787e4734ca107e8ae084b3832e441651a6266.tar.bz2
Swift: Add abstraction for compilation mode
Add a `CMAKE_Swift_COMPILATION_MODE` variable and corresponding `Swift_COMPILATION_MODE` target property to control the compilation mode. Select among `wholemodule`, `singlefile`, and `incremental`. Add policy CMP0157 to remove the default `-wmo` flags in favor of the abstract setting. Issue: #25366
Diffstat (limited to 'Help/variable')
-rw-r--r--Help/variable/CMAKE_Swift_COMPILATION_MODE.rst32
1 files changed, 32 insertions, 0 deletions
diff --git a/Help/variable/CMAKE_Swift_COMPILATION_MODE.rst b/Help/variable/CMAKE_Swift_COMPILATION_MODE.rst
new file mode 100644
index 0000000..5e55d8c
--- /dev/null
+++ b/Help/variable/CMAKE_Swift_COMPILATION_MODE.rst
@@ -0,0 +1,32 @@
+CMAKE_Swift_COMPILATION_MODE
+----------------------------
+
+.. versionadded:: 3.29
+
+Specify how Swift compiles a target. This variable is used to initialize the
+:prop_tgt:`Swift_COMPILATION_MODE` property on targets as they are created.
+
+The allowed values are:
+
+.. include:: ../prop_tgt/Swift_COMPILATION_MODE-VALUES.txt
+
+Use :manual:`generator expressions <cmake-generator-expressions(7)>` to support
+per-configuration specification. For example, the code:
+
+.. code-block:: cmake
+
+ set(CMAKE_Swift_COMPILATION_MODE
+ "$<IF:$<CONFIG:Release>,wholemodule,incremental>")
+
+sets the default Swift compilation mode to wholemodule mode when building a
+release configuration and to incremental mode in other configurations.
+
+If this variable is not set then the :prop_tgt:`Swift_COMPILATION_MODE` target
+property will not be set automatically. If that property is unset then CMake
+uses the default value ``incremental`` to build the Swift source files.
+
+.. note::
+
+ This property only has effect when policy :policy:`CMP0157` is set to ``NEW``
+ prior to the first :command:`project` or :command:`enable_language` command
+ that enables the Swift language.