diff --git a/stdlib/cmake/modules/AddSwiftStdlib.cmake b/stdlib/cmake/modules/AddSwiftStdlib.cmake index 225894a12f0ab..ba6d9eb4547cd 100644 --- a/stdlib/cmake/modules/AddSwiftStdlib.cmake +++ b/stdlib/cmake/modules/AddSwiftStdlib.cmake @@ -791,7 +791,8 @@ function(add_swift_target_library_single target name) BACK_DEPLOYMENT_LIBRARY ENABLE_LTO MODULE_DIR - BOOTSTRAPPING) + BOOTSTRAPPING + INSTALL_BINARY_SWIFTMODULE) set(SWIFTLIB_SINGLE_multiple_parameter_options C_COMPILE_FLAGS DEPENDS @@ -852,6 +853,10 @@ function(add_swift_target_library_single target name) "Either SHARED, STATIC, or OBJECT_LIBRARY must be specified") endif() + if(NOT DEFINED SWIFTLIB_INSTALL_BINARY_SWIFTMODULE) + set(SWIFTLIB_INSTALL_BINARY_SWIFTMODULE TRUE) + endif() + # Determine the subdirectory where this library will be installed. set(SWIFTLIB_SINGLE_SUBDIR "${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}/${SWIFTLIB_SINGLE_ARCHITECTURE}") @@ -1010,7 +1015,8 @@ function(add_swift_target_library_single target name) DEPLOYMENT_VERSION_TVOS ${SWIFTLIB_SINGLE_DEPLOYMENT_VERSION_TVOS} DEPLOYMENT_VERSION_WATCHOS ${SWIFTLIB_SINGLE_DEPLOYMENT_VERSION_WATCHOS} MACCATALYST_BUILD_FLAVOR "${SWIFTLIB_SINGLE_MACCATALYST_BUILD_FLAVOR}" - ${BOOTSTRAPPING_arg}) + ${BOOTSTRAPPING_arg} + INSTALL_BINARY_SWIFTMODULE ${SWIFTLIB_INSTALL_BINARY_SWIFTMODULE}) add_swift_source_group("${SWIFTLIB_SINGLE_EXTERNAL_SOURCES}") # If there were any swift sources, then a .swiftmodule may have been created. @@ -1801,6 +1807,7 @@ function(add_swift_target_library name) DEPLOYMENT_VERSION_TVOS DEPLOYMENT_VERSION_WATCHOS INSTALL_IN_COMPONENT + INSTALL_BINARY_SWIFTMODULE DARWIN_INSTALL_NAME_DIR DEPLOYMENT_VERSION_MACCATALYST MACCATALYST_BUILD_FLAVOR @@ -1925,6 +1932,10 @@ function(add_swift_target_library name) list(APPEND SWIFTLIB_SWIFT_COMPILE_FLAGS "-Xfrontend;-enable-lexical-lifetimes=false") endif() + if(NOT DEFINED SWIFTLIB_INSTALL_BINARY_SWIFTMODULE) + set(SWIFTLIB_INSTALL_BINARY_SWIFTMODULE TRUE) + endif() + if(NOT SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER AND NOT BUILD_STANDALONE AND NOT SWIFT_PREBUILT_CLANG AND NOT SWIFTLIB_IS_SWIFT_ONLY) list(APPEND SWIFTLIB_DEPENDS clang) @@ -2320,6 +2331,7 @@ function(add_swift_target_library name) ENABLE_LTO "${SWIFT_STDLIB_ENABLE_LTO}" GYB_SOURCES ${SWIFTLIB_GYB_SOURCES} PREFIX_INCLUDE_DIRS ${SWIFTLIB_PREFIX_INCLUDE_DIRS} + INSTALL_BINARY_SWIFTMODULE ${SWIFTLIB_INSTALL_BINARY_SWIFTMODULE} ) if(NOT SWIFT_BUILT_STANDALONE AND NOT "${CMAKE_C_COMPILER_ID}" MATCHES "Clang") add_dependencies(${VARIANT_NAME} clang) diff --git a/stdlib/cmake/modules/SwiftSource.cmake b/stdlib/cmake/modules/SwiftSource.cmake index ea481d470ce63..ded0f13f42199 100644 --- a/stdlib/cmake/modules/SwiftSource.cmake +++ b/stdlib/cmake/modules/SwiftSource.cmake @@ -50,7 +50,7 @@ function(handle_swift_sources 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" - "SDK;ARCHITECTURE;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_OSX;DEPLOYMENT_VERSION_IOS;DEPLOYMENT_VERSION_TVOS;DEPLOYMENT_VERSION_WATCHOS;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING" + "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}) translate_flag(${SWIFTSOURCES_IS_MAIN} "IS_MAIN" IS_MAIN_arg) @@ -74,6 +74,10 @@ function(handle_swift_sources set(SWIFTSOURCES_INSTALL_IN_COMPONENT never_install) endif() + if(NOT DEFINED SWIFTSOURCES_INSTALL_BINARY_SWIFTMODULE) + set(SWIFTSOURCES_INSTALL_BINARY_SWIFTMODULE TRUE) + endif() + # Check arguments. precondition(SWIFTSOURCES_SDK "Should specify an SDK") precondition(SWIFTSOURCES_ARCHITECTURE "Should specify an architecture") @@ -157,6 +161,7 @@ function(handle_swift_sources ${BOOTSTRAPPING_arg} ${IS_FRAGILE_arg} ${ONLY_SWIFTMODULE_arg} + INSTALL_BINARY_SWIFTMODULE ${SWIFTSOURCES_INSTALL_BINARY_SWIFTMODULE} INSTALL_IN_COMPONENT "${SWIFTSOURCES_INSTALL_IN_COMPONENT}" DEPLOYMENT_VERSION_OSX ${SWIFTSOURCES_DEPLOYMENT_VERSION_OSX} DEPLOYMENT_VERSION_IOS ${SWIFTSOURCES_DEPLOYMENT_VERSION_IOS} @@ -411,10 +416,14 @@ function(_compile_swift_files 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" - "OUTPUT;MODULE_NAME;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_OSX;DEPLOYMENT_VERSION_IOS;DEPLOYMENT_VERSION_TVOS;DEPLOYMENT_VERSION_WATCHOS;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING" + "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}) + if(NOT DEFINED SWIFTFILE_INSTALL_BINARY_SWIFTMODULE) + set(SWIFTFILE_INSTALL_BINARY_SWIFTMODULE TRUE) + endif() + # Check arguments. list(LENGTH SWIFTFILE_OUTPUT num_outputs) list(GET SWIFTFILE_OUTPUT 0 first_output) @@ -723,20 +732,11 @@ function(_compile_swift_files list(APPEND module_outputs "${interface_file}" "${private_interface_file}") endif() - set(optional_arg) - if(SWIFTFILE_SDK IN_LIST SWIFT_DARWIN_PLATFORMS OR - SWIFTFILE_SDK STREQUAL "MACCATALYST") - # Allow installation of stdlib without building all variants on Darwin. - set(optional_arg "OPTIONAL") - endif() - - swift_install_in_component(DIRECTORY "${specific_module_dir}" - DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${library_subdir}" - COMPONENT "${SWIFTFILE_INSTALL_IN_COMPONENT}") - if(SWIFTFILE_STATIC) - swift_install_in_component(DIRECTORY "${specific_module_dir_static}" - DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift_static/${library_subdir}" - COMPONENT "${SWIFTFILE_INSTALL_IN_COMPONENT}") + set(exclude_binary_swiftmodule_installation_args "") + if(NOT SWIFTFILE_INSTALL_BINARY_SWIFTMODULE) + list(APPEND + exclude_binary_swiftmodule_installation_args + "REGEX" "${SWIFTFILE_MODULE_NAME}.swiftmodule/[^/]*\\.swiftmodule$" EXCLUDE) endif() # macCatalyst zippered module setup @@ -780,7 +780,9 @@ function(_compile_swift_files swift_install_in_component(DIRECTORY ${maccatalyst_specific_module_dir} DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${maccatalyst_library_subdir}" COMPONENT "${SWIFTFILE_INSTALL_IN_COMPONENT}" - "${optional_arg}") + OPTIONAL + PATTERN "Project" EXCLUDE + ${exclude_binary_swiftmodule_installation_args}) endif() # If we have extra regexp flags, check if we match any of the regexps. If so @@ -808,14 +810,16 @@ function(_compile_swift_files DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${library_subdir}" COMPONENT "${SWIFTFILE_INSTALL_IN_COMPONENT}" OPTIONAL - PATTERN "Project" EXCLUDE) + PATTERN "Project" EXCLUDE + ${exclude_binary_swiftmodule_installation_args}) if(SWIFTFILE_STATIC) swift_install_in_component(DIRECTORY "${specific_module_dir_static}" DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift_static/${library_subdir}" COMPONENT "${SWIFTFILE_INSTALL_IN_COMPONENT}" OPTIONAL - PATTERN "Project" EXCLUDE) + PATTERN "Project" EXCLUDE + ${exclude_binary_swiftmodule_installation_args}) endif() set(line_directive_tool "${SWIFT_SOURCE_DIR}/utils/line-directive") diff --git a/stdlib/public/Platform/CMakeLists.txt b/stdlib/public/Platform/CMakeLists.txt index aba1e0c6745fa..6b878c8cded8c 100644 --- a/stdlib/public/Platform/CMakeLists.txt +++ b/stdlib/public/Platform/CMakeLists.txt @@ -75,7 +75,8 @@ add_swift_target_library(swiftDarwin ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} ${swiftDarwin_common_options} TARGET_SDKS "${swiftDarwin_target_sdks}" INSTALL_IN_COMPONENT sdk-overlay - MACCATALYST_BUILD_FLAVOR "zippered") + MACCATALYST_BUILD_FLAVOR "zippered" + INSTALL_BINARY_SWIFTMODULE FALSE) if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB) set(SWIFT_ENABLE_REFLECTION OFF)