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
This commit is contained in:
Eric Miotto
2024-03-19 09:53:34 -07:00
parent 649618dc36
commit 0cac358fe5
3 changed files with 40 additions and 8 deletions

View File

@@ -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,6 +732,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
@@ -764,8 +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
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
@@ -793,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")