mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 13:51:33 -06:00
Since commit b6c60f14b6 (macOS: Default to arm64 architecture on Apple
Silicon hosts, 2020-09-28, v3.19.0-rc1~63^2) we use `sysctl` to detect
that we are running on Apple Silicon in a way that pierces Rosetta.
This always sets `CMAKE_HOST_SYSTEM_PROCESSOR` to be `arm64` on such
hosts. However, macOS offers strong support for running processes under
an emulated `x86_64` architecture.
Teach CMake to select either `arm64` or `x86_64` as the host
architecture on Apple Silicon based on the architecture of its own
process. When CMake is built as a universal binary, macOS will select
whichever slice (architecture) is appropriate under the user's shell,
and `CMAKE_HOST_SYSTEM_PROCESSOR` will match.
Also offer a `CMAKE_APPLE_SILICON_PROCESSOR` variable and environment
variable to provide users with explicit control over the host
architecture selection regardless of CMake's own architecture.
Finally, if `CMAKE_OSX_ARCHITECTURES` is not set, pass explicit flags to
the toolchain to use selected host architecture instead of letting the
toolchain pick.
Fixes: #21554
16 lines
617 B
ReStructuredText
16 lines
617 B
ReStructuredText
CMAKE_APPLE_SILICON_PROCESSOR
|
|
-----------------------------
|
|
|
|
.. versionadded:: 3.19.2
|
|
|
|
On Apple Silicon hosts running macOS, set this variable to tell
|
|
CMake what architecture to use for :variable:`CMAKE_HOST_SYSTEM_PROCESSOR`.
|
|
The value must be either ``arm64`` or ``x86_64``.
|
|
|
|
The value of this variable should never be modified by project code.
|
|
It is meant to be set by a toolchain file specified by the
|
|
:variable:`CMAKE_TOOLCHAIN_FILE` variable, or as a cache entry
|
|
provided by the user, e.g. via ``-DCMAKE_APPLE_SILICON_PROCESSOR=...``.
|
|
|
|
See also the :envvar:`CMAKE_APPLE_SILICON_PROCESSOR` environment variable.
|