Skip to content

Commit 144e69a

Browse files
jmschonfeldiCharlesHu
authored andcommitted
Install FoundationEssentials and FoundationInternationalization
1 parent fa6b5a5 commit 144e69a

File tree

4 files changed

+106
-0
lines changed

4 files changed

+106
-0
lines changed

CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,14 @@ endif()
2727
project(SwiftFoundation
2828
LANGUAGES C Swift)
2929

30+
if(NOT SWIFT_SYSTEM_NAME)
31+
if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
32+
set(SWIFT_SYSTEM_NAME macosx)
33+
else()
34+
set(SWIFT_SYSTEM_NAME "$<LOWER_CASE:${CMAKE_SYSTEM_NAME}>")
35+
endif()
36+
endif()
37+
3038
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
3139
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
3240
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
@@ -72,5 +80,7 @@ list(APPEND _SwiftFoundation_availability_macros
7280
"SHELL:$<$<COMPILE_LANGUAGE:Swift>:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=FoundationPredicateRegex 0.3:macOS 10000, iOS 10000, tvOS 10000, watchOS 10000\">"
7381
"SHELL:$<$<COMPILE_LANGUAGE:Swift>:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=FoundationPredicateRegex 0.4:macOS 10000, iOS 10000, tvOS 10000, watchOS 10000\">")
7482

83+
include(SwiftSupport)
84+
7585
add_subdirectory(Sources)
7686
add_subdirectory(cmake/modules)

Sources/FoundationEssentials/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,4 @@ target_link_libraries(FoundationEssentials PUBLIC
4646
_RopeModule)
4747

4848
set_property(GLOBAL APPEND PROPERTY SWIFT_FOUNDATION_EXPORTS FoundationEssentials)
49+
_install_target(FoundationEssentials)

Sources/FoundationInternationalization/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,4 @@ target_link_libraries(FoundationInternationalization PRIVATE
2727
FoundationICU)
2828

2929
set_property(GLOBAL APPEND PROPERTY SWIFT_FOUNDATION_EXPORTS FoundationInternationalization)
30+
_install_target(FoundationInternationalization)

cmake/modules/SwiftSupport.cmake

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
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

Comments
 (0)