mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
cmake: Add NO_SWIFTMODULE option to add_swift_target_library()
This commit is contained in:
@@ -721,6 +721,8 @@ endfunction()
|
||||
# [DONT_EMBED_BITCODE]
|
||||
# [IS_STDLIB]
|
||||
# [IS_STDLIB_CORE]
|
||||
# [ONLY_SWIFTMODULE]
|
||||
# [NO_SWIFTMODULE]
|
||||
# [IS_SDK_OVERLAY]
|
||||
# [IS_FRAGILE]
|
||||
# INSTALL_IN_COMPONENT comp
|
||||
@@ -742,9 +744,6 @@ endfunction()
|
||||
# STATIC
|
||||
# Build a static library.
|
||||
#
|
||||
# ONLY_SWIFTMODULE
|
||||
# Do not build either static or shared, build just the .swiftmodule.
|
||||
#
|
||||
# SDK sdk
|
||||
# SDK to build for.
|
||||
#
|
||||
@@ -784,6 +783,12 @@ endfunction()
|
||||
# IS_STDLIB_CORE
|
||||
# Compile as the standard library core.
|
||||
#
|
||||
# ONLY_SWIFTMODULE
|
||||
# Do not build either static or shared, build just the .swiftmodule.
|
||||
#
|
||||
# NO_SWIFTMODULE
|
||||
# Only build either static or shared, and skip the .swiftmodule.
|
||||
#
|
||||
# IS_SDK_OVERLAY
|
||||
# Treat the library as a part of the Swift SDK overlay.
|
||||
#
|
||||
@@ -811,6 +816,7 @@ function(add_swift_target_library_single target name)
|
||||
SHARED
|
||||
STATIC
|
||||
ONLY_SWIFTMODULE
|
||||
NO_SWIFTMODULE
|
||||
NO_LINK_NAME
|
||||
INSTALL_WITH_SHARED
|
||||
IS_FRAGILE)
|
||||
@@ -1032,6 +1038,7 @@ function(add_swift_target_library_single target name)
|
||||
${SWIFTLIB_SINGLE_IS_SDK_OVERLAY_keyword}
|
||||
${SWIFTLIB_SINGLE_IS_FRAGILE_keyword}
|
||||
${SWIFTLIB_SINGLE_ONLY_SWIFTMODULE_keyword}
|
||||
${SWIFTLIB_SINGLE_NO_SWIFTMODULE_keyword}
|
||||
${embed_bitcode_arg}
|
||||
${SWIFTLIB_SINGLE_STATIC_keyword}
|
||||
${SWIFTLIB_SINGLE_NO_LINK_NAME_keyword}
|
||||
@@ -1683,6 +1690,8 @@ endfunction()
|
||||
# [INSTALL]
|
||||
# [IS_STDLIB]
|
||||
# [IS_STDLIB_CORE]
|
||||
# [ONLY_SWIFTMODULE]
|
||||
# [NO_SWIFTMODULE]
|
||||
# [INSTALL_WITH_SHARED]
|
||||
# INSTALL_IN_COMPONENT comp
|
||||
# DEPLOYMENT_VERSION_OSX version
|
||||
@@ -1791,6 +1800,12 @@ endfunction()
|
||||
# IS_STDLIB_CORE
|
||||
# Compile as the Swift standard library core.
|
||||
#
|
||||
# ONLY_SWIFTMODULE
|
||||
# Do not build either static or shared, build just the .swiftmodule.
|
||||
#
|
||||
# NO_SWIFTMODULE
|
||||
# Only build either static or shared, and skip the .swiftmodule.
|
||||
#
|
||||
# IS_SDK_OVERLAY
|
||||
# Treat the library as a part of the Swift SDK overlay.
|
||||
#
|
||||
@@ -1879,6 +1894,8 @@ function(add_swift_target_library name)
|
||||
IS_STDLIB_CORE
|
||||
IS_SWIFT_ONLY
|
||||
NOSWIFTRT
|
||||
ONLY_SWIFTMODULE
|
||||
NO_SWIFTMODULE
|
||||
OBJECT_LIBRARY
|
||||
SHARED
|
||||
STATIC
|
||||
@@ -2490,6 +2507,8 @@ function(add_swift_target_library name)
|
||||
${SWIFTLIB_IS_STDLIB_CORE_keyword}
|
||||
${SWIFTLIB_IS_SDK_OVERLAY_keyword}
|
||||
${SWIFTLIB_NOSWIFTRT_keyword}
|
||||
${SWIFTLIB_ONLY_SWIFTMODULE_keyword}
|
||||
${SWIFTLIB_NO_SWIFTMODULE_keyword}
|
||||
DARWIN_INSTALL_NAME_DIR "${SWIFTLIB_DARWIN_INSTALL_NAME_DIR}"
|
||||
INSTALL_IN_COMPONENT "${SWIFTLIB_INSTALL_IN_COMPONENT}"
|
||||
DEPLOYMENT_VERSION_OSX "${SWIFTLIB_DEPLOYMENT_VERSION_OSX}"
|
||||
|
||||
@@ -49,7 +49,7 @@ function(handle_swift_sources
|
||||
dependency_sibgen_target_out_var_name
|
||||
sourcesvar externalvar name)
|
||||
cmake_parse_arguments(SWIFTSOURCES
|
||||
"IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;NO_LINK_NAME;IS_FRAGILE;ONLY_SWIFTMODULE"
|
||||
"IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;NO_LINK_NAME;IS_FRAGILE;ONLY_SWIFTMODULE;NO_SWIFTMODULE"
|
||||
"SDK;ARCHITECTURE;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_OSX;DEPLOYMENT_VERSION_IOS;DEPLOYMENT_VERSION_TVOS;DEPLOYMENT_VERSION_WATCHOS;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING;INSTALL_BINARY_SWIFTMODULE"
|
||||
"DEPENDS;COMPILE_FLAGS;MODULE_NAME;MODULE_DIR;ENABLE_LTO"
|
||||
${ARGN})
|
||||
@@ -66,6 +66,7 @@ function(handle_swift_sources
|
||||
translate_flag(${SWIFTSOURCES_NO_LINK_NAME} "NO_LINK_NAME" NO_LINK_NAME_arg)
|
||||
translate_flag(${SWIFTSOURCES_IS_FRAGILE} "IS_FRAGILE" IS_FRAGILE_arg)
|
||||
translate_flag(${SWIFTSOURCES_ONLY_SWIFTMODULE} "ONLY_SWIFTMODULE" ONLY_SWIFTMODULE_arg)
|
||||
translate_flag(${SWIFTSOURCES_NO_SWIFTMODULE} "NO_SWIFTMODULE" NO_SWIFTMODULE_arg)
|
||||
if(DEFINED SWIFTSOURCES_BOOTSTRAPPING)
|
||||
set(BOOTSTRAPPING_arg "BOOTSTRAPPING" ${SWIFTSOURCES_BOOTSTRAPPING})
|
||||
endif()
|
||||
@@ -161,6 +162,7 @@ function(handle_swift_sources
|
||||
${BOOTSTRAPPING_arg}
|
||||
${IS_FRAGILE_arg}
|
||||
${ONLY_SWIFTMODULE_arg}
|
||||
${NO_SWIFTMODULE_arg}
|
||||
INSTALL_BINARY_SWIFTMODULE ${SWIFTSOURCES_INSTALL_BINARY_SWIFTMODULE}
|
||||
INSTALL_IN_COMPONENT "${SWIFTSOURCES_INSTALL_IN_COMPONENT}"
|
||||
DEPLOYMENT_VERSION_OSX ${SWIFTSOURCES_DEPLOYMENT_VERSION_OSX}
|
||||
@@ -405,6 +407,8 @@ endfunction()
|
||||
# [IS_MAIN] # This is an executable, not a library
|
||||
# [IS_STDLIB]
|
||||
# [IS_STDLIB_CORE] # This is the core standard library
|
||||
# [ONLY_SWIFTMODULE] # Emit swiftmodule only, no binary
|
||||
# [NO_SWIFTMODULE] # Emit binary only, no swiftmodule
|
||||
# [OPT_FLAGS] # Optimization flags (overrides SWIFT_OPTIMIZE)
|
||||
# [MODULE_DIR] # Put .swiftmodule, .swiftdoc., and .o
|
||||
# # into this directory.
|
||||
@@ -419,7 +423,7 @@ function(_compile_swift_files
|
||||
dependency_sib_target_out_var_name dependency_sibopt_target_out_var_name
|
||||
dependency_sibgen_target_out_var_name)
|
||||
cmake_parse_arguments(SWIFTFILE
|
||||
"IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;IS_FRAGILE;ONLY_SWIFTMODULE"
|
||||
"IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;IS_FRAGILE;ONLY_SWIFTMODULE;NO_SWIFTMODULE"
|
||||
"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"
|
||||
"SOURCES;FLAGS;DEPENDS;SDK;ARCHITECTURE;OPT_FLAGS;MODULE_DIR"
|
||||
${ARGN})
|
||||
@@ -678,6 +682,10 @@ function(_compile_swift_files
|
||||
get_bootstrapping_path(lib_dir ${SWIFTLIB_DIR} "${SWIFTFILE_BOOTSTRAPPING}")
|
||||
|
||||
if(NOT SWIFTFILE_IS_MAIN)
|
||||
list(APPEND swift_flags "-parse-as-library")
|
||||
endif()
|
||||
|
||||
if(NOT SWIFTFILE_IS_MAIN AND NOT SWIFTFILE_NO_SWIFTMODULE)
|
||||
# Determine the directory where the module file should be placed.
|
||||
if(SWIFTFILE_MODULE_DIR)
|
||||
set(module_dir "${SWIFTFILE_MODULE_DIR}")
|
||||
@@ -687,8 +695,6 @@ function(_compile_swift_files
|
||||
message(FATAL_ERROR "Don't know where to put the module files")
|
||||
endif()
|
||||
|
||||
list(APPEND swift_flags "-parse-as-library")
|
||||
|
||||
set(module_base "${module_dir}/${SWIFTFILE_MODULE_NAME}")
|
||||
|
||||
set(module_dir_static "${SWIFTSTATICLIB_DIR}/${library_subdir}")
|
||||
@@ -1068,7 +1074,7 @@ function(_compile_swift_files
|
||||
#
|
||||
# We only build these when we are not producing a main file. We could do this
|
||||
# with sib/sibgen, but it is useful for looking at the stdlib.
|
||||
if (NOT SWIFTFILE_IS_MAIN)
|
||||
if (NOT SWIFTFILE_IS_MAIN AND NOT SWIFTFILE_NO_SWIFTMODULE)
|
||||
add_custom_command_target(
|
||||
module_dependency_target
|
||||
COMMAND
|
||||
|
||||
@@ -17,6 +17,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND DEFINED SWIFT_STDLIB_LIBRARY_BUILD_TY
|
||||
-module-abi-name Swift
|
||||
-DSPAN_COMPATIBILITY_STUB
|
||||
|
||||
NO_SWIFTMODULE
|
||||
|
||||
DEPLOYMENT_VERSION_OSX ${COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_OSX}
|
||||
DEPLOYMENT_VERSION_IOS ${COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_IOS}
|
||||
DEPLOYMENT_VERSION_TVOS ${COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_TVOS}
|
||||
|
||||
@@ -48,6 +48,7 @@ for filename in os.listdir(sdk_overlay_dir):
|
||||
"SwiftLang",
|
||||
# swiftCxxStdlib uses `-module-interface-preserve-types-as-written`
|
||||
"CxxStdlib",
|
||||
"CompatibilitySpan",
|
||||
]:
|
||||
continue
|
||||
|
||||
|
||||
Reference in New Issue
Block a user