Skip to content

Commit d84b23b

Browse files
authored
[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 #74994
1 parent 1cbd7d3 commit d84b23b

File tree

1 file changed

+60
-9
lines changed

1 file changed

+60
-9
lines changed

stdlib/cmake/modules/SwiftSource.cmake

Lines changed: 60 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -757,22 +757,37 @@ function(_compile_swift_files
757757
message(FATAL_ERROR "Don't know where to put the module files")
758758
endif()
759759

760-
set(maccatalyst_specific_module_dir
761-
"${maccatalyst_module_dir}/${SWIFTFILE_MODULE_NAME}.swiftmodule")
760+
set(maccatalyst_module_base "${maccatalyst_module_dir}/${SWIFTFILE_MODULE_NAME}")
761+
762+
set(maccatalyst_module_dir_static "${SWIFTSTATICLIB_DIR}/${maccatalyst_library_subdir}")
763+
set(maccatalyst_module_base_static "${maccatalyst_module_dir_static}/${SWIFTFILE_MODULE_NAME}")
764+
762765
set(maccatalyst_module_triple ${SWIFT_SDK_MACCATALYST_ARCH_${SWIFTFILE_ARCHITECTURE}_MODULE})
763-
set(maccatalyst_module_base "${maccatalyst_specific_module_dir}/${maccatalyst_module_triple}")
766+
set(maccatalyst_specific_module_dir "${maccatalyst_module_base}.swiftmodule")
767+
set(maccatalyst_module_base "${maccatalyst_module_base}.swiftmodule/${maccatalyst_module_triple}")
768+
set(maccatalyst_specific_module_dir_static "${maccatalyst_module_base_static}.swiftmodule")
769+
set(maccatalyst_module_base_static "${maccatalyst_module_base_static}.swiftmodule/${maccatalyst_module_triple}")
764770
set(maccatalyst_module_file "${maccatalyst_module_base}.swiftmodule")
765771
set(maccatalyst_module_doc_file "${maccatalyst_module_base}.swiftdoc")
766772

773+
set(maccatalyst_module_file_static "${maccatalyst_module_base_static}.swiftmodule")
774+
set(maccatalyst_module_doc_file_static "${maccatalyst_module_base_static}.swiftdoc")
775+
767776
set(maccatalyst_module_outputs "${maccatalyst_module_file}" "${maccatalyst_module_doc_file}")
777+
set(maccatalyst_module_outputs_static "${maccatalyst_module_file_static}" "${maccatalyst_module_doc_file_static}")
768778

769779
if(SWIFT_ENABLE_MODULE_INTERFACES AND NOT SWIFTFILE_IS_FRAGILE)
770780
set(maccatalyst_interface_file "${maccatalyst_module_base}.swiftinterface")
781+
set(maccatalyst_interface_file_static "${maccatalyst_module_base_static}.swiftinterface")
771782
set(maccatalyst_private_interface_file "${maccatalyst_module_base}.private.swiftinterface")
783+
set(maccatalyst_private_interface_file_static "${maccatalyst_module_base_static}.private.swiftinterface")
772784
list(APPEND maccatalyst_module_outputs "${maccatalyst_interface_file}" "${maccatalyst_private_interface_file}")
785+
list(APPEND maccatalyst_module_outputs_static "${maccatalyst_interface_file_static}" "${maccatalyst_private_interface_file_static}")
773786
else()
774787
set(maccatalyst_interface_file)
775788
set(maccatalyst_private_interface_file)
789+
set(maccatalyst_interface_file_static)
790+
set(maccatalyst_private_interface_file_static)
776791
endif()
777792

778793
if(SWIFT_STDLIB_EMIT_API_DESCRIPTORS AND NOT SWIFTFILE_IS_FRAGILE)
@@ -788,6 +803,15 @@ function(_compile_swift_files
788803
OPTIONAL
789804
PATTERN "Project" EXCLUDE
790805
${exclude_binary_swiftmodule_installation_args})
806+
807+
if(SWIFTFILE_STATIC)
808+
swift_install_in_component(DIRECTORY ${maccatalyst_specific_module_dir_static}
809+
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift_static/${maccatalyst_library_subdir}"
810+
COMPONENT "${SWIFTFILE_INSTALL_IN_COMPONENT}"
811+
OPTIONAL
812+
PATTERN "Project" EXCLUDE
813+
${exclude_binary_swiftmodule_installation_args})
814+
endif()
791815
endif()
792816

793817
# If we have extra regexp flags, check if we match any of the regexps. If so
@@ -1146,7 +1170,7 @@ function(_compile_swift_files
11461170
COMMAND
11471171
"${CMAKE_COMMAND}" "-E" "remove" "-f" ${maccatalyst_module_outputs}
11481172
COMMAND
1149-
"${CMAKE_COMMAND}" "-E" "make_directory" ${maccatalyst_specific_module_dir}
1173+
"${CMAKE_COMMAND}" "-E" "make_directory" ${maccatalyst_module_dir} ${maccatalyst_specific_module_dir}
11501174
COMMAND
11511175
${set_environment_args}
11521176
"$<TARGET_FILE:Python3::Interpreter>" "${line_directive_tool}" "@${file_path}" --
@@ -1167,11 +1191,38 @@ function(_compile_swift_files
11671191
COMMENT
11681192
"Generating ${maccatalyst_module_file}")
11691193

1170-
# Piggy-back on the same out-var as the regular swiftmodule
1171-
set("${dependency_module_target_out_var_name}"
1172-
"${module_dependency_target}"
1173-
"${maccatalyst_module_dependency_target}"
1174-
PARENT_SCOPE)
1194+
if(SWIFTFILE_STATIC)
1195+
set(maccatalyst_command_copy_interface_file)
1196+
if(maccatalyst_interface_file)
1197+
set(maccatalyst_command_copy_interface_file
1198+
COMMAND "${CMAKE_COMMAND}" "-E" "copy" ${maccatalyst_interface_file} ${maccatalyst_interface_file_static}
1199+
COMMAND "${CMAKE_COMMAND}" "-E" "copy" ${maccatalyst_private_interface_file} ${maccatalyst_private_interface_file_static})
1200+
endif()
1201+
add_custom_command_target(
1202+
maccatalyst_module_dependency_target_static
1203+
COMMAND "${CMAKE_COMMAND}" -E make_directory ${dirs_to_create}
1204+
COMMAND
1205+
"${CMAKE_COMMAND}" "-E" "make_directory" ${maccatalyst_module_dir_static}
1206+
${maccatalyst_specific_module_dir_static}
1207+
COMMAND
1208+
"${CMAKE_COMMAND}" "-E" "copy" ${maccatalyst_module_file} ${maccatalyst_module_file_static}
1209+
COMMAND
1210+
"${CMAKE_COMMAND}" "-E" "copy" ${maccatalyst_module_doc_file} ${maccatalyst_module_doc_file_static}
1211+
${maccatalyst_command_copy_interface_file}
1212+
OUTPUT ${maccatalyst_module_outputs_static}
1213+
DEPENDS
1214+
"${maccatalyst_module_dependency_target}"
1215+
"${line_directive_tool}"
1216+
"${file_path_target}"
1217+
${swift_compiler_tool_dep}
1218+
${source_files} ${SWIFTFILE_DEPENDS}
1219+
${swift_ide_test_dependency}
1220+
${copy_legacy_layouts_dep}
1221+
COMMENT "Generating ${maccatalyst_module_file_static}")
1222+
set("${dependency_module_target_out_var_name}" "${module_dependency_target_static}" "${maccatalyst_module_dependency_target_static}" PARENT_SCOPE)
1223+
else()
1224+
set("${dependency_module_target_out_var_name}" "${module_dependency_target}" "${maccatalyst_module_dependency_target}" PARENT_SCOPE)
1225+
endif()
11751226
endif()
11761227

11771228
# This is the target to generate the .sib files. It is not built by default.

0 commit comments

Comments
 (0)