mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[maccatalyst] Handle macCatalyst static swiftmodules (#76784)
The existing CMake code for macCatalyst swiftmodule only handled the shared case, and did not have the static pieces that non-macCatalyst targets are doing. Try to match as much as possible the non-macCatalyst variables and structure and allow macCatalyst targets to support static Swift targets. This is important for the `Cxx.swiftmodule` and `CxxStdlib.swiftmodule`, since they are only static, and the previous code skipped creating those files since https://github.com/swiftlang/swift/pull/74994
This commit is contained in:
committed by
GitHub
parent
1cbd7d3163
commit
d84b23b611
@@ -757,22 +757,37 @@ function(_compile_swift_files
|
||||
message(FATAL_ERROR "Don't know where to put the module files")
|
||||
endif()
|
||||
|
||||
set(maccatalyst_specific_module_dir
|
||||
"${maccatalyst_module_dir}/${SWIFTFILE_MODULE_NAME}.swiftmodule")
|
||||
set(maccatalyst_module_base "${maccatalyst_module_dir}/${SWIFTFILE_MODULE_NAME}")
|
||||
|
||||
set(maccatalyst_module_dir_static "${SWIFTSTATICLIB_DIR}/${maccatalyst_library_subdir}")
|
||||
set(maccatalyst_module_base_static "${maccatalyst_module_dir_static}/${SWIFTFILE_MODULE_NAME}")
|
||||
|
||||
set(maccatalyst_module_triple ${SWIFT_SDK_MACCATALYST_ARCH_${SWIFTFILE_ARCHITECTURE}_MODULE})
|
||||
set(maccatalyst_module_base "${maccatalyst_specific_module_dir}/${maccatalyst_module_triple}")
|
||||
set(maccatalyst_specific_module_dir "${maccatalyst_module_base}.swiftmodule")
|
||||
set(maccatalyst_module_base "${maccatalyst_module_base}.swiftmodule/${maccatalyst_module_triple}")
|
||||
set(maccatalyst_specific_module_dir_static "${maccatalyst_module_base_static}.swiftmodule")
|
||||
set(maccatalyst_module_base_static "${maccatalyst_module_base_static}.swiftmodule/${maccatalyst_module_triple}")
|
||||
set(maccatalyst_module_file "${maccatalyst_module_base}.swiftmodule")
|
||||
set(maccatalyst_module_doc_file "${maccatalyst_module_base}.swiftdoc")
|
||||
|
||||
set(maccatalyst_module_file_static "${maccatalyst_module_base_static}.swiftmodule")
|
||||
set(maccatalyst_module_doc_file_static "${maccatalyst_module_base_static}.swiftdoc")
|
||||
|
||||
set(maccatalyst_module_outputs "${maccatalyst_module_file}" "${maccatalyst_module_doc_file}")
|
||||
set(maccatalyst_module_outputs_static "${maccatalyst_module_file_static}" "${maccatalyst_module_doc_file_static}")
|
||||
|
||||
if(SWIFT_ENABLE_MODULE_INTERFACES AND NOT SWIFTFILE_IS_FRAGILE)
|
||||
set(maccatalyst_interface_file "${maccatalyst_module_base}.swiftinterface")
|
||||
set(maccatalyst_interface_file_static "${maccatalyst_module_base_static}.swiftinterface")
|
||||
set(maccatalyst_private_interface_file "${maccatalyst_module_base}.private.swiftinterface")
|
||||
set(maccatalyst_private_interface_file_static "${maccatalyst_module_base_static}.private.swiftinterface")
|
||||
list(APPEND maccatalyst_module_outputs "${maccatalyst_interface_file}" "${maccatalyst_private_interface_file}")
|
||||
list(APPEND maccatalyst_module_outputs_static "${maccatalyst_interface_file_static}" "${maccatalyst_private_interface_file_static}")
|
||||
else()
|
||||
set(maccatalyst_interface_file)
|
||||
set(maccatalyst_private_interface_file)
|
||||
set(maccatalyst_interface_file_static)
|
||||
set(maccatalyst_private_interface_file_static)
|
||||
endif()
|
||||
|
||||
if(SWIFT_STDLIB_EMIT_API_DESCRIPTORS AND NOT SWIFTFILE_IS_FRAGILE)
|
||||
@@ -788,6 +803,15 @@ function(_compile_swift_files
|
||||
OPTIONAL
|
||||
PATTERN "Project" EXCLUDE
|
||||
${exclude_binary_swiftmodule_installation_args})
|
||||
|
||||
if(SWIFTFILE_STATIC)
|
||||
swift_install_in_component(DIRECTORY ${maccatalyst_specific_module_dir_static}
|
||||
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift_static/${maccatalyst_library_subdir}"
|
||||
COMPONENT "${SWIFTFILE_INSTALL_IN_COMPONENT}"
|
||||
OPTIONAL
|
||||
PATTERN "Project" EXCLUDE
|
||||
${exclude_binary_swiftmodule_installation_args})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# If we have extra regexp flags, check if we match any of the regexps. If so
|
||||
@@ -1146,7 +1170,7 @@ function(_compile_swift_files
|
||||
COMMAND
|
||||
"${CMAKE_COMMAND}" "-E" "remove" "-f" ${maccatalyst_module_outputs}
|
||||
COMMAND
|
||||
"${CMAKE_COMMAND}" "-E" "make_directory" ${maccatalyst_specific_module_dir}
|
||||
"${CMAKE_COMMAND}" "-E" "make_directory" ${maccatalyst_module_dir} ${maccatalyst_specific_module_dir}
|
||||
COMMAND
|
||||
${set_environment_args}
|
||||
"$<TARGET_FILE:Python3::Interpreter>" "${line_directive_tool}" "@${file_path}" --
|
||||
@@ -1167,11 +1191,38 @@ function(_compile_swift_files
|
||||
COMMENT
|
||||
"Generating ${maccatalyst_module_file}")
|
||||
|
||||
# Piggy-back on the same out-var as the regular swiftmodule
|
||||
set("${dependency_module_target_out_var_name}"
|
||||
"${module_dependency_target}"
|
||||
"${maccatalyst_module_dependency_target}"
|
||||
PARENT_SCOPE)
|
||||
if(SWIFTFILE_STATIC)
|
||||
set(maccatalyst_command_copy_interface_file)
|
||||
if(maccatalyst_interface_file)
|
||||
set(maccatalyst_command_copy_interface_file
|
||||
COMMAND "${CMAKE_COMMAND}" "-E" "copy" ${maccatalyst_interface_file} ${maccatalyst_interface_file_static}
|
||||
COMMAND "${CMAKE_COMMAND}" "-E" "copy" ${maccatalyst_private_interface_file} ${maccatalyst_private_interface_file_static})
|
||||
endif()
|
||||
add_custom_command_target(
|
||||
maccatalyst_module_dependency_target_static
|
||||
COMMAND "${CMAKE_COMMAND}" -E make_directory ${dirs_to_create}
|
||||
COMMAND
|
||||
"${CMAKE_COMMAND}" "-E" "make_directory" ${maccatalyst_module_dir_static}
|
||||
${maccatalyst_specific_module_dir_static}
|
||||
COMMAND
|
||||
"${CMAKE_COMMAND}" "-E" "copy" ${maccatalyst_module_file} ${maccatalyst_module_file_static}
|
||||
COMMAND
|
||||
"${CMAKE_COMMAND}" "-E" "copy" ${maccatalyst_module_doc_file} ${maccatalyst_module_doc_file_static}
|
||||
${maccatalyst_command_copy_interface_file}
|
||||
OUTPUT ${maccatalyst_module_outputs_static}
|
||||
DEPENDS
|
||||
"${maccatalyst_module_dependency_target}"
|
||||
"${line_directive_tool}"
|
||||
"${file_path_target}"
|
||||
${swift_compiler_tool_dep}
|
||||
${source_files} ${SWIFTFILE_DEPENDS}
|
||||
${swift_ide_test_dependency}
|
||||
${copy_legacy_layouts_dep}
|
||||
COMMENT "Generating ${maccatalyst_module_file_static}")
|
||||
set("${dependency_module_target_out_var_name}" "${module_dependency_target_static}" "${maccatalyst_module_dependency_target_static}" PARENT_SCOPE)
|
||||
else()
|
||||
set("${dependency_module_target_out_var_name}" "${module_dependency_target}" "${maccatalyst_module_dependency_target}" PARENT_SCOPE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# This is the target to generate the .sib files. It is not built by default.
|
||||
|
||||
Reference in New Issue
Block a user