From b18e1fe6b86c8bf1522e34c8e14495ba7aef9735 Mon Sep 17 00:00:00 2001 From: Eric Miotto <1094986+edymtt@users.noreply.github.com> Date: Mon, 18 Mar 2024 08:44:21 -0700 Subject: [PATCH 1/2] [6.0] Remove duplicate call to install() for stdlib modules Also amend the installation code handling macCatalyst to match the one for regular swiftmodules. (cherry picked from commit 649618dc367e9112d1a3782588362492926223ed) --- stdlib/cmake/modules/SwiftSource.cmake | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/stdlib/cmake/modules/SwiftSource.cmake b/stdlib/cmake/modules/SwiftSource.cmake index 850db6e0dc158..99091526bb71b 100644 --- a/stdlib/cmake/modules/SwiftSource.cmake +++ b/stdlib/cmake/modules/SwiftSource.cmake @@ -721,22 +721,6 @@ 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}") - endif() - # macCatalyst zippered module setup if(maccatalyst_build_flavor STREQUAL "zippered") compute_library_subdir(maccatalyst_library_subdir @@ -778,7 +762,8 @@ 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}") + PATTERN "Project" EXCLUDE + OPTIONAL) endif() # If we have extra regexp flags, check if we match any of the regexps. If so From b4a06d7b01038b2088eb6ec4bbf16071d37ce3d7 Mon Sep 17 00:00:00 2001 From: Eric Miotto <1094986+edymtt@users.noreply.github.com> Date: Tue, 19 Mar 2024 09:53:34 -0700 Subject: [PATCH 2/2] [6.0] Do not install binary swiftmodule for Darwin This is needed to support Apple internal configurations that would fail consuming such binary swiftmodule (but work as expected when rebuilding from the swiftinterface). Addresses rdar://124390643 (cherry picked from commit 0cac358fe5c03a038f4090d40a5e8d2f9811ab5d) --- stdlib/cmake/modules/AddSwiftStdlib.cmake | 16 +++++++++++-- stdlib/cmake/modules/SwiftSource.cmake | 29 +++++++++++++++++++---- stdlib/public/Platform/CMakeLists.txt | 3 ++- 3 files changed, 40 insertions(+), 8 deletions(-) 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 99091526bb71b..81c0868cea190 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) @@ -721,6 +730,13 @@ function(_compile_swift_files list(APPEND module_outputs "${interface_file}" "${private_interface_file}") endif() + 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 if(maccatalyst_build_flavor STREQUAL "zippered") compute_library_subdir(maccatalyst_library_subdir @@ -762,8 +778,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 PATTERN "Project" EXCLUDE - OPTIONAL) + ${exclude_binary_swiftmodule_installation_args}) endif() # If we have extra regexp flags, check if we match any of the regexps. If so @@ -791,14 +808,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)