summaryrefslogtreecommitdiffstats
path: root/Help/release
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2020-12-08 20:20:01 (GMT)
committerBrad King <brad.king@kitware.com>2020-12-10 17:08:13 (GMT)
commit5f882f6ce518a9f90600ae5c73f633ca5c15a7e5 (patch)
tree6fb39272e4f5e0d64fd2f124ebea6735fa9470d7 /Help/release
parent0334a3c68f1064a7bb1f682d81f03e06f3608893 (diff)
downloadCMake-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/release')
-rw-r--r--Help/release/3.19.rst24
1 files changed, 24 insertions, 0 deletions
diff --git a/Help/release/3.19.rst b/Help/release/3.19.rst
index 899e745..4f26058 100644
--- a/Help/release/3.19.rst
+++ b/Help/release/3.19.rst
@@ -53,6 +53,22 @@ Languages
* ``CUDA`` language support now works on QNX.
+Platforms
+---------
+
+* Apple Silicon is now supported (since CMake 3.19.2):
+
+ * The :variable:`CMAKE_HOST_SYSTEM_PROCESSOR` is selected using ``uname -m``.
+ Since this may vary based on CMake's own architecture and that of
+ the invoking process tree, the :variable:`CMAKE_APPLE_SILICON_PROCESSOR`
+ variable or :envvar:`CMAKE_APPLE_SILICON_PROCESSOR` environment
+ variable may be set to specify a host architecture explicitly.
+
+ * If :variable:`CMAKE_OSX_ARCHITECTURES` is not set, CMake adds explicit
+ flags to tell the compiler to build for the
+ :variable:`CMAKE_HOST_SYSTEM_PROCESSOR` so the toolchain does not
+ have to guess based on the process tree's architecture.
+
File-Based API
--------------
@@ -357,3 +373,11 @@ Changes made since CMake 3.19.0 include the following.
It requires macOS 10.10 or newer.
The package file naming pattern has been changed from
``cmake-$ver-Darwin-x86_64`` to ``cmake-$ver-macos-universal``.
+
+* Apple Silicon host architecture selection support was updated.
+ CMake 3.19.0 and 3.19.1 always chose ``arm64`` as the host architecture.
+ CMake 3.19.2 returns to using ``uname -m`` as CMake 3.18 and below did.
+ Since this may vary based on CMake's own architecture and that of
+ the invoking process tree, the :variable:`CMAKE_APPLE_SILICON_PROCESSOR`
+ variable or :envvar:`CMAKE_APPLE_SILICON_PROCESSOR` environment
+ variable may be set to specify a host architecture explicitly.