diff options
author | Brad King <brad.king@kitware.com> | 2020-12-08 20:20:01 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2020-12-10 17:08:13 (GMT) |
commit | 5f882f6ce518a9f90600ae5c73f633ca5c15a7e5 (patch) | |
tree | 6fb39272e4f5e0d64fd2f124ebea6735fa9470d7 /Help/envvar | |
parent | 0334a3c68f1064a7bb1f682d81f03e06f3608893 (diff) | |
download | CMake-5f882f6ce518a9f90600ae5c73f633ca5c15a7e5.zip CMake-5f882f6ce518a9f90600ae5c73f633ca5c15a7e5.tar.gz CMake-5f882f6ce518a9f90600ae5c73f633ca5c15a7e5.tar.bz2 |
macOS: Offer control over host architecture on Apple Silicon hosts
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
Diffstat (limited to 'Help/envvar')
-rw-r--r-- | Help/envvar/CMAKE_APPLE_SILICON_PROCESSOR.rst | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/Help/envvar/CMAKE_APPLE_SILICON_PROCESSOR.rst b/Help/envvar/CMAKE_APPLE_SILICON_PROCESSOR.rst new file mode 100644 index 0000000..adecb72 --- /dev/null +++ b/Help/envvar/CMAKE_APPLE_SILICON_PROCESSOR.rst @@ -0,0 +1,13 @@ +CMAKE_APPLE_SILICON_PROCESSOR +----------------------------- + +.. versionadded:: 3.19.2 + +.. include:: ENV_VAR.txt + +On Apple Silicon hosts running macOS, set this environment variable to tell +CMake what architecture to use for :variable:`CMAKE_HOST_SYSTEM_PROCESSOR`. +The value must be either ``arm64`` or ``x86_64``. + +The :variable:`CMAKE_APPLE_SILICON_PROCESSOR` normal variable, if set, +overrides this environment variable. |