Skip to content

Commit d31a053

Browse files
authored
Merge pull request #27762 from compnerd/unified-clang
build: allow unified builds on Windows
2 parents c38e9b2 + d2302fd commit d31a053

File tree

2 files changed

+16
-20
lines changed

2 files changed

+16
-20
lines changed

CMakeLists.txt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -972,17 +972,14 @@ if(SWIFT_NEED_EXPLICIT_LIBDISPATCH)
972972
set(SWIFT_LIBDISPATCH_C_COMPILER ${CMAKE_C_COMPILER})
973973
set(SWIFT_LIBDISPATCH_CXX_COMPILER ${CMAKE_CXX_COMPILER})
974974
elseif(${CMAKE_SYSTEM_NAME} STREQUAL ${CMAKE_HOST_SYSTEM_NAME})
975-
get_target_property(CLANG_LOCATION clang LOCATION)
976-
get_filename_component(CLANG_LOCATION ${CLANG_LOCATION} DIRECTORY)
977-
978975
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
979976
set(SWIFT_LIBDISPATCH_C_COMPILER
980-
${CLANG_LOCATION}/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
977+
$<TARGET_FILE_DIR:clang>/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
981978
set(SWIFT_LIBDISPATCH_CXX_COMPILER
982-
${CLANG_LOCATION}/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
979+
$<TARGET_FILE_DIR:clang>/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
983980
else()
984-
set(SWIFT_LIBDISPATCH_C_COMPILER ${CLANG_LOCATION}/clang)
985-
set(SWIFT_LIBDISPATCH_CXX_COMPILER ${CLANG_LOCATION}/clang++)
981+
set(SWIFT_LIBDISPATCH_C_COMPILER $<TARGET_FILE_DIR:clang>/clang)
982+
set(SWIFT_LIBDISPATCH_CXX_COMPILER $<TARGET_FILE_DIR:clang>/clang++)
986983
endif()
987984
else()
988985
message(SEND_ERROR "libdispatch requires a newer clang compiler (${CMAKE_C_COMPILER_VERSION} < 3.9)")

cmake/modules/SwiftWindowsSupport.cmake

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -84,20 +84,19 @@ endfunction()
8484
macro(swift_swap_compiler_if_needed target)
8585
if(NOT CMAKE_C_COMPILER_ID MATCHES Clang)
8686
if(CMAKE_SYSTEM_NAME STREQUAL CMAKE_HOST_SYSTEM_NAME)
87-
get_target_property(CLANG_LOCATION clang LOCATION)
88-
get_filename_component(CLANG_LOCATION ${CLANG_LOCATION} DIRECTORY)
89-
90-
if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC" OR
91-
"${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC")
92-
set(CMAKE_C_COMPILER
93-
${CLANG_LOCATION}/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
94-
set(CMAKE_CXX_COMPILER
95-
${CLANG_LOCATION}/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
87+
get_target_property(IMPORTED clang IMPORTED)
88+
if(IMPORTED)
89+
set(CLANG_LOCATION $<TARGET_FILE_DIR:clang>)
9690
else()
97-
set(CMAKE_C_COMPILER
98-
${CLANG_LOCATION}/clang${CMAKE_EXECUTABLE_SUFFIX})
99-
set(CMAKE_CXX_COMPILER
100-
${CLANG_LOCATION}/clang++${CMAKE_EXECUTABLE_SUFFIX})
91+
set(CLANG_LOCATION ${LLVM_RUNTIME_OUTPUT_INTDIR})
92+
endif()
93+
94+
if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC" OR "${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC")
95+
set(CMAKE_C_COMPILER ${CLANG_LOCATION}/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
96+
set(CMAKE_CXX_COMPILER ${CLANG_LOCATION}/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
97+
else()
98+
set(CMAKE_C_COMPILER ${CLANG_LOCATION}/clang${CMAKE_EXECUTABLE_SUFFIX})
99+
set(CMAKE_CXX_COMPILER ${CLANG_LOCATION}/clang++${CMAKE_EXECUTABLE_SUFFIX})
101100
endif()
102101
else()
103102
message(SEND_ERROR "${target} requires a clang based compiler")

0 commit comments

Comments
 (0)