Skip to content

Commit 9b8a3d2

Browse files
committed
WIP/install: build a SDK image for installation
1 parent d236a17 commit 9b8a3d2

File tree

6 files changed

+93
-9
lines changed

6 files changed

+93
-9
lines changed

cmake/modules/AddSwift.cmake

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@ set(SWIFTLIB_DIR
1111
set(SWIFTSTATICLIB_DIR
1212
"${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib/swift_static")
1313

14+
set(SWIFT_PLATFORMS_DIR
15+
${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/Developer/Platforms)
16+
foreach(sdk ${SWIFT_SDKS})
17+
set(SWIFT_${sdk}_SDK_DIR
18+
${SWIFT_PLATFORMS_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}.platform/Developer/SDKs/${SWIFT_SDK_${sdk}_LIB_SUBDIR}.sdk)
19+
if(NOT TARGET swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk)
20+
file(MAKE_DIRECTORY ${SWIFT_${sdk}_SDK_DIR})
21+
add_custom_target(swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk)
22+
endif()
23+
endforeach()
24+
1425
function(add_dependencies_multiple_targets)
1526
cmake_parse_arguments(
1627
ADMT # prefix
@@ -1551,6 +1562,7 @@ endfunction()
15511562
# [IS_STDLIB_CORE]
15521563
# [TARGET_LIBRARY]
15531564
# [INSTALL_WITH_SHARED]
1565+
# [INSTALL_IN_SDK]
15541566
# INSTALL_IN_COMPONENT comp
15551567
# DEPLOYMENT_VERSION_OSX version
15561568
# DEPLOYMENT_VERSION_IOS version
@@ -1675,6 +1687,7 @@ function(add_swift_target_library name)
16751687
SHARED
16761688
STATIC
16771689
TARGET_LIBRARY
1690+
INSTALL_IN_SDK
16781691
INSTALL_WITH_SHARED)
16791692
set(SWIFTLIB_single_parameter_options
16801693
DEPLOYMENT_VERSION_IOS
@@ -2003,6 +2016,52 @@ function(add_swift_target_library name)
20032016
GYB_SOURCES ${SWIFTLIB_GYB_SOURCES}
20042017
)
20052018

2019+
if(SWIFTLIB_INSTALL_IN_SDK)
2020+
if(SWIFTLIB_SHARED)
2021+
if(${sdk} STREQUAL WINDOWS)
2022+
set(target_file ${name}.lib)
2023+
else()
2024+
set(target_file ${CMAKE_SHARED_LIBRARY_PREFIX}${name}${CMAKE_SHARED_LIBRARY_SUFFIX})
2025+
endif()
2026+
2027+
add_custom_command(OUTPUT ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/${arch}/${target_file}
2028+
DEPENDS ${SWIFT_LIBRARY_OUTPUT_INTDIR}/swift/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${target_file}
2029+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SWIFT_LIBRARY_OUTPUT_INTDIR}/swift/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${target_file} ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/${arch}/${target_file})
2030+
add_custom_target(swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk-${name}-${arch}
2031+
DEPENDS ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/${arch}/${target_file})
2032+
2033+
if(SWIFTLIB_IS_STDLIB_CORE)
2034+
set(module_name Swift)
2035+
else()
2036+
string(REPLACE swift "" module_name "${name}")
2037+
endif()
2038+
2039+
add_custom_command(OUTPUT ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/${arch}/${module_name}.swiftdoc
2040+
DEPENDS ${SWIFT_LIBRARY_OUTPUT_INTDIR}/swift/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${module_name}.swiftdoc
2041+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SWIFT_LIBRARY_OUTPUT_INTDIR}/swift/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${module_name}.swiftdoc ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/${arch}/${module_name}.swiftdoc)
2042+
add_custom_target(swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk-${name}-${arch}-swiftdoc
2043+
DEPENDS ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/${arch}/${module_name}.swiftdoc)
2044+
2045+
add_custom_command(OUTPUT ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/${arch}/${module_name}.swiftinterface
2046+
DEPENDS ${SWIFT_LIBRARY_OUTPUT_INTDIR}/swift/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${module_name}.swiftinterface
2047+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SWIFT_LIBRARY_OUTPUT_INTDIR}/swift/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${module_name}.swiftinterface ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/${arch}/${module_name}.swiftinterface)
2048+
add_custom_target(swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk-${name}-${arch}-swiftinterface
2049+
DEPENDS ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/${arch}/${module_name}.swiftinterface)
2050+
2051+
add_custom_command(OUTPUT ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/${arch}/${module_name}.swiftmodule
2052+
DEPENDS ${SWIFT_LIBRARY_OUTPUT_INTDIR}/swift/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${module_name}.swiftmodule
2053+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SWIFT_LIBRARY_OUTPUT_INTDIR}/swift/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${module_name}.swiftmodule ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/${arch}/${module_name}.swiftmodule)
2054+
add_custom_target(swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk-${name}-${arch}-swiftmodule
2055+
DEPENDS ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/${arch}/${module_name}.swiftmodule)
2056+
2057+
add_dependencies(swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk
2058+
swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk-${name}-${arch}
2059+
swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk-${name}-${arch}-swiftdoc
2060+
swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk-${name}-${arch}-swiftinterface
2061+
swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk-${name}-${arch}-swiftmodule)
2062+
endif()
2063+
endif()
2064+
20062065
if(sdk STREQUAL WINDOWS)
20072066
if(SWIFT_COMPILER_IS_MSVC_LIKE)
20082067
if (SWIFT_STDLIB_MSVC_RUNTIME_LIBRARY MATCHES MultiThreadedDebugDLL)
@@ -2151,6 +2210,7 @@ function(add_swift_target_library name)
21512210
PERMISSIONS ${file_permissions}
21522211
"${optional_arg}")
21532212
endif()
2213+
21542214
if(sdk STREQUAL WINDOWS)
21552215
foreach(arch ${SWIFT_SDK_WINDOWS_ARCHITECTURES})
21562216
if(TARGET ${name}-windows-${arch}_IMPLIB)

