Skip to content

Commit 54e97de

Browse files
authored
Merge pull request #71848 from al45tair/eng/PR-123508245
[Stdlib][Build] Fix the standard library build for fully static Linux.
2 parents f6bdbbd + 0fa5e65 commit 54e97de

File tree

11 files changed

+65
-59
lines changed

11 files changed

+65
-59
lines changed

stdlib/private/SwiftPrivate/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ add_swift_target_library(swiftSwiftPrivate ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} I
2828
SWIFT_MODULE_DEPENDS_MACCATALYST ${swift_swiftprivate_darwin_depencencies}
2929
SWIFT_MODULE_DEPENDS_FREESTANDING "${SWIFT_FREESTANDING_TEST_DEPENDENCIES}"
3030
SWIFT_MODULE_DEPENDS_LINUX Glibc
31+
SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl
3132
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
3233
SWIFT_MODULE_DEPENDS_OPENBSD Glibc
3334
SWIFT_MODULE_DEPENDS_CYGWIN Glibc

stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ add_swift_target_library(swiftSwiftPrivateLibcExtras ${SWIFT_STDLIB_LIBRARY_BUIL
3939
SWIFT_MODULE_DEPENDS_MACCATALYST ${swift_private_libc_extras_darwin_depencencies}
4040
SWIFT_MODULE_DEPENDS_FREESTANDING "${SWIFT_FREESTANDING_TEST_DEPENDENCIES}"
4141
SWIFT_MODULE_DEPENDS_LINUX Glibc
42+
SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl
4243
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
4344
SWIFT_MODULE_DEPENDS_OPENBSD Glibc
4445
SWIFT_MODULE_DEPENDS_CYGWIN Glibc

stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ add_swift_target_library(swiftSwiftPrivateThreadExtras ${SWIFT_STDLIB_LIBRARY_BU
2020
SWIFT_MODULE_DEPENDS_MACCATALYST ${swift_private_thread_extras_darwin_depencencies}
2121
SWIFT_MODULE_DEPENDS_FREESTANDING "${SWIFT_FREESTANDING_TEST_DEPENDENCIES}"
2222
SWIFT_MODULE_DEPENDS_LINUX Glibc
23+
SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl
2324
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
2425
SWIFT_MODULE_DEPENDS_OPENBSD Glibc
2526
SWIFT_MODULE_DEPENDS_CYGWIN Glibc

stdlib/private/SwiftReflectionTest/CMakeLists.txt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,20 @@ if (SWIFT_INCLUDE_TESTS AND SWIFT_BUILD_DYNAMIC_STDLIB)
1515
SWIFT_MODULE_DEPENDS_WATCHOS ${swift_reflection_test_darwin_depencencies}
1616
SWIFT_MODULE_DEPENDS_XROS ${swift_reflection_test_darwin_depencencies}
1717
SWIFT_MODULE_DEPENDS_LINUX Glibc
18+
SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl
1819
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
1920
SWIFT_MODULE_DEPENDS_OPENBSD Glibc
2021
SWIFT_MODULE_DEPENDS_WINDOWS CRT
2122
INSTALL_IN_COMPONENT stdlib-experimental
22-
DARWIN_INSTALL_NAME_DIR "${SWIFT_DARWIN_STDLIB_PRIVATE_INSTALL_NAME_DIR}")
23+
DARWIN_INSTALL_NAME_DIR "${SWIFT_DARWIN_STDLIB_PRIVATE_INSTALL_NAME_DIR}"
24+
25+
TARGET_SDKS NOT LINUX_STATIC)
2326

2427
foreach(SDK ${SWIFT_SDKS})
28+
if ("${SDK}" STREQUAL "LINUX_STATIC")
29+
continue()
30+
endif()
31+
2532
foreach(ARCH ${SWIFT_SDK_${SDK}_ARCHITECTURES})
2633
set(VARIANT_SUFFIX "-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-${ARCH}")
2734
add_dependencies("swiftSwiftReflectionTest${VARIANT_SUFFIX}"

stdlib/public/Cxx/cxxshim/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ foreach(sdk ${SWIFT_SDKS})
55

66
add_custom_command(OUTPUT ${module_dir}
77
COMMAND ${CMAKE_COMMAND} "-E" "make_directory" "${module_dir}")
8-
if(SWIFT_BUILD_STATIC_STDLIB)
8+
if(SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_${sdk}_STATIC_ONLY)
99
add_custom_command(OUTPUT ${module_dir_static}
1010
COMMAND ${CMAKE_COMMAND} "-E" "make_directory" "${module_dir_static}")
1111
endif()
@@ -18,7 +18,7 @@ foreach(sdk ${SWIFT_SDKS})
1818
COMMENT "Copying ${source} to ${module_dir}")
1919
list(APPEND outputs "${module_dir}/${source}")
2020

21-
if(SWIFT_BUILD_STATIC_STDLIB)
21+
if(SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_${sdk}_STATIC_ONLY)
2222
add_custom_command(OUTPUT ${module_dir_static}/${source}
2323
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${source}
2424
COMMAND ${CMAKE_COMMAND} "-E" "copy_if_different" "${CMAKE_CURRENT_SOURCE_DIR}/${source}" "${module_dir_static}/${source}"
@@ -27,7 +27,7 @@ foreach(sdk ${SWIFT_SDKS})
2727
endif()
2828
endforeach()
2929
list(APPEND outputs ${module_dir})
30-
if(SWIFT_BUILD_STATIC_STDLIB)
30+
if(SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_${sdk}_STATIC_ONLY)
3131
list(APPEND outputs ${module_dir_static})
3232
endif()
3333

@@ -40,7 +40,7 @@ foreach(sdk ${SWIFT_SDKS})
4040
swift_install_in_component(FILES libcxxshim.modulemap libcxxshim.h libcxxstdlibshim.h
4141
DESTINATION "lib/swift/${SWIFT_SDK_${sdk}_LIB_SUBDIR}"
4242
COMPONENT compiler)
43-
if(SWIFT_BUILD_STATIC_STDLIB)
43+
if(SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_${sdk}_STATIC_ONLY)
4444
swift_install_in_component(FILES libcxxshim.modulemap libcxxshim.h libcxxstdlibshim.h
4545
DESTINATION "lib/swift_static/${SWIFT_SDK_${sdk}_LIB_SUBDIR}"
4646
COMPONENT compiler)

stdlib/public/Cxx/libstdcxx/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ foreach(sdk ${SWIFT_SDKS})
3838
list(APPEND libstdcxx_modulemap_target_list ${copy_libstdcxx_header})
3939
add_dependencies(swift-stdlib-${SWIFT_SDK_${sdk}_LIB_SUBDIR} ${copy_libstdcxx_header})
4040

41-
if(SWIFT_BUILD_STATIC_STDLIB)
41+
if(SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_${sdk}_STATIC_ONLY)
4242
add_custom_command_target(
4343
copy_libstdcxx_modulemap_static
4444
COMMAND
@@ -73,7 +73,7 @@ foreach(sdk ${SWIFT_SDKS})
7373
DESTINATION "lib/swift/${SWIFT_SDK_${sdk}_LIB_SUBDIR}"
7474
COMPONENT sdk-overlay)
7575

76-
if(SWIFT_BUILD_STATIC_STDLIB)
76+
if(SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_${sdk}_STATIC_ONLY)
7777
swift_install_in_component(FILES "${libstdcxx_modulemap_out_static}"
7878
DESTINATION "lib/swift_static/${SWIFT_SDK_${sdk}_LIB_SUBDIR}"
7979
COMPONENT sdk-overlay)

stdlib/public/Differentiation/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ add_swift_target_library(swift_Differentiation ${SWIFT_STDLIB_LIBRARY_BUILD_TYPE
4343
SWIFT_MODULE_DEPENDS_WATCHOS ${swiftDifferentiationDarwinDependencies}
4444
SWIFT_MODULE_DEPENDS_XROS ${swiftDifferentiationDarwinDependencies}
4545
SWIFT_MODULE_DEPENDS_LINUX Glibc
46+
SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl
4647
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
4748
SWIFT_MODULE_DEPENDS_OPENBSD Glibc
4849
SWIFT_MODULE_DEPENDS_CYGWIN Glibc

stdlib/public/SwiftRemoteMirror/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ add_swift_target_library(swiftRemoteMirror
1616
SWIFT_COMPILE_FLAGS ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
1717
DARWIN_INSTALL_NAME_DIR "${SWIFTLIB_DARWIN_INSTALL_NAME_DIR}"
1818
INSTALL_IN_COMPONENT
19-
swift-remote-mirror)
19+
swift-remote-mirror
20+
21+
TARGET_SDKS NOT LINUX_STATIC)

stdlib/public/SwiftShims/swift/shims/CMakeLists.txt

Lines changed: 39 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,9 @@ add_custom_command(
3434
OUTPUT "${output_dir}"
3535
COMMAND ${CMAKE_COMMAND} "-E" "make_directory" "${output_dir}")
3636

37-
if(SWIFT_BUILD_STATIC_STDLIB)
38-
add_custom_command(
39-
OUTPUT "${output_dir_static}"
40-
COMMAND ${CMAKE_COMMAND} "-E" "make_directory" "${output_dir_static}")
41-
endif()
37+
add_custom_command(
38+
OUTPUT "${output_dir_static}"
39+
COMMAND ${CMAKE_COMMAND} "-E" "make_directory" "${output_dir_static}")
4240

4341
set(outputs)
4442
foreach(input ${sources})
@@ -52,17 +50,15 @@ foreach(input ${sources})
5250
COMMENT "Copying ${input} to ${output_dir}")
5351
list(APPEND outputs "${output_dir}/${input}")
5452

55-
if(SWIFT_BUILD_STATIC_STDLIB)
56-
add_custom_command(
57-
OUTPUT "${output_dir_static}/${input}"
58-
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${input}"
59-
COMMAND
60-
"${CMAKE_COMMAND}" "-E" "copy_if_different"
61-
"${CMAKE_CURRENT_SOURCE_DIR}/${input}"
62-
"${output_dir_static}/${input}"
63-
COMMENT "Copying ${input} to ${output_dir_static}")
64-
list(APPEND outputs "${output_dir_static}/${input}")
65-
endif()
53+
add_custom_command(
54+
OUTPUT "${output_dir_static}/${input}"
55+
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${input}"
56+
COMMAND
57+
"${CMAKE_COMMAND}" "-E" "copy_if_different"
58+
"${CMAKE_CURRENT_SOURCE_DIR}/${input}"
59+
"${output_dir_static}/${input}"
60+
COMMENT "Copying ${input} to ${output_dir_static}")
61+
list(APPEND outputs "${output_dir_static}/${input}")
6662
endforeach()
6763
if (SWIFT_STDLIB_INSTALL_PARENT_MODULE_FOR_SHIMS)
6864
# Copy the module map into the parent directory. Using "parent.modulemap"
@@ -143,21 +139,19 @@ add_custom_command_target(unused_var
143139

144140
add_dependencies(copy_shim_headers symlink_clang_headers)
145141

146-
if(SWIFT_BUILD_STATIC_STDLIB)
147-
add_custom_command_target(unused_var
148-
COMMAND
149-
"${CMAKE_COMMAND}" "-E" "make_directory" "${SWIFTSTATICLIB_DIR}"
150-
COMMAND
151-
"${CMAKE_COMMAND}" "-E" "${SWIFT_COPY_OR_SYMLINK_DIR}"
152-
"${clang_headers_location}"
153-
"${SWIFTSTATICLIB_DIR}/clang"
142+
add_custom_command_target(unused_var
143+
COMMAND
144+
"${CMAKE_COMMAND}" "-E" "make_directory" "${SWIFTSTATICLIB_DIR}"
145+
COMMAND
146+
"${CMAKE_COMMAND}" "-E" "${SWIFT_COPY_OR_SYMLINK_DIR}"
147+
"${clang_headers_location}"
148+
"${SWIFTSTATICLIB_DIR}/clang"
154149

155-
CUSTOM_TARGET_NAME "symlink_clang_headers_static"
156-
OUTPUT "${SWIFTSTATICLIB_DIR}/clang"
157-
COMMENT "Symlinking Clang resource headers into ${SWIFTSTATICLIB_DIR}/clang")
150+
CUSTOM_TARGET_NAME "symlink_clang_headers_static"
151+
OUTPUT "${SWIFTSTATICLIB_DIR}/clang"
152+
COMMENT "Symlinking Clang resource headers into ${SWIFTSTATICLIB_DIR}/clang")
158153

159-
add_dependencies(copy_shim_headers symlink_clang_headers_static)
160-
endif()
154+
add_dependencies(copy_shim_headers symlink_clang_headers_static)
161155

162156
if(NOT SWIFT_BUILT_STANDALONE)
163157
if(TARGET clang-resource-headers) # LLVM > 8
@@ -227,15 +221,15 @@ if (SWIFT_STDLIB_INSTALL_PARENT_MODULE_FOR_SHIMS)
227221
COMPONENT stdlib)
228222
endif()
229223

230-
if(SWIFT_BUILD_STATIC_STDLIB)
231-
swift_install_in_component(FILES ${sources}
232-
DESTINATION "lib/swift_static/shims"
224+
if (SWIFT_BUILD_STATIC_STDLIB)
225+
swift_install_in_component(FILES ${sources}
226+
DESTINATION "lib/swift_static/shims"
227+
COMPONENT stdlib)
228+
if (SWIFT_STDLIB_INSTALL_PARENT_MODULE_FOR_SHIMS)
229+
swift_install_in_component(FILES "${output_dir_static}/../module.modulemap"
230+
DESTINATION "lib/swift_static"
233231
COMPONENT stdlib)
234-
if (SWIFT_STDLIB_INSTALL_PARENT_MODULE_FOR_SHIMS)
235-
swift_install_in_component(FILES "${output_dir_static}/../module.modulemap"
236-
DESTINATION "lib/swift_static"
237-
COMPONENT stdlib)
238-
endif()
232+
endif()
239233
endif()
240234

241235
# Install Clang headers under the Swift library so that an installed Swift's
@@ -245,12 +239,10 @@ swift_install_in_component(DIRECTORY "${clang_headers_location}/"
245239
COMPONENT clang-builtin-headers
246240
PATTERN "*.h")
247241

248-
if(SWIFT_BUILD_STATIC_STDLIB)
249-
swift_install_in_component(DIRECTORY "${clang_headers_location}/"
250-
DESTINATION "lib/swift_static/clang"
251-
COMPONENT clang-builtin-headers
252-
PATTERN "*.h")
253-
endif()
242+
swift_install_in_component(DIRECTORY "${clang_headers_location}/"
243+
DESTINATION "lib/swift_static/clang"
244+
COMPONENT clang-builtin-headers
245+
PATTERN "*.h")
254246

255247
if(SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER OR SWIFT_PREBUILT_CLANG)
256248
# This will still link against the Swift-forked clang headers if the Swift
@@ -268,12 +260,10 @@ swift_install_symlink_component(clang-resource-dir-symlink
268260
TARGET ${SWIFT_CLANG_RESOURCE_DIR_SYMLINK_INSTALL_TARGET}
269261
DESTINATION "lib/swift")
270262

271-
if(SWIFT_BUILD_STATIC_STDLIB)
272-
swift_install_symlink_component(clang-resource-dir-symlink
273-
LINK_NAME clang
274-
TARGET ${SWIFT_CLANG_RESOURCE_DIR_SYMLINK_INSTALL_TARGET}
275-
DESTINATION "lib/swift_static")
276-
endif()
263+
swift_install_symlink_component(clang-resource-dir-symlink
264+
LINK_NAME clang
265+
TARGET ${SWIFT_CLANG_RESOURCE_DIR_SYMLINK_INSTALL_TARGET}
266+
DESTINATION "lib/swift_static")
277267

278268
# Possibly install Clang headers under Clang's resource directory in case we
279269
# need to use a different version of the headers than the installed Clang. This

stdlib/public/SwiftShims/swift/shims/LibcShims.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ SWIFT_READONLY
6161
static inline int _swift_stdlib_memcmp(const void *s1, const void *s2,
6262
__swift_size_t n) {
6363
// FIXME: Is there a way to identify Glibc specifically?
64-
#if defined(__gnu_linux__) || defined(__ANDROID__)
64+
#if defined(__gnu_linux__) || defined(__ANDROID__) || defined(__musl__)
6565
extern int memcmp(const void * _Nonnull, const void * _Nonnull, __swift_size_t);
6666
#else
6767
extern int memcmp(const void * _Null_unspecified, const void * _Null_unspecified, __swift_size_t);

stdlib/tools/swift-reflection-test/CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ add_swift_target_executable(swift-reflection-test BUILD_WITH_STDLIB
33
overrides.c
44
LINK_LIBRARIES
55
swiftRemoteMirror
6-
swiftRemoteInspection)
6+
swiftRemoteInspection
7+
8+
TARGET_SDKS NOT LINUX_STATIC)
9+
710
# NOTE(compnerd) since _WINDLL has no impact on non-Windows targets,
811
# we just spam it on all the targets for simplicity due to the build
912
# structure of swift. This will make the global variable imported,

0 commit comments

Comments
 (0)