Skip to content

Commit 70f9069

Browse files
committed
cmake: Add NO_SWIFTMODULE option to add_swift_target_library()
1 parent 97be02d commit 70f9069

File tree

4 files changed

+36
-8
lines changed

4 files changed

+36
-8
lines changed

stdlib/cmake/modules/AddSwiftStdlib.cmake

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -721,6 +721,8 @@ endfunction()
721721
# [DONT_EMBED_BITCODE]
722722
# [IS_STDLIB]
723723
# [IS_STDLIB_CORE]
724+
# [ONLY_SWIFTMODULE]
725+
# [NO_SWIFTMODULE]
724726
# [IS_SDK_OVERLAY]
725727
# [IS_FRAGILE]
726728
# INSTALL_IN_COMPONENT comp
@@ -742,9 +744,6 @@ endfunction()
742744
# STATIC
743745
# Build a static library.
744746
#
745-
# ONLY_SWIFTMODULE
746-
# Do not build either static or shared, build just the .swiftmodule.
747-
#
748747
# SDK sdk
749748
# SDK to build for.
750749
#
@@ -784,6 +783,12 @@ endfunction()
784783
# IS_STDLIB_CORE
785784
# Compile as the standard library core.
786785
#
786+
# ONLY_SWIFTMODULE
787+
# Do not build either static or shared, build just the .swiftmodule.
788+
#
789+
# NO_SWIFTMODULE
790+
# Only build either static or shared, and skip the .swiftmodule.
791+
#
787792
# IS_SDK_OVERLAY
788793
# Treat the library as a part of the Swift SDK overlay.
789794
#
@@ -811,6 +816,7 @@ function(add_swift_target_library_single target name)
811816
SHARED
812817
STATIC
813818
ONLY_SWIFTMODULE
819+
NO_SWIFTMODULE
814820
NO_LINK_NAME
815821
INSTALL_WITH_SHARED
816822
IS_FRAGILE)
@@ -1032,6 +1038,7 @@ function(add_swift_target_library_single target name)
10321038
${SWIFTLIB_SINGLE_IS_SDK_OVERLAY_keyword}
10331039
${SWIFTLIB_SINGLE_IS_FRAGILE_keyword}
10341040
${SWIFTLIB_SINGLE_ONLY_SWIFTMODULE_keyword}
1041+
${SWIFTLIB_SINGLE_NO_SWIFTMODULE_keyword}
10351042
${embed_bitcode_arg}
10361043
${SWIFTLIB_SINGLE_STATIC_keyword}
10371044
${SWIFTLIB_SINGLE_NO_LINK_NAME_keyword}
@@ -1683,6 +1690,8 @@ endfunction()
16831690
# [INSTALL]
16841691
# [IS_STDLIB]
16851692
# [IS_STDLIB_CORE]
1693+
# [ONLY_SWIFTMODULE]
1694+
# [NO_SWIFTMODULE]
16861695
# [INSTALL_WITH_SHARED]
16871696
# INSTALL_IN_COMPONENT comp
16881697
# DEPLOYMENT_VERSION_OSX version
@@ -1791,6 +1800,12 @@ endfunction()
17911800
# IS_STDLIB_CORE
17921801
# Compile as the Swift standard library core.
17931802
#
1803+
# ONLY_SWIFTMODULE
1804+
# Do not build either static or shared, build just the .swiftmodule.
1805+
#
1806+
# NO_SWIFTMODULE
1807+
# Only build either static or shared, and skip the .swiftmodule.
1808+
#
17941809
# IS_SDK_OVERLAY
17951810
# Treat the library as a part of the Swift SDK overlay.
17961811
#
@@ -1879,6 +1894,8 @@ function(add_swift_target_library name)
18791894
IS_STDLIB_CORE
18801895
IS_SWIFT_ONLY
18811896
NOSWIFTRT
1897+
ONLY_SWIFTMODULE
1898+
NO_SWIFTMODULE
18821899
OBJECT_LIBRARY
18831900
SHARED
18841901
STATIC
@@ -2490,6 +2507,8 @@ function(add_swift_target_library name)
24902507
${SWIFTLIB_IS_STDLIB_CORE_keyword}
24912508
${SWIFTLIB_IS_SDK_OVERLAY_keyword}
24922509
${SWIFTLIB_NOSWIFTRT_keyword}
2510+
${SWIFTLIB_ONLY_SWIFTMODULE_keyword}
2511+
${SWIFTLIB_NO_SWIFTMODULE_keyword}
24932512
DARWIN_INSTALL_NAME_DIR "${SWIFTLIB_DARWIN_INSTALL_NAME_DIR}"
24942513
INSTALL_IN_COMPONENT "${SWIFTLIB_INSTALL_IN_COMPONENT}"
24952514
DEPLOYMENT_VERSION_OSX "${SWIFTLIB_DEPLOYMENT_VERSION_OSX}"