stdlib/public/Platform/CMakeLists.txt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ add_swift_target_library(swiftDarwin ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_
2626
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
2727
TARGET_SDKS ALL_APPLE_PLATFORMS
2828

29-
DEPENDS ${darwin_depends})
29+
DEPENDS ${darwin_depends}
30+
INSTALL_IN_SDK)
3031

3132
add_swift_target_library(swiftGlibc ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
3233
${swift_platform_sources}
@@ -39,7 +40,8 @@ add_swift_target_library(swiftGlibc ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_O
3940
SWIFT_COMPILE_FLAGS ${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS} ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
4041
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
4142
TARGET_SDKS ANDROID CYGWIN FREEBSD LINUX HAIKU
42-
DEPENDS glibc_modulemap)
43+
DEPENDS glibc_modulemap
44+
INSTALL_IN_SDK)
4345

4446
add_swift_target_library(swiftMSVCRT ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
4547
msvcrt.swift
@@ -51,7 +53,8 @@ add_swift_target_library(swiftMSVCRT ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_
5153

5254
SWIFT_COMPILE_FLAGS ${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS} ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
5355
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
54-
TARGET_SDKS WINDOWS)
56+
TARGET_SDKS WINDOWS
57+
INSTALL_IN_SDK)
5558

5659
set(glibc_modulemap_target_list)
5760
foreach(sdk ${SWIFT_SDKS})

stdlib/public/SwiftOnoneSupport/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ add_swift_target_library(swiftSwiftOnoneSupport ${SWIFT_STDLIB_LIBRARY_BUILD_TYP
1111
# pre-optimization for performance) list them.
1212
SWIFT_COMPILE_FLAGS "-parse-stdlib" "-Xllvm" "-sil-inline-generics=false" "-Xfrontend" "-validate-tbd-against-ir=none" "-Xfrontend" "-check-onone-completeness" "-Xfrontend" "-disable-access-control" "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}" "${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}"
1313
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
14-
INSTALL_IN_COMPONENT stdlib)
14+
INSTALL_IN_COMPONENT stdlib
15+
INSTALL_IN_SDK)
1516
if(WINDOWS IN_LIST SWIFT_SDKS)
1617
# When building in Debug mode, the standard library provides the symbols that
1718
# we need and as such SwiftOnoneSupport does not need to provide any exported

stdlib/public/SwiftShims/CMakeLists.txt

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,19 @@ foreach(input ${sources})
6565
OUTPUT "${output_dir}/${input}"
6666
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${input}"
6767
COMMAND
68-
"${CMAKE_COMMAND}" "-E" "copy_if_different"
69-
"${CMAKE_CURRENT_SOURCE_DIR}/${input}"
70-
"${output_dir}/${input}"
68+
"${CMAKE_COMMAND}" "-E" "copy_if_different" "${CMAKE_CURRENT_SOURCE_DIR}/${input}" "${output_dir}/${input}"
7169
COMMENT "Copying ${input} to ${output_dir}")
7270
list(APPEND outputs "${output_dir}/${input}")
71+
72+
foreach(sdk ${SWIFT_SDKS})
73+
add_custom_command(OUTPUT ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/shims/${input}
74+
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${input}
75+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${input} ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/shims/${input})
76+
add_custom_target(swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk-shims-${input}
77+
DEPENDS ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/shims/${input})
78+
add_dependencies(swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk
79+
swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk-shims-${input})
80+
endforeach()
7381
endforeach()
7482
# Put the output dir itself last so that it isn't considered the primary output.
7583
list(APPEND outputs "${output_dir}")
@@ -123,6 +131,16 @@ add_custom_command_target(unused_var
123131
COMMENT "Symlinking Clang resource headers into ${SWIFTLIB_DIR}/clang")
124132
add_dependencies(copy_shim_headers symlink_clang_headers)
125133

134+
foreach(sdk ${SWIFT_SDKS})
135+
add_custom_command(OUTPUT ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/clang
136+
DEPENDS ${clang_headers_location}
137+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${clang_headers_location} ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/clang)
138+
add_custom_target(swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk-clang-headers
139+
DEPENDS ${SWIFT_${sdk}_SDK_DIR}/usr/lib/swift/clang)
140+
add_dependencies(swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk
141+
swift-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-sdk-clang-headers)
142+
endforeach()
143+
126144
swift_install_in_component(FILES ${sources}
127145
DESTINATION "lib/swift/shims"
128146
COMPONENT stdlib)

stdlib/public/Windows/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@ add_swift_target_library(swiftWinSDK ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_
33

44
SWIFT_COMPILE_FLAGS ${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS} ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
55
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
6-
TARGET_SDKS WINDOWS)
6+
TARGET_SDKS WINDOWS
7+
INSTALL_IN_SDK)
78

stdlib/public/core/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,4 +319,5 @@ add_swift_target_library(swiftCore
319319
FRAMEWORK_DEPENDS
320320
${swift_core_framework_depends}
321321
INSTALL_IN_COMPONENT
322-
stdlib)
322+
stdlib
323+
INSTALL_IN_SDK)

0 commit comments

Comments
 (0)