| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- cmake_host_system_information
- -----------------------------
- Query host system specific information.
- .. code-block:: cmake
- cmake_host_system_information(RESULT <variable> QUERY <key> ...)
- Queries system information of the host system on which cmake runs.
- One or more ``<key>`` can be provided to select the information to be
- queried. The list of queried values is stored in ``<variable>``.
- ``<key>`` can be one of the following values:
- ``NUMBER_OF_LOGICAL_CORES``
- Number of logical cores
- ``NUMBER_OF_PHYSICAL_CORES``
- Number of physical cores
- ``HOSTNAME``
- Hostname
- ``FQDN``
- Fully qualified domain name
- ``TOTAL_VIRTUAL_MEMORY``
- Total virtual memory in MiB [#mebibytes]_
- ``AVAILABLE_VIRTUAL_MEMORY``
- Available virtual memory in MiB [#mebibytes]_
- ``TOTAL_PHYSICAL_MEMORY``
- Total physical memory in MiB [#mebibytes]_
- ``AVAILABLE_PHYSICAL_MEMORY``
- Available physical memory in MiB [#mebibytes]_
- ``IS_64BIT``
- .. versionadded:: 3.10
- One if processor is 64Bit
- ``HAS_FPU``
- .. versionadded:: 3.10
- One if processor has floating point unit
- ``HAS_MMX``
- .. versionadded:: 3.10
- One if processor supports MMX instructions
- ``HAS_MMX_PLUS``
- .. versionadded:: 3.10
- One if processor supports Ext. MMX instructions
- ``HAS_SSE``
- .. versionadded:: 3.10
- One if processor supports SSE instructions
- ``HAS_SSE2``
- .. versionadded:: 3.10
- One if processor supports SSE2 instructions
- ``HAS_SSE_FP``
- .. versionadded:: 3.10
- One if processor supports SSE FP instructions
- ``HAS_SSE_MMX``
- .. versionadded:: 3.10
- One if processor supports SSE MMX instructions
- ``HAS_AMD_3DNOW``
- .. versionadded:: 3.10
- One if processor supports 3DNow instructions
- ``HAS_AMD_3DNOW_PLUS``
- .. versionadded:: 3.10
- One if processor supports 3DNow+ instructions
- ``HAS_IA64``
- .. versionadded:: 3.10
- One if IA64 processor emulating x86
- ``HAS_SERIAL_NUMBER``
- .. versionadded:: 3.10
- One if processor has serial number
- ``PROCESSOR_SERIAL_NUMBER``
- .. versionadded:: 3.10
- Processor serial number
- ``PROCESSOR_NAME``
- .. versionadded:: 3.10
- Human readable processor name
- ``PROCESSOR_DESCRIPTION``
- .. versionadded:: 3.10
- Human readable full processor description
- ``OS_NAME``
- .. versionadded:: 3.10
- See :variable:`CMAKE_HOST_SYSTEM_NAME`
- ``OS_RELEASE``
- .. versionadded:: 3.10
- The OS sub-type e.g. on Windows ``Professional``
- ``OS_VERSION``
- .. versionadded:: 3.10
- The OS build ID
- ``OS_PLATFORM``
- .. versionadded:: 3.10
- See :variable:`CMAKE_HOST_SYSTEM_PROCESSOR`
- ``DISTRIB_INFO``
- .. versionadded:: 3.22
- Read :file:`/etc/os-release` file and define the given ``<variable>``
- into a list of read variables
- ``DISTRIB_<name>``
- .. versionadded:: 3.22
- Get the ``<name>`` variable (see `man 5 os-release`_) if it exists in the
- :file:`/etc/os-release` file
- Example:
- .. code-block:: cmake
- cmake_host_system_information(RESULT PRETTY_NAME QUERY DISTRIB_PRETTY_NAME)
- message(STATUS "${PRETTY_NAME}")
- cmake_host_system_information(RESULT DISTRO QUERY DISTRIB_INFO)
- foreach(VAR IN LISTS DISTRO)
- message(STATUS "${VAR}=`${${VAR}}`")
- endforeach()
- Output::
- -- Ubuntu 20.04.2 LTS
- -- DISTRO_BUG_REPORT_URL=`https://bugs.launchpad.net/ubuntu/`
- -- DISTRO_HOME_URL=`https://www.ubuntu.com/`
- -- DISTRO_ID=`ubuntu`
- -- DISTRO_ID_LIKE=`debian`
- -- DISTRO_NAME=`Ubuntu`
- -- DISTRO_PRETTY_NAME=`Ubuntu 20.04.2 LTS`
- -- DISTRO_PRIVACY_POLICY_URL=`https://www.ubuntu.com/legal/terms-and-policies/privacy-policy`
- -- DISTRO_SUPPORT_URL=`https://help.ubuntu.com/`
- -- DISTRO_UBUNTU_CODENAME=`focal`
- -- DISTRO_VERSION=`20.04.2 LTS (Focal Fossa)`
- -- DISTRO_VERSION_CODENAME=`focal`
- -- DISTRO_VERSION_ID=`20.04`
- If :file:`/etc/os-release` file is not found, the command tries to gather OS
- identification via fallback scripts. The fallback script can use `various
- distribution-specific files`_ to collect OS identification data and map it
- into `man 5 os-release`_ variables.
- Fallback Interface Variables
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- .. variable:: CMAKE_GET_OS_RELEASE_FALLBACK_SCRIPTS
- In addition to the scripts shipped with CMake, a user may append full
- paths to his script(s) to the this list. The script filename has the
- following format: ``NNN-<name>.cmake``, where ``NNN`` is three digits
- used to apply collected scripts in a specific order.
- .. variable:: CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_<varname>
- Variables collected by the user provided fallback script
- ought to be assigned to CMake variables using this naming
- convention. Example, the ``ID`` variable from the manual becomes
- ``CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID``.
- .. variable:: CMAKE_GET_OS_RELEASE_FALLBACK_RESULT
- The fallback script ought to store names of all assigned
- ``CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_<varname>`` variables in this list.
- Example:
- .. code-block:: cmake
- # Try to detect some old distribution
- # See also
- # - http://linuxmafia.com/faq/Admin/release-files.html
- #
- if(NOT EXISTS "${CMAKE_SYSROOT}/etc/foobar-release")
- return()
- endif()
- # Get the first string only
- file(
- STRINGS "${CMAKE_SYSROOT}/etc/foobar-release" CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT
- LIMIT_COUNT 1
- )
- #
- # Example:
- #
- # Foobar distribution release 1.2.3 (server)
- #
- if(CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT MATCHES "Foobar distribution release ([0-9\.]+) .*")
- set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_NAME Foobar)
- set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_PRETTY_NAME "${CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT}")
- set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID foobar)
- set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION ${CMAKE_MATCH_1})
- set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION_ID ${CMAKE_MATCH_1})
- list(
- APPEND CMAKE_GET_OS_RELEASE_FALLBACK_RESULT
- CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_NAME
- CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_PRETTY_NAME
- CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID
- CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION
- CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION_ID
- )
- endif()
- unset(CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT)
- .. rubric:: Footnotes
- .. [#mebibytes] One MiB (mebibyte) is equal to 1024x1024 bytes.
- .. _man 5 os-release: https://www.freedesktop.org/software/systemd/man/os-release.html
- .. _various distribution-specific files: http://linuxmafia.com/faq/Admin/release-files.html
|