Skip to content

Commit 5b3b2f2

Browse files
authored
Merge pull request #73414 from al45tair/eng/PR-123503191-6.0
[Build] Add support for static-linking to the SDK system.
2 parents 316f686 + 7d93a36 commit 5b3b2f2

File tree

2 files changed

+129
-106
lines changed

2 files changed

+129
-106
lines changed

cmake/modules/Libdispatch.cmake

Lines changed: 94 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -84,105 +84,107 @@ foreach(sdk ${DISPATCH_SDKS})
8484
set(SWIFT_LIBDISPATCH_SYSTEM_PROCESSOR -DCMAKE_SYSTEM_PROCESSOR=${arch})
8585
endif()
8686

87-
ExternalProject_Add("${LIBDISPATCH_VARIANT_NAME}"
88-
SOURCE_DIR
89-
"${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}"
90-
CMAKE_ARGS
91-
-DCMAKE_AR=${CMAKE_AR}
92-
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
93-
${SWIFT_LIBDISPATCH_COMPILER_CMAKE_ARGS}
94-
${SWIFT_LIBDISPATCH_COMPILER_TRIPLE_CMAKE_ARGS}
95-
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
96-
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
97-
-DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}
98-
-DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}
99-
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
100-
-DCMAKE_INSTALL_LIBDIR=lib
101-
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
102-
-DCMAKE_LINKER=${CMAKE_LINKER}
103-
-DCMAKE_MT=${CMAKE_MT}
104-
-DCMAKE_RANLIB=${CMAKE_RANLIB}
105-
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
106-
-DCMAKE_SYSTEM_NAME=${SWIFT_SDK_${sdk}_NAME}
107-
${SWIFT_LIBDISPATCH_SYSTEM_PROCESSOR}
108-
"${SWIFT_LIBDISPATCH_ANDROID_NDK}"
109-
-DCMAKE_ANDROID_ARCH_ABI=${SWIFT_SDK_ANDROID_ARCH_${arch}_ABI}
110-
-DCMAKE_ANDROID_API=${SWIFT_ANDROID_API_LEVEL}
111-
-DBUILD_SHARED_LIBS=YES
112-
-DENABLE_SWIFT=NO
113-
-DBUILD_TESTING=NO
114-
INSTALL_COMMAND
115-
# NOTE(compnerd) provide a custom install command to
116-
# ensure that we strip out the DESTDIR environment
117-
# from the sub-build
118-
${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --target install
119-
COMMAND
120-
${CMAKE_COMMAND} -E copy
121-
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
122-
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
123-
COMMAND
124-
${CMAKE_COMMAND} -E copy
125-
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
126-
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
127-
COMMAND
128-
${CMAKE_COMMAND} -E copy
129-
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
130-
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
131-
COMMAND
132-
${CMAKE_COMMAND} -E copy
133-
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
134-
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
135-
STEP_TARGETS
136-
install
137-
BUILD_BYPRODUCTS
138-
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
139-
<INSTALL_DIR>/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
140-
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
141-
<INSTALL_DIR>/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
142-
BUILD_ALWAYS
143-
1)
87+
if(NOT SWIFT_SDK_${sdk}_STATIC_ONLY)
88+
ExternalProject_Add("${LIBDISPATCH_VARIANT_NAME}"
89+
SOURCE_DIR
90+
"${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}"
91+
CMAKE_ARGS
92+
-DCMAKE_AR=${CMAKE_AR}
93+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
94+
${SWIFT_LIBDISPATCH_COMPILER_CMAKE_ARGS}
95+
${SWIFT_LIBDISPATCH_COMPILER_TRIPLE_CMAKE_ARGS}
96+
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
97+
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
98+
-DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}
99+
-DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}
100+
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
101+
-DCMAKE_INSTALL_LIBDIR=lib
102+
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
103+
-DCMAKE_LINKER=${CMAKE_LINKER}
104+
-DCMAKE_MT=${CMAKE_MT}
105+
-DCMAKE_RANLIB=${CMAKE_RANLIB}
106+
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
107+
-DCMAKE_SYSTEM_NAME=${SWIFT_SDK_${sdk}_NAME}
108+
${SWIFT_LIBDISPATCH_SYSTEM_PROCESSOR}
109+
"${SWIFT_LIBDISPATCH_ANDROID_NDK}"
110+
-DCMAKE_ANDROID_ARCH_ABI=${SWIFT_SDK_ANDROID_ARCH_${arch}_ABI}
111+
-DCMAKE_ANDROID_API=${SWIFT_ANDROID_API_LEVEL}
112+
-DBUILD_SHARED_LIBS=YES
113+
-DENABLE_SWIFT=NO
114+
-DBUILD_TESTING=NO
115+
INSTALL_COMMAND
116+
# NOTE(compnerd) provide a custom install command to
117+
# ensure that we strip out the DESTDIR environment
118+
# from the sub-build
119+
${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --target install
120+
COMMAND
121+
${CMAKE_COMMAND} -E copy
122+
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
123+
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
124+
COMMAND
125+
${CMAKE_COMMAND} -E copy
126+
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
127+
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
128+
COMMAND
129+
${CMAKE_COMMAND} -E copy
130+
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
131+
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
132+
COMMAND
133+
${CMAKE_COMMAND} -E copy
134+
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
135+
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
136+
STEP_TARGETS
137+
install
138+
BUILD_BYPRODUCTS
139+
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
140+
<INSTALL_DIR>/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
141+
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
142+
<INSTALL_DIR>/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
143+
BUILD_ALWAYS
144+
1)
144145