stdlib/cmake/modules/SwiftSource.cmake

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ function(handle_swift_sources
4949
dependency_sibgen_target_out_var_name
5050
sourcesvar externalvar name)
5151
cmake_parse_arguments(SWIFTSOURCES
52-
"IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;NO_LINK_NAME;IS_FRAGILE;ONLY_SWIFTMODULE"
52+
"IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;NO_LINK_NAME;IS_FRAGILE;ONLY_SWIFTMODULE;NO_SWIFTMODULE"
5353
"SDK;ARCHITECTURE;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_OSX;DEPLOYMENT_VERSION_IOS;DEPLOYMENT_VERSION_TVOS;DEPLOYMENT_VERSION_WATCHOS;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING;INSTALL_BINARY_SWIFTMODULE"
5454
"DEPENDS;COMPILE_FLAGS;MODULE_NAME;MODULE_DIR;ENABLE_LTO"
5555
${ARGN})
@@ -66,6 +66,7 @@ function(handle_swift_sources
6666
translate_flag(${SWIFTSOURCES_NO_LINK_NAME} "NO_LINK_NAME" NO_LINK_NAME_arg)
6767
translate_flag(${SWIFTSOURCES_IS_FRAGILE} "IS_FRAGILE" IS_FRAGILE_arg)
6868
translate_flag(${SWIFTSOURCES_ONLY_SWIFTMODULE} "ONLY_SWIFTMODULE" ONLY_SWIFTMODULE_arg)
69+
translate_flag(${SWIFTSOURCES_NO_SWIFTMODULE} "NO_SWIFTMODULE" NO_SWIFTMODULE_arg)
6970
if(DEFINED SWIFTSOURCES_BOOTSTRAPPING)
7071
set(BOOTSTRAPPING_arg "BOOTSTRAPPING" ${SWIFTSOURCES_BOOTSTRAPPING})
7172
endif()
@@ -161,6 +162,7 @@ function(handle_swift_sources
161162
${BOOTSTRAPPING_arg}
162163
${IS_FRAGILE_arg}
163164
${ONLY_SWIFTMODULE_arg}
165+
${NO_SWIFTMODULE_arg}
164166
INSTALL_BINARY_SWIFTMODULE ${SWIFTSOURCES_INSTALL_BINARY_SWIFTMODULE}
165167
INSTALL_IN_COMPONENT "${SWIFTSOURCES_INSTALL_IN_COMPONENT}"
166168
DEPLOYMENT_VERSION_OSX ${SWIFTSOURCES_DEPLOYMENT_VERSION_OSX}
@@ -405,6 +407,8 @@ endfunction()
405407
# [IS_MAIN] # This is an executable, not a library
406408
# [IS_STDLIB]
407409
# [IS_STDLIB_CORE] # This is the core standard library
410+
# [ONLY_SWIFTMODULE] # Emit swiftmodule only, no binary
411+
# [NO_SWIFTMODULE] # Emit binary only, no swiftmodule
408412
# [OPT_FLAGS] # Optimization flags (overrides SWIFT_OPTIMIZE)
409413
# [MODULE_DIR] # Put .swiftmodule, .swiftdoc., and .o
410414
# # into this directory.
@@ -419,7 +423,7 @@ function(_compile_swift_files
419423
dependency_sib_target_out_var_name dependency_sibopt_target_out_var_name
420424
dependency_sibgen_target_out_var_name)
421425
cmake_parse_arguments(SWIFTFILE
422-
"IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;IS_FRAGILE;ONLY_SWIFTMODULE"
426+
"IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;IS_FRAGILE;ONLY_SWIFTMODULE;NO_SWIFTMODULE"
423427
"OUTPUT;MODULE_NAME;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_OSX;DEPLOYMENT_VERSION_IOS;DEPLOYMENT_VERSION_TVOS;DEPLOYMENT_VERSION_WATCHOS;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING;INSTALL_BINARY_SWIFTMODULE"
424428
"SOURCES;FLAGS;DEPENDS;SDK;ARCHITECTURE;OPT_FLAGS;MODULE_DIR"
425429
${ARGN})
@@ -677,6 +681,10 @@ function(_compile_swift_files
677681
get_bootstrapping_path(lib_dir ${SWIFTLIB_DIR} "${SWIFTFILE_BOOTSTRAPPING}")
678682

679683
if(NOT SWIFTFILE_IS_MAIN)
684+
list(APPEND swift_flags "-parse-as-library")
685+
endif()
686+
687+
if(NOT SWIFTFILE_IS_MAIN AND NOT SWIFTFILE_NO_SWIFTMODULE)
680688
# Determine the directory where the module file should be placed.
681689
if(SWIFTFILE_MODULE_DIR)
682690
set(module_dir "${SWIFTFILE_MODULE_DIR}")
@@ -686,8 +694,6 @@ function(_compile_swift_files
686694
message(FATAL_ERROR "Don't know where to put the module files")
687695
endif()
688696

689-
list(APPEND swift_flags "-parse-as-library")
690-
691697
set(module_base "${module_dir}/${SWIFTFILE_MODULE_NAME}")
692698

693699
set(module_dir_static "${SWIFTSTATICLIB_DIR}/${library_subdir}")
@@ -1067,7 +1073,7 @@ function(_compile_swift_files
10671073
#
10681074
# We only build these when we are not producing a main file. We could do this
10691075
# with sib/sibgen, but it is useful for looking at the stdlib.
1070-
if (NOT SWIFTFILE_IS_MAIN)
1076+
if (NOT SWIFTFILE_IS_MAIN AND NOT SWIFTFILE_NO_SWIFTMODULE)
10711077
add_custom_command_target(
10721078
module_dependency_target
10731079
COMMAND

stdlib/toolchain/CompatibilitySpan/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND DEFINED SWIFT_STDLIB_LIBRARY_BUILD_TY
1717
-module-abi-name Swift
1818
-DSPAN_COMPATIBILITY_STUB
1919

20+
NO_SWIFTMODULE
21+
2022
DEPLOYMENT_VERSION_OSX ${COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_OSX}
2123
DEPLOYMENT_VERSION_IOS ${COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_IOS}
2224
DEPLOYMENT_VERSION_TVOS ${COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_TVOS}

validation-test/ParseableInterface/verify_all_overlays.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"SwiftLang",
4949
# swiftCxxStdlib uses `-module-interface-preserve-types-as-written`
5050
"CxxStdlib",
51+
"CompatibilitySpan",
5152
]:
5253
continue
5354

0 commit comments

Comments
 (0)