| CMP0215 |
| ------- |
| |
| .. versionadded:: 4.4 |
| |
| :ref:`Ninja Generators` emit Swift modules separately from compilation. |
| |
| In CMake 4.3 and below, Swift targets built by :ref:`Ninja Generators` |
| emit ``.swiftmodule`` from the Swift compile edge together with object files. |
| Because Ninja treats a build edge as atomic, downstream Swift targets |
| must wait for compilation outputs to finish before they can use the module |
| interface. |
| |
| CMake 4.4 and above prefer to emit ``.swiftmodule`` from a dedicated |
| ``-emit-module`` build edge so that downstream Swift targets can begin |
| compiling as soon as the module interface is available. This policy |
| provides compatibility with projects that have not been updated. |
| |
| The ``OLD`` behavior for this policy is to not emit modules separately. |
| The ``NEW`` behavior for this policy is to emit ``.swiftmodule`` from a |
| dedicated build edge for importable Swift targets by default. |
| |
| The :prop_tgt:`Swift_SEPARATE_MODULE_EMISSION` target property and |
| corresponding :variable:`CMAKE_Swift_SEPARATE_MODULE_EMISSION` variable |
| may be set to enable or disable the behavior on a per-target basis. |
| |
| .. note:: |
| |
| Separate module emission takes effect only when policy :policy:`CMP0157` |
| is set to ``NEW`` prior to the first :command:`project` or |
| :command:`enable_language` command that enables the Swift language. |
| The dedicated ``.swiftmodule`` edge is available only in the split |
| Swift build model. |
| |
| .. |INTRODUCED_IN_CMAKE_VERSION| replace:: 4.4 |
| .. |WARNS_OR_DOES_NOT_WARN| replace:: does *not* warn |
| .. include:: include/STANDARD_ADVICE.rst |
| |
| .. include:: include/DEPRECATED.rst |