Skip to content

Commit d4d7fef

Browse files
authored
Install swiftmodules with full module triple (#354)
Use full module triple in the installed swiftmodules. ### Motivation: Clean up how the CMake build installs swiftmodules, using the full module triple instead of just the architecture. This change uses the compiler to compute the expected module triple instead of attempting to compute it in CMake script. This is more maintainable and robust to adding new platforms and architectures. ### Modifications: Update the CMake build to query the compiler for the full module triple instead of attempting to compute it in CMake script.
1 parent 5bd06ee commit d4d7fef

File tree

1 file changed

+16
-57
lines changed

1 file changed

+16
-57
lines changed

cmake/modules/SwiftSupport.cmake

Lines changed: 16 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -12,50 +12,17 @@
1212
##
1313
##===----------------------------------------------------------------------===##
1414

15-
# Returns the architecture name in a variable
16-
#
17-
# Usage:
18-
# get_swift_host_arch(result_var_name)
19-
#
20-
# Sets ${result_var_name} with the converted architecture name derived from
21-
# CMAKE_SYSTEM_PROCESSOR.
22-
function(get_swift_host_arch result_var_name)
23-
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
24-
set("${result_var_name}" "x86_64" PARENT_SCOPE)
25-
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "AArch64|aarch64|arm64|ARM64")
26-
if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
27-
set("${result_var_name}" "arm64" PARENT_SCOPE)
28-
else()
29-
set("${result_var_name}" "aarch64" PARENT_SCOPE)
30-
endif()
31-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64")
32-
set("${result_var_name}" "powerpc64" PARENT_SCOPE)
33-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64le")
34-
set("${result_var_name}" "powerpc64le" PARENT_SCOPE)
35-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "s390x")
36-
set("${result_var_name}" "s390x" PARENT_SCOPE)
37-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv6l")
38-
set("${result_var_name}" "armv6" PARENT_SCOPE)
39-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7l")
40-
set("${result_var_name}" "armv7" PARENT_SCOPE)
41-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7-a")
42-
set("${result_var_name}" "armv7" PARENT_SCOPE)
43-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64")
44-
set("${result_var_name}" "x86_64" PARENT_SCOPE)
45-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "amd64")
46-
set("${result_var_name}" "x86_64" PARENT_SCOPE)
47-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "IA64")
48-
set("${result_var_name}" "itanium" PARENT_SCOPE)
49-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86")
50-
set("${result_var_name}" "i686" PARENT_SCOPE)
51-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686")
52-
set("${result_var_name}" "i686" PARENT_SCOPE)
53-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "riscv64")
54-
set("${result_var_name}" "riscv64" PARENT_SCOPE)
55-
else()
56-
message(FATAL_ERROR "Unrecognized architecture on host system: ${CMAKE_SYSTEM_PROCESSOR}")
15+
if(NOT SwiftCrypto_SWIFTMODULE_TRIPLE)
16+
set(target_info_cmd "${CMAKE_Swift_COMPILER}" -print-target-info)
17+
if(CMAKE_Swift_COMPILER_TARGET)
18+
list(APPEND target_info_cmd -target ${CMAKE_Swift_COMPILER_TARGET})
5719
endif()
58-
endfunction()
20+
execute_process(COMMAND ${target_info_cmd} OUTPUT_VARIABLE target_info)
21+
string(JSON module_triple GET "${target_info}" "target" "moduleTriple")
22+
set(SwiftCrypto_SWIFTMODULE_TRIPLE "${module_triple}" CACHE STRING "Triple used to install Swift module files")
23+
mark_as_advanced(SwiftCrypto_SWIFTMODULE_TRIPLE)
24+
message(CONFIGURE_LOG "Swift module triple: ${module_triple}")
25+
endif()
5926

6027
# Returns the os name in a variable
6128
#
@@ -92,23 +59,15 @@ function(_install_target module)
9259
return()
9360
endif()
9461

95-
get_swift_host_arch(swift_arch)
9662
get_target_property(module_name ${module} Swift_MODULE_NAME)
9763
if(NOT module_name)
9864
set(module_name ${module})
9965
endif()
10066

101-
if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
102-
install(FILES $<TARGET_PROPERTY:${module},Swift_MODULE_DIRECTORY>/${module_name}.swiftdoc
103-
DESTINATION lib/${swift}/${swift_os}/${module_name}.swiftmodule
104-
RENAME ${swift_arch}.swiftdoc)
105-
install(FILES $<TARGET_PROPERTY:${module},Swift_MODULE_DIRECTORY>/${module_name}.swiftmodule
106-
DESTINATION lib/${swift}/${swift_os}/${module_name}.swiftmodule
107-
RENAME ${swift_arch}.swiftmodule)
108-
else()
109-
install(FILES
110-
$<TARGET_PROPERTY:${module},Swift_MODULE_DIRECTORY>/${module_name}.swiftdoc
111-
$<TARGET_PROPERTY:${module},Swift_MODULE_DIRECTORY>/${module_name}.swiftmodule
112-
DESTINATION lib/${swift}/${swift_os}/${swift_arch})
113-
endif()
67+
install(FILES $<TARGET_PROPERTY:${module},Swift_MODULE_DIRECTORY>/${module_name}.swiftdoc
68+
DESTINATION lib/${swift}/${swift_os}/${module_name}.swiftmodule
69+
RENAME ${SwiftCrypto_SWIFTMODULE_TRIPLE}.swiftdoc)
70+
install(FILES $<TARGET_PROPERTY:${module},Swift_MODULE_DIRECTORY>/${module_name}.swiftmodule
71+
DESTINATION lib/${swift}/${swift_os}/${module_name}.swiftmodule
72+
RENAME ${SwiftCrypto_SWIFTMODULE_TRIPLE}.swiftmodule)
11473
endfunction()

0 commit comments

Comments
 (0)