blob: 871eab49224d5c749103f718c4bab9626b1f11fc [file]
CMP0221
-------
.. versionadded:: 4.5
:command:`cmake_host_system_information` ``DISTRIB_*`` queries read the host
os-release.
The :command:`cmake_host_system_information` command is documented to query
information about the host system on which CMake runs. However, its
``DISTRIB_*`` queries read the :file:`/etc/os-release` (or
:file:`/usr/lib/os-release`) file under the :variable:`CMAKE_SYSROOT`, if set.
During cross compilation this reports the *target* distribution rather than
the host, contradicting the rest of the command.
The ``OLD`` behavior of this policy is for ``DISTRIB_*`` queries with no
``FROM_SYSROOT`` to read the os-release under :variable:`CMAKE_SYSROOT`.
The ``NEW`` behavior is for such queries to read the host os-release,
ignoring :variable:`CMAKE_SYSROOT`.
Either behavior may be requested explicitly, regardless of this policy, with
the ``FROM_SYSROOT <bool>`` option:
* A false value reads the host os-release.
* A true value reads the os-release under :variable:`CMAKE_SYSROOT`, which is
useful for querying the target distribution (e.g. for packaging).
.. code-block:: cmake
# Always the host distribution:
cmake_host_system_information(RESULT host QUERY FROM_SYSROOT OFF DISTRIB_ID)
# Always the target (CMAKE_SYSROOT) distribution:
cmake_host_system_information(RESULT target QUERY FROM_SYSROOT ON DISTRIB_ID)
The warning is issued only when it can matter: a ``DISTRIB_*`` query with no
``FROM_SYSROOT`` while :variable:`CMAKE_SYSROOT` is non-empty. Passing
``FROM_SYSROOT``, or leaving :variable:`CMAKE_SYSROOT` empty, is silent.
.. |INTRODUCED_IN_CMAKE_VERSION| replace:: 4.5
.. |WARNS_OR_DOES_NOT_WARN| replace:: warns
.. include:: include/STANDARD_ADVICE.rst
.. include:: include/DEPRECATED.rst