1
+
2
+ # Returns the current architecture name in a variable
3
+ #
4
+ # Usage:
5
+ # get_swift_host_arch(result_var_name)
6
+ #
7
+ # If the current architecture is supported by Swift, sets ${result_var_name}
8
+ # with the sanitized host architecture name derived from CMAKE_SYSTEM_PROCESSOR.
9
+ function (get_swift_host_arch result_var_name)
10
+ if ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "x86_64" )
11
+ set ("${result_var_name} " "x86_64" PARENT_SCOPE)
12
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "aarch64" )
13
+ set ("${result_var_name} " "aarch64" PARENT_SCOPE)
14
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ARM64" )
15
+ set ("${result_var_name} " "aarch64" PARENT_SCOPE)
16
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc64" )
17
+ set ("${result_var_name} " "powerpc64" PARENT_SCOPE)
18
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc64le" )
19
+ set ("${result_var_name} " "powerpc64le" PARENT_SCOPE)
20
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "s390x" )
21
+ set ("${result_var_name} " "s390x" PARENT_SCOPE)
22
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "armv6l" )
23
+ set ("${result_var_name} " "armv6" PARENT_SCOPE)
24
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "armv7l" )
25
+ set ("${result_var_name} " "armv7" PARENT_SCOPE)
26
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "armv7-a" )
27
+ set ("${result_var_name} " "armv7" PARENT_SCOPE)
28
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "amd64" )
29
+ set ("${result_var_name} " "amd64" PARENT_SCOPE)
30
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "AMD64" )
31
+ set ("${result_var_name} " "x86_64" PARENT_SCOPE)
32
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "IA64" )
33
+ set ("${result_var_name} " "itanium" PARENT_SCOPE)
34
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "x86" )
35
+ set ("${result_var_name} " "i686" PARENT_SCOPE)
36
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "i686" )
37
+ set ("${result_var_name} " "i686" PARENT_SCOPE)
38
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "wasm32" )
39
+ set ("${result_var_name} " "wasm32" PARENT_SCOPE)
40
+ else ()
41
+ message (FATAL_ERROR "Unrecognized architecture on host system: ${CMAKE_SYSTEM_PROCESSOR} " )
42
+ endif ()
43
+ endfunction ()
44
+
45
+ # Returns the os name in a variable
46
+ #
47
+ # Usage:
48
+ # get_swift_host_os(result_var_name)
49
+ #
50
+ #
51
+ # Sets ${result_var_name} with the converted OS name derived from
52
+ # CMAKE_SYSTEM_NAME.
53
+ function (get_swift_host_os result_var_name)
54
+ set (${result_var_name} ${SWIFT_SYSTEM_NAME} PARENT_SCOPE)
55
+ endfunction ()
56
+
57
+ function (_install_target module)
58
+ get_swift_host_os(swift_os)
59
+ get_target_property (type ${module} TYPE )
60
+
61
+ if (type STREQUAL STATIC_LIBRARY)
62
+ set (swift swift_static)
63
+ else ()
64
+ set (swift swift)
65
+ endif ()
66
+
67
+ install (TARGETS ${module}
68
+ ARCHIVE DESTINATION lib/${swift} /${swift_os}
69
+ LIBRARY DESTINATION lib/${swift} /${swift_os}
70
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )
71
+ if (type STREQUAL EXECUTABLE)
72
+ return ()
73
+ endif ()
74
+
75
+ get_swift_host_arch(swift_arch)
76
+ get_target_property (module_name ${module} Swift_MODULE_NAME)
77
+ if (NOT module_name)
78
+ set (module_name ${module} )
79
+ endif ()
80
+
81
+ if (CMAKE_SYSTEM_NAME STREQUAL Darwin)
82
+ install (FILES $<TARGET_PROPERTY:${module} ,Swift_MODULE_DIRECTORY>/${module_name} .swiftdoc
83
+ DESTINATION lib/${swift} /${swift_os} /${module_name} .swiftmodule
84
+ RENAME ${swift_arch} .swiftdoc)
85
+ install (FILES $<TARGET_PROPERTY:${module} ,Swift_MODULE_DIRECTORY>/${module_name} .swiftmodule
86
+ DESTINATION lib/${swift} /${swift_os} /${module_name} .swiftmodule
87
+ RENAME ${swift_arch} .swiftmodule)
88
+ else ()
89
+ install (FILES
90
+ $<TARGET_PROPERTY:${module} ,Swift_MODULE_DIRECTORY>/${module_name} .swiftdoc
91
+ $<TARGET_PROPERTY:${module} ,Swift_MODULE_DIRECTORY>/${module_name} .swiftmodule
92
+ DESTINATION lib/${swift} /${swift_os} /${swift_arch} )
93
+ endif ()
94
+ endfunction ()
0 commit comments