summaryrefslogtreecommitdiff
path: root/Modules/FindXCTest.cmake
diff options
context:
space:
mode:
authorGregor Jasny <gjasny@googlemail.com>2019-05-11 12:12:32 +0200
committerGregor Jasny <gjasny@googlemail.com>2019-05-11 12:12:32 +0200
commite9d128b789f91c3f8d22e366500f58e6c7f6abc6 (patch)
treef3665a326b022086ac68c84ac15c894abf708707 /Modules/FindXCTest.cmake
parent6ced0b97d5fbcaf94f88a5f3062beeb0ad75f186 (diff)
downloadcmake-e9d128b789f91c3f8d22e366500f58e6c7f6abc6.tar.gz
Apple: Properly lookup XCTest for iOS and tvOS
Closes: #19172
Diffstat (limited to 'Modules/FindXCTest.cmake')
-rw-r--r--Modules/FindXCTest.cmake19
1 files changed, 19 insertions, 0 deletions
diff --git a/Modules/FindXCTest.cmake b/Modules/FindXCTest.cmake
index 849733661e..15721e1849 100644
--- a/Modules/FindXCTest.cmake
+++ b/Modules/FindXCTest.cmake
@@ -61,6 +61,22 @@ The following variables are set by including this module:
#]=======================================================================]
+set(_PRESERVED_CMAKE_FIND_ROOT_PATH "${CMAKE_FIND_ROOT_PATH}")
+
+if(CMAKE_EFFECTIVE_SYSTEM_NAME STREQUAL "Apple"
+ AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+ # Non-macos systems set the CMAKE_FIND_ROOT_PATH_MODE to "ONLY" which
+ # restricts the search paths too much to find XCTest.framework. In
+ # contrast to the regular system frameworks which reside within the
+ # SDK direectory the XCTest framework is located in the respective
+ # platform directory which is not added to the CMAKE_FIND_ROOT_PATH
+ # (only to CMAKE_SYSTEM_FRAMEWORK_PATH) and therefore not searched.
+ #
+ # Until this is properly addressed, temporaily add the platform
+ # directory to CMAKE_FIND_ROOT_PATH.
+ list(APPEND CMAKE_FIND_ROOT_PATH "${_CMAKE_OSX_SYSROOT_PATH}/../..")
+endif()
+
find_path(XCTest_INCLUDE_DIR
NAMES "XCTest/XCTest.h"
DOC "XCTest include directory")
@@ -71,6 +87,9 @@ find_library(XCTest_LIBRARY
DOC "XCTest Framework library")
mark_as_advanced(XCTest_LIBRARY)
+set(CMAKE_FIND_ROOT_PATH "${_PRESERVED_CMAKE_FIND_ROOT_PATH}")
+unset(_PRESERVED_CMAKE_FIND_ROOT_PATH)
+
execute_process(
COMMAND xcrun --find xctest
OUTPUT_VARIABLE _xcrun_out OUTPUT_STRIP_TRAILING_WHITESPACE