summaryrefslogtreecommitdiffstats
path: root/Help/policy/CMP0119.rst
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2020-12-04 13:27:36 (GMT)
committerKitware Robot <kwrobot@kitware.com>2020-12-04 13:27:55 (GMT)
commit76685b985d9ec91f7ffa036cc2a43bca6477f6e9 (patch)
treebb1ee84f0c5c16b3fb1a670fa4800c4afdfc1f0a /Help/policy/CMP0119.rst
parent16c0057a13282001a5de56a8eb434b299aea3282 (diff)
parent48aac247e922409b4dfe7189521661df4b0583d1 (diff)
downloadCMake-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.rst36
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