| 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 |