Skip to content

Commit 7e09607

Browse files
authored
Merge pull request swiftlang#1717 from drodriguez/thin-platforms-cmake
Non-Darwin SDKs product results in per-arch directories (CMake)
2 parents eccf74b + 21e3042 commit 7e09607

File tree

2 files changed

+41
-2
lines changed

2 files changed

+41
-2
lines changed

Diff for: CMakeLists.txt

+9-2
Original file line numberDiff line numberDiff line change
@@ -410,17 +410,24 @@ if(ENABLE_TESTING)
410410
LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}:${FOUNDATION_PATH_TO_XCTEST_BUILD}:${FOUNDATION_PATH_TO_LIBDISPATCH_BUILD}/src)
411411
endif()
412412

413+
get_swift_host_arch(SWIFT_HOST_ARCH)
414+
413415
install(FILES
414416
${CMAKE_CURRENT_BINARY_DIR}/swift/Foundation.swiftdoc
415417
${CMAKE_CURRENT_BINARY_DIR}/swift/Foundation.swiftmodule
416418
DESTINATION
417-
${CMAKE_INSTALL_FULL_LIBDIR}/swift/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR})
419+
${CMAKE_INSTALL_FULL_LIBDIR}/swift/${CMAKE_SYSTEM_NAME}/${SWIFT_HOST_ARCH})
418420
install(FILES
419421
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}Foundation${CMAKE_SHARED_LIBRARY_SUFFIX}
420422
DESTINATION
421423
${CMAKE_INSTALL_FULL_LIBDIR})
424+
if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
425+
install(FILES
426+
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}Foundation${CMAKE_SHARED_LIBRARY_SUFFIX}
427+
DESTINATION
428+
${CMAKE_INSTALL_FULL_LIBDIR}/swift/${CMAKE_SYSTEM_NAME}/${SWIFT_HOST_ARCH})
429+
endif()
422430
install(FILES
423431
${CMAKE_CURRENT_BINARY_DIR}/plutil
424432
DESTINATION
425433
${CMAKE_INSTALL_FULL_BINDIR})
426-

Diff for: cmake/modules/SwiftSupport.cmake

+32
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,35 @@ function(add_swift_executable executable)
155155
add_swift_target(${executable} ${ARGN})
156156
endfunction()
157157

158+
# Returns the current achitecture name in a variable
159+
#
160+
# Usage:
161+
# get_swift_host_arch(result_var_name)
162+
#
163+
# If the current architecture is supported by Swift, sets ${result_var_name}
164+
# with the sanitized host architecture name derived from CMAKE_SYSTEM_PROCESSOR.
165+
function(get_swift_host_arch result_var_name)
166+
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
167+
set("${result_var_name}" "x86_64" PARENT_SCOPE)
168+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64")
169+
set("${result_var_name}" "aarch64" PARENT_SCOPE)
170+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64")
171+
set("${result_var_name}" "powerpc64" PARENT_SCOPE)
172+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64le")
173+
set("${result_var_name}" "powerpc64le" PARENT_SCOPE)
174+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "s390x")
175+
set("${result_var_name}" "s390x" PARENT_SCOPE)
176+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv6l")
177+
set("${result_var_name}" "armv6" PARENT_SCOPE)
178+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7l")
179+
set("${result_var_name}" "armv7" PARENT_SCOPE)
180+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64")
181+
set("${result_var_name}" "x86_64" PARENT_SCOPE)
182+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "IA64")
183+
set("${result_var_name}" "itanium" PARENT_SCOPE)
184+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86")
185+
set("${result_var_name}" "i686" PARENT_SCOPE)
186+
else()
187+
message(FATAL_ERROR "Unrecognized architecture on host system: ${CMAKE_SYSTEM_PROCESSOR}")
188+
endif()
189+
endfunction()

0 commit comments

Comments
 (0)