diff options
author | Brad King <brad.king@kitware.com> | 2020-12-04 13:27:36 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2020-12-04 13:27:55 (GMT) |
commit | 76685b985d9ec91f7ffa036cc2a43bca6477f6e9 (patch) | |
tree | bb1ee84f0c5c16b3fb1a670fa4800c4afdfc1f0a /Help/policy/CMP0119.rst | |
parent | 16c0057a13282001a5de56a8eb434b299aea3282 (diff) | |
parent | 48aac247e922409b4dfe7189521661df4b0583d1 (diff) | |
download | CMake-76685b985d9ec91f7ffa036cc2a43bca6477f6e9.zip CMake-76685b985d9ec91f7ffa036cc2a43bca6477f6e9.tar.gz CMake-76685b985d9ec91f7ffa036cc2a43bca6477f6e9.tar.bz2 |
Merge topic 'explicit-LANGUAGE-flag'
48aac247e9 Compile with explicit language flag when source LANGUAGE property is set
2e67a75acd Embarcadero: Simplify addition of -P flag for C++
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5522
Diffstat (limited to 'Help/policy/CMP0119.rst')
-rw-r--r-- | Help/policy/CMP0119.rst | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Help/policy/CMP0119.rst b/Help/policy/CMP0119.rst new file mode 100644 index 0000000..61c8bdc --- /dev/null +++ b/Help/policy/CMP0119.rst @@ -0,0 +1,36 @@ +CMP0119 +------- + +.. versionadded:: 3.20 + +:prop_sf:`LANGUAGE` source file property explicitly compiles as specified +language. + +The :prop_sf:`LANGUAGE` source file property is documented to mean that the +source file is written in the specified language. In CMake 3.19 and below, +setting this property causes CMake to compile the source file using the +compiler for the specified language. However, it only passes an explicit +flag to tell the compiler to treat the source as the specified language +for MSVC-like, XL, and Embarcadero compilers for the ``CXX`` language. +CMake 3.20 and above prefer to also explicitly tell the compiler to use +the specified language using a flag such as ``-x c`` on all compilers +for which such flags are known. + +This policy provides compatibility for projects that have not been updated +to expect this behavior. For example, some projects were setting the +``LANGUAGE`` property to ``C`` on assembly-language ``.S`` source files +in order to compile them using the C compiler. Such projects should be +updated to use ``enable_language(ASM)``, for which CMake will often choose +the C compiler as the assembler on relevant platforms anyway. + +The ``OLD`` behavior for this policy is to interpret the ``LANGUAGE <LANG>`` +property using its undocumented meaning to "use the ``<LANG>`` compiler". +The ``NEW`` behavior for this policy is to interpret the ``LANGUAGE <LANG>`` +property using its documented meaning to "compile as a ``<LANG>`` source". + +This policy was introduced in CMake version 3.20. Use the +:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly. +Unlike many policies, CMake version |release| does *not* warn +when this policy is not set and simply uses ``OLD`` behavior. + +.. include:: DEPRECATED.txt |