145-
ExternalProject_Get_Property("${LIBDISPATCH_VARIANT_NAME}" install_dir)
146+
ExternalProject_Get_Property("${LIBDISPATCH_VARIANT_NAME}" install_dir)
146147

147-
if(NOT SWIFT_BUILT_STANDALONE AND NOT "${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
148-
add_dependencies("${LIBDISPATCH_VARIANT_NAME}" clang)
149-
endif()
148+
if(NOT SWIFT_BUILT_STANDALONE AND NOT "${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
149+
add_dependencies("${LIBDISPATCH_VARIANT_NAME}" clang)
150+
endif()
150151

151-
# CMake does not like the addition of INTERFACE_INCLUDE_DIRECTORIES without
152-
# the directory existing. Just create the location which will be populated
153-
# during the installation.
154-
file(MAKE_DIRECTORY ${install_dir}/include)
152+
# CMake does not like the addition of INTERFACE_INCLUDE_DIRECTORIES without
153+
# the directory existing. Just create the location which will be populated
154+
# during the installation.
155+
file(MAKE_DIRECTORY ${install_dir}/include)
155156

156-
set(DISPATCH_VARIANT_NAME "dispatch-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
157-
add_library("${DISPATCH_VARIANT_NAME}" SHARED IMPORTED GLOBAL)
158-
set_target_properties("${DISPATCH_VARIANT_NAME}"
159-
PROPERTIES
160-
IMPORTED_LOCATION
161-
${install_dir}/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
162-
IMPORTED_IMPLIB
163-
${install_dir}/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
164-
INTERFACE_INCLUDE_DIRECTORIES
165-
${install_dir}/include
166-
IMPORTED_NO_SONAME
167-
1)
157+
set(DISPATCH_VARIANT_NAME "dispatch-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
158+
add_library("${DISPATCH_VARIANT_NAME}" SHARED IMPORTED GLOBAL)
159+
set_target_properties("${DISPATCH_VARIANT_NAME}"
160+
PROPERTIES
161+
IMPORTED_LOCATION
162+
${install_dir}/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
163+
IMPORTED_IMPLIB
164+
${install_dir}/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
165+
INTERFACE_INCLUDE_DIRECTORIES
166+
${install_dir}/include
167+
IMPORTED_NO_SONAME
168+
1)
168169

169-
set(BLOCKS_RUNTIME_VARIANT_NAME "BlocksRuntime-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
170-
add_library("${BLOCKS_RUNTIME_VARIANT_NAME}" SHARED IMPORTED GLOBAL)
171-
set_target_properties("${BLOCKS_RUNTIME_VARIANT_NAME}"
172-
PROPERTIES
173-
IMPORTED_LOCATION
174-
${install_dir}/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
175-
IMPORTED_IMPLIB
176-
${install_dir}/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
177-
INTERFACE_INCLUDE_DIRECTORIES
178-
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/src/BlocksRuntime
179-
IMPORTED_NO_SONAME
180-
1)
170+
set(BLOCKS_RUNTIME_VARIANT_NAME "BlocksRuntime-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
171+
add_library("${BLOCKS_RUNTIME_VARIANT_NAME}" SHARED IMPORTED GLOBAL)
172+
set_target_properties("${BLOCKS_RUNTIME_VARIANT_NAME}"
173+
PROPERTIES
174+
IMPORTED_LOCATION
175+
${install_dir}/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
176+
IMPORTED_IMPLIB
177+
${install_dir}/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
178+
INTERFACE_INCLUDE_DIRECTORIES
179+
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/src/BlocksRuntime
180+
IMPORTED_NO_SONAME
181+
1)
181182

182-
add_dependencies("${DISPATCH_VARIANT_NAME}" "${LIBDISPATCH_VARIANT_NAME}-install")
183-
add_dependencies("${BLOCKS_RUNTIME_VARIANT_NAME}" "${LIBDISPATCH_VARIANT_NAME}-install")
183+
add_dependencies("${DISPATCH_VARIANT_NAME}" "${LIBDISPATCH_VARIANT_NAME}-install")
184+
add_dependencies("${BLOCKS_RUNTIME_VARIANT_NAME}" "${LIBDISPATCH_VARIANT_NAME}-install")
185+
endif()
184186

185-
if(SWIFT_BUILD_STATIC_STDLIB)
187+
if(SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_${sdk}_STATIC_ONLY)
186188
set(LIBDISPATCH_STATIC_VARIANT_NAME "libdispatch-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}-static")
187189
ExternalProject_Add("${LIBDISPATCH_STATIC_VARIANT_NAME}"
188190
SOURCE_DIR

cmake/modules/SwiftConfigureSDK.cmake

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ function(_report_sdk prefix)
1515
message(STATUS " Swift Standard Library Path: ${SWIFT_SDK_${prefix}_LIB_SUBDIR}")
1616
message(STATUS " Threading Package: ${SWIFT_SDK_${prefix}_THREADING_PACKAGE}")
1717

18+
message(STATUS " Static linking supported: ${SWIFT_SDK_${prefix}_STATIC_LINKING_SUPPORTED}")
19+
message(STATUS " Static link only: ${SWIFT_SDK_${prefix}_STATIC_ONLY}")
20+
1821
if("${prefix}" STREQUAL "WINDOWS")
1922
message(STATUS " UCRT Version: ${UCRTVersion}")
2023
message(STATUS " UCRT SDK Path: ${UniversalCRTSdkDir}")
@@ -148,20 +151,23 @@ endfunction()
148151
# This macro attempts to configure a given SDK. When successful, it
149152
# defines a number of variables:
150153
#
151-
# SWIFT_SDK_${prefix}_NAME Display name for the SDK
152-
# SWIFT_SDK_${prefix}_VERSION SDK version number (e.g., 10.9, 7.0)
153-
# SWIFT_SDK_${prefix}_BUILD_NUMBER SDK build number (e.g., 14A389a)
154-
# SWIFT_SDK_${prefix}_DEPLOYMENT_VERSION Deployment version (e.g., 10.9, 7.0)
155-
# SWIFT_SDK_${prefix}_LIB_SUBDIR Library subdir for this SDK
156-
# SWIFT_SDK_${prefix}_TRIPLE_NAME Triple name for this SDK
157-
# SWIFT_SDK_${prefix}_OBJECT_FORMAT The object file format (e.g. MACHO)
158-
# SWIFT_SDK_${prefix}_USE_ISYSROOT Whether to use -isysroot
159-
# SWIFT_SDK_${prefix}_SHARED_LIBRARY_PREFIX Shared library prefix for this SDK (e.g. 'lib')
160-
# SWIFT_SDK_${prefix}_SHARED_LIBRARY_SUFFIX Shared library suffix for this SDK (e.g. 'dylib')
161-
# SWIFT_SDK_${prefix}_ARCHITECTURES Architectures (as a list)
162-
# SWIFT_SDK_${prefix}_IS_SIMULATOR Whether this is a simulator target.
163-
# SWIFT_SDK_${prefix}_ARCH_${ARCH}_TRIPLE Triple name
164-
# SWIFT_SDK_${prefix}_ARCH_${ARCH}_MODULE Module triple name for this SDK
154+
# SWIFT_SDK_${prefix}_NAME Display name for the SDK
155+
# SWIFT_SDK_${prefix}_VERSION SDK version number (e.g., 10.9, 7.0)
156+
# SWIFT_SDK_${prefix}_BUILD_NUMBER SDK build number (e.g., 14A389a)
157+
# SWIFT_SDK_${prefix}_DEPLOYMENT_VERSION Deployment version (e.g., 10.9, 7.0)
158+
# SWIFT_SDK_${prefix}_LIB_SUBDIR Library subdir for this SDK
159+
# SWIFT_SDK_${prefix}_TRIPLE_NAME Triple name for this SDK
160+
# SWIFT_SDK_${prefix}_OBJECT_FORMAT The object file format (e.g. MACHO)
161+
# SWIFT_SDK_${prefix}_USE_ISYSROOT Whether to use -isysroot
162+
# SWIFT_SDK_${prefix}_SHARED_LIBRARY_PREFIX Shared library prefix for this SDK (e.g. 'lib')
163+
# SWIFT_SDK_${prefix}_SHARED_LIBRARY_SUFFIX Shared library suffix for this SDK (e.g. 'dylib')
164+
# SWIFT_SDK_${prefix}_STATIC_LINKING_SUPPORTED Whether static linking is supported for this SDK
165+
# SWIFT_SDK_${prefix}_STATIC_ONLY Whether to build *only* static libraries
166+
167+
# SWIFT_SDK_${prefix}_ARCHITECTURES Architectures (as a list)
168+
# SWIFT_SDK_${prefix}_IS_SIMULATOR Whether this is a simulator target.
169+
# SWIFT_SDK_${prefix}_ARCH_${ARCH}_TRIPLE Triple name
170+
# SWIFT_SDK_${prefix}_ARCH_${ARCH}_MODULE Module triple name for this SDK
165171
macro(configure_sdk_darwin
166172
prefix name deployment_version xcrun_name
167173
triple_name module_name architectures)
@@ -206,6 +212,8 @@ macro(configure_sdk_darwin
206212
set(SWIFT_SDK_${prefix}_STATIC_LIBRARY_SUFFIX ".a")
207213
set(SWIFT_SDK_${prefix}_IMPORT_LIBRARY_PREFIX "")
208214
set(SWIFT_SDK_${prefix}_IMPORT_LIBRARY_SUFFIX "")
215+
set(SWIFT_SDK_${prefix}_STATIC_LINKING_SUPPORTED FALSE)
216+
set(SWIFT_SDK_${prefix}_STATIC_ONLY FALSE)
209217
get_threading_package(${prefix} "darwin" SWIFT_SDK_${prefix}_THREADING_PACKAGE)
210218

211219
set(SWIFT_SDK_${prefix}_ARCHITECTURES ${architectures})
@@ -279,6 +287,7 @@ macro(configure_sdk_unix name architectures)
279287

280288
string(TOUPPER ${name} prefix)
281289
string(TOLOWER ${name} platform)
290+
string(REPLACE "_" "-" platform "${platform}")
282291

283292
set(SWIFT_SDK_${prefix}_NAME "${name}")
284293
set(SWIFT_SDK_${prefix}_LIB_SUBDIR "${platform}")
@@ -310,6 +319,14 @@ macro(configure_sdk_unix name architectures)
310319
endif()
311320
set(SWIFT_SDK_${prefix}_USE_ISYSROOT FALSE)
312321

322+
# Static linking is suported on Linux and WASI
323+
if("${prefix}" STREQUAL "LINUX"
324+
OR "${prefix}" STREQUAL "WASI")
325+
set(SWIFT_SDK_${prefix}_STATIC_LINKING_SUPPORTED TRUE)
326+
else()
327+
set(SWIFT_SDK_${prefix}_STATIC_LINKING_SUPPORTED FALSE)
328+
endif()
329+
313330
# GCC on Linux is usually located under `/usr`.
314331
# However, Ubuntu 20.04 ships with another GCC installation under `/`, which
315332
# does not include libstdc++. Swift build scripts pass `--sysroot=/` to
@@ -464,6 +481,8 @@ macro(configure_sdk_windows name environment architectures)
464481
set(SWIFT_SDK_${prefix}_STATIC_LIBRARY_SUFFIX ".lib")
465482
set(SWIFT_SDK_${prefix}_IMPORT_LIBRARY_PREFIX "")
466483
set(SWIFT_SDK_${prefix}_IMPORT_LIBRARY_SUFFIX ".lib")
484+
set(SWIFT_SDK_${prefix}_STATIC_LINKING_SUPPORTED FALSE)
485+
set(SWIFT_SDK_${prefix}_STATIC_ONLY FALSE)
467486
get_threading_package(${prefix} "win32" SWIFT_SDK_${prefix}_THREADING_PACKAGE)
468487

469488
foreach(arch ${architectures})
@@ -531,6 +550,8 @@ function(configure_target_variant prefix name sdk build_config lib_subdir)
531550
set(SWIFT_VARIANT_${prefix}_STATIC_LIBRARY_SUFFIX ${SWIFT_SDK_${sdk}_STATIC_LIBRARY_SUFFIX})
532551
set(SWIFT_VARIANT_${prefix}_IMPORT_LIBRARY_PREFIX ${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX})
533552
set(SWIFT_VARIANT_${prefix}_IMPORT_LIBRARY_SUFFIX ${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX})
553+
set(SWIFT_VARIANT_${prefix}_STATIC_LINKING_SUPPORTED ${SWIFT_SDK_${sdk}_STATIC_LINKING_SUPPORTED})
554+
set(SWIFT_VARIANT_${prefix}_STATIC_ONLY ${SWIFT_SDK_${sdk}_STATIC_ONLY})
534555
get_threading_package(${prefix} ${SWIFT_SDK_${sdk}_THREADING_PACKAGE} SWIFT_VARIANT_${prefix}_THREADING_PACKAGE)
535556
endfunction()
536557

0 commit comments

Comments
 (0)