summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGilles Khouzam <gillesk@microsoft.com>2015-09-23 14:27:07 -0700
committerBrad King <brad.king@kitware.com>2015-10-02 09:43:24 -0400
commitb31ac171a4acdc8d8eb1d08c5b5f61ec90a9dbaa (patch)
tree231dbfbca2b43a245c3ce303c3f6909a984e9f3d
parent70688609412421c3efa168f9c210a9e4e06a5578 (diff)
downloadcmake-b31ac171a4acdc8d8eb1d08c5b5f61ec90a9dbaa.tar.gz
Allow CMAKE_SYSTEM_VERSION to be set without CMAKE_SYSTEM_NAME
Teach CMakeDetermineSystem to check for a CMAKE_SYSTEM_VERSION setting even when CMAKE_SYSTEM_NAME is not set. This will allow builds on the host OS to target other versions of the OS without full cross-compiling.
-rw-r--r--Help/variable/CMAKE_SYSTEM_VERSION.rst7
-rw-r--r--Modules/CMakeDetermineSystem.cmake4
2 files changed, 10 insertions, 1 deletions
diff --git a/Help/variable/CMAKE_SYSTEM_VERSION.rst b/Help/variable/CMAKE_SYSTEM_VERSION.rst
index f388ccf6b2..aba8ca32b1 100644
--- a/Help/variable/CMAKE_SYSTEM_VERSION.rst
+++ b/Help/variable/CMAKE_SYSTEM_VERSION.rst
@@ -12,6 +12,13 @@ then ``CMAKE_SYSTEM_VERSION`` is by default set to the same value as the
:variable:`CMAKE_HOST_SYSTEM_VERSION` variable so that the build targets
the host system version.
+In the case of a host build then ``CMAKE_SYSTEM_VERSION`` may be set
+explicitly when first configuring a new build tree in order to enable
+targeting the build for a different version of the host operating system
+than is actually running on the host. This is allowed and not considered
+cross compiling so long as the binaries built for the specified OS version
+can still run on the host.
+
System Version for Cross Compiling
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/Modules/CMakeDetermineSystem.cmake b/Modules/CMakeDetermineSystem.cmake
index fa14641b50..d9f7579e3e 100644
--- a/Modules/CMakeDetermineSystem.cmake
+++ b/Modules/CMakeDetermineSystem.cmake
@@ -123,7 +123,9 @@ elseif(CMAKE_VS_WINCE_VERSION)
set(PRESET_CMAKE_SYSTEM_NAME TRUE)
else()
set(CMAKE_SYSTEM_NAME "${CMAKE_HOST_SYSTEM_NAME}")
- set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}")
+ if(NOT DEFINED CMAKE_SYSTEM_VERSION)
+ set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}")
+ endif()
set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_HOST_SYSTEM_PROCESSOR}")
set(CMAKE_CROSSCOMPILING FALSE)
set(PRESET_CMAKE_SYSTEM_NAME FALSE)