summaryrefslogtreecommitdiffstats
path: root/Modules/CMakeDetermineSwiftCompiler.cmake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-04-03 18:26:19 (GMT)
committerBrad King <brad.king@kitware.com>2023-04-03 22:59:57 (GMT)
commit52dbfefe0d5b592933c7b712086a9000155cc546 (patch)
tree512156bcb6fa0f8f0c9c783b53d1d24f56fd5c53 /Modules/CMakeDetermineSwiftCompiler.cmake
parent3abd37f05d4686f13fee592dc58aeef506e6f121 (diff)
downloadCMake-52dbfefe0d5b592933c7b712086a9000155cc546.zip
CMake-52dbfefe0d5b592933c7b712086a9000155cc546.tar.gz
CMake-52dbfefe0d5b592933c7b712086a9000155cc546.tar.bz2
Xcode: Fix detection of Swift compiler location for Xcode 14.3
Previously we tried to match output from `xcodebuild` to detect the path to the `swiftc` tool. This approach is used for C and CXX for historical reasons, but is unnecessary for Swift. We know the name of the tool, so we can just ask `xcrun --find swiftc`. Fixes: #24666
Diffstat (limited to 'Modules/CMakeDetermineSwiftCompiler.cmake')
-rw-r--r--Modules/CMakeDetermineSwiftCompiler.cmake12
1 files changed, 8 insertions, 4 deletions
diff --git a/Modules/CMakeDetermineSwiftCompiler.cmake b/Modules/CMakeDetermineSwiftCompiler.cmake
index aaad560..a937311 100644
--- a/Modules/CMakeDetermineSwiftCompiler.cmake
+++ b/Modules/CMakeDetermineSwiftCompiler.cmake
@@ -15,7 +15,14 @@ if("${CMAKE_GENERATOR}" STREQUAL "Xcode")
message(FATAL_ERROR "Swift language not supported by Xcode ${XCODE_VERSION}")
endif()
set(CMAKE_Swift_COMPILER_XCODE_TYPE sourcecode.swift)
- _cmake_find_compiler_path(Swift)
+ execute_process(COMMAND xcrun --find swiftc
+ OUTPUT_VARIABLE _xcrun_out OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_VARIABLE _xcrun_err RESULT_VARIABLE _xcrun_result)
+ if(_xcrun_result EQUAL 0 AND EXISTS "${_xcrun_out}")
+ set(CMAKE_Swift_COMPILER "${_xcrun_out}")
+ else()
+ _cmake_find_compiler_path(Swift)
+ endif()
elseif("${CMAKE_GENERATOR}" MATCHES "^Ninja")
if(CMAKE_Swift_COMPILER)
_cmake_find_compiler_path(Swift)
@@ -52,9 +59,6 @@ if(NOT CMAKE_Swift_COMPILER_ID_RUN)
if("${CMAKE_GENERATOR}" STREQUAL "Xcode")
list(APPEND CMAKE_Swift_COMPILER_ID_MATCH_VENDORS Apple)
set(CMAKE_Swift_COMPILER_ID_MATCH_VENDOR_REGEX_Apple "com.apple.xcode.tools.swift.compiler")
-
- set(CMAKE_Swift_COMPILER_ID_TOOL_MATCH_REGEX "\nCompileSwift[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]* -c[^\r\n]*CompilerIdSwift/CompilerId/main.swift")
- set(CMAKE_Swift_COMPILER_ID_TOOL_MATCH_INDEX 2)
endif()
# Try to identify the compiler.