Skip to content

Commit f490e61

Browse files
authored
Merge pull request swiftlang#79335 from etcwilde/ewilde/catalyst-support
CMake: Catalyst Support
2 parents 7492e96 + e59326c commit f490e61

File tree

8 files changed

+87
-15
lines changed

8 files changed

+87
-15
lines changed

Runtimes/Core/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ include(EmitSwiftInterface)
8383
include(PlatformInfo)
8484
include(gyb)
8585
include(ResourceEmbedding)
86+
include(CatalystSupport)
8687

8788
check_symbol_exists("asl_log" "asl.h" SwiftCore_HAS_ASL)
8889
check_symbol_exists("dladdr" "dlfcn.h" SwiftCore_HAS_DLADDR)

Runtimes/Core/Concurrency/CMakeLists.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,5 @@ install(TARGETS swift_Concurrency
121121
ARCHIVE DESTINATION "${SwiftCore_INSTALL_LIBDIR}"
122122
LIBRARY DESTINATION "${SwiftCore_INSTALL_LIBDIR}"
123123
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
124-
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/_Concurrency.swiftmodule"
125-
DESTINATION "${SwiftCore_INSTALL_SWIFTMODULEDIR}/_Concurrency.swiftmodule"
126-
RENAME "${SwiftCore_MODULE_TRIPLE}.swiftmodule")
127124
emit_swift_interface(swift_Concurrency)
128125
install_swift_interface(swift_Concurrency)

Runtimes/Core/SwiftOnoneSupport/CMakeLists.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@ install(TARGETS swiftSwiftOnoneSupport
3535
ARCHIVE DESTINATION "${SwiftCore_INSTALL_LIBDIR}"
3636
LIBRARY DESTINATION "${SwiftCore_INSTALL_LIBDIR}"
3737
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
38-
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SwiftOnoneSupport.swiftmodule"
39-
DESTINATION "${SwiftCore_INSTALL_SWIFTMODULEDIR}/SwiftOnoneSupport.swiftmodule"
40-
RENAME "${SwiftCore_MODULE_TRIPLE}.swiftmodule")
4138
emit_swift_interface(swiftSwiftOnoneSupport)
4239
install_swift_interface(swiftSwiftOnoneSupport)
4340

Runtimes/Core/cmake/caches/Vendors/Apple/arm64e-MacOSX.cmake

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,17 @@ if(NOT DEFINED CMAKE_OSX_DEPLOYMENT_TARGET)
22
message(SEND_ERROR "CMAKE_OSX_DEPLOYMENT_TARGET not defined")
33
endif()
44

5+
if(NOT DEFINED SwiftCore_TARGET_VARIANT_DEPLOYMENT_TARGET)
6+
message(WARNING "SwiftCore_TARGET_VARIANT_DEPLOYMENT_TARGET not defined")
7+
endif()
8+
59
set(CMAKE_C_COMPILER_TARGET "arm64e-apple-macosx${CMAKE_OSX_DEPLOYMENT_TARGET}" CACHE STRING "")
610
set(CMAKE_CXX_COMPILER_TARGET "arm64e-apple-macosx${CMAKE_OSX_DEPLOYMENT_TARGET}" CACHE STRING "")
711
set(CMAKE_Swift_COMPILER_TARGET "arm64e-apple-macosx${CMAKE_OSX_DEPLOYMENT_TARGET}" CACHE STRING "")
812

913
set(SwiftCore_ARCH_SUBDIR arm64e CACHE STRING "")
1014
set(SwiftCore_PLATFORM_SUBDIR macosx CACHE STRING "")
1115

12-
list(APPEND CMAKE_C_FLAGS "-darwin-target-variant" "arm64e-apple-ios13.1-macabi")
13-
list(APPEND CMAKE_CXX_FLAGS "-darwin-target-variant" "arm64e-apple-ios13.1-macabi")
14-
list(APPEND CMAKE_Swift_FLAGS "-target-variant" "arm64e-apple-ios13.1-macabi")
16+
set(SwiftCore_COMPILER_VARIANT_TARGET "arm64e-apple-ios${SwiftCore_TARGET_VARIANT_DEPLOYMENT_TARGET}-macabi" CACHE STRING "")
1517

1618
include("${CMAKE_CURRENT_LIST_DIR}/apple-common.cmake")

Runtimes/Core/cmake/caches/Vendors/Apple/x86_64-MacOSX.cmake

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,17 @@ if(NOT DEFINED CMAKE_OSX_DEPLOYMENT_TARGET)
22
message(SEND_ERROR "CMAKE_OSX_DEPLOYMENT_TARGET not defined")
33
endif()
44

5+
if(NOT DEFINED SwiftCore_TARGET_VARIANT_DEPLOYMENT_TARGET)
6+
message(WARNING "SwiftCore_TARGET_VARIANT_DEPLOYMENT_TARGET not defined")
7+
endif()
8+
59
set(CMAKE_C_COMPILER_TARGET "x86_64-apple-macosx${CMAKE_OSX_DEPLOYMENT_TARGET}" CACHE STRING "")
610
set(CMAKE_CXX_COMPILER_TARGET "x86_64-apple-macosx${CMAKE_OSX_DEPLOYMENT_TARGET}" CACHE STRING "")
711
set(CMAKE_Swift_COMPILER_TARGET "x86_64-apple-macosx${CMAKE_OSX_DEPLOYMENT_TARGET}" CACHE STRING "")
812

913
set(SwiftCore_ARCH_SUBDIR x86_64 CACHE STRING "")
1014
set(SwiftCore_PLATFORM_SUBDIR macosx CACHE STRING "")
1115

12-
list(APPEND CMAKE_C_FLAGS "-darwin-target-variant" "x86_64-apple-ios13.1-macabi")
13-
list(APPEND CMAKE_CXX_FLAGS "-darwin-target-variant" "x86_64-apple-ios13.1-macabi")
14-
list(APPEND CMAKE_Swift_FLAGS "-target-variant" "x86_64-apple-ios13.1-macabi")
16+
set(SwiftCore_COMPILER_VARIANT_TARGET "x86_64-apple-ios${SwiftCore_TARGET_VARIANT_DEPLOYMENT_TARGET}-macabi" CACHE STRING "")
1517

1618
include("${CMAKE_CURRENT_LIST_DIR}/apple-common.cmake")
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Add flags for generating the zippered target variant in the build
2+
3+
# Initialize `SwiftCore_VARIANT_MODULE_TRIPLE` if the driver is able to emit
4+
# modules for the target variant.
5+
6+
if(SwiftCore_COMPILER_VARIANT_TARGET)
7+
add_compile_options(
8+
"$<$<COMPILE_LANGUAGE:C,CXX>:SHELL:-darwin-target-variant ${SwiftCore_COMPILER_VARIANT_TARGET}>"
9+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-target-variant ${SwiftCore_COMPILER_VARIANT_TARGET}>"
10+
11+
# TODO: Remove me once we have a driver with
12+
# https://github.com/swiftlang/swift-driver/pull/1803
13+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xclang-linker -darwin-target-variant -Xclang-linker ${SwiftCore_COMPILER_VARIANT_TARGET}>")
14+
15+
add_link_options(
16+
"$<$<LINK_LANGUAGE:C,CXX>:SHELL:-darwin-target-variant ${SwiftCore_COMPILER_VARIANT_TARGET}>"
17+
"$<$<LINK_LANGUAGE:Swift>:SHELL:-target-variant ${SwiftCore_COMPILER_VARIANT_TARGET}>"
18+
19+
# TODO: Remove me once we have a driver with
20+
# https://github.com/swiftlang/swift-driver/pull/1803
21+
"$<$<LINK_LANGUAGE:Swift>:SHELL:-Xclang-linker -darwin-target-variant -Xclang-linker ${SwiftCore_COMPILER_VARIANT_TARGET}>")
22+
23+
# TODO: Once we are guaranteed to have a driver with the variant module path
24+
# support everywhere, we should integrate this into PlatformInfo.cmake
25+
check_compiler_flag(Swift "-emit-variant-module-path ${CMAKE_CURRENT_BINARY_DIR}/CompilerID/variant.swiftmodule" HAVE_Swift_VARIANT_MODULE_PATH_FLAG)
26+
if(HAVE_Swift_VARIANT_MODULE_PATH_FLAG)
27+
# Get variant module triple
28+
set(module_triple_command "${CMAKE_Swift_COMPILER}" -print-target-info -target ${SwiftCore_COMPILER_VARIANT_TARGET})
29+
execute_process(COMMAND ${module_triple_command} OUTPUT_VARIABLE target_info_json)
30+
message(CONFIGURE_LOG "Swift target variant info: ${target_info_json}")
31+
32+
33+
string(JSON module_triple GET "${target_info_json}" "target" "moduleTriple")
34+
set(SwiftCore_VARIANT_MODULE_TRIPLE "${module_triple}" CACHE STRING "Triple used for installed swift{module,interface} files for the target variant")
35+
mark_as_advanced(SwiftCore_VARIANT_MODULE_TRIPLE)
36+
message(CONFIGURE_LOG "Swift target variant module triple: ${module_triple}")
37+
endif()
38+
endif()

Runtimes/Core/cmake/modules/EmitSwiftInterface.cmake

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,46 @@
66

77
# Generate a swift interface file for the target if library evolution is enabled
88
function(emit_swift_interface target)
9+
# Generate the target-variant binary swift module when performing zippered
10+
# build
11+
if(SwiftCore_VARIANT_MODULE_TRIPLE)
12+
set(variant_module_tmp_dir "${CMAKE_CURRENT_BINARY_DIR}/${target}-${SwiftCore_VARIANT_MODULE_TRIPLE}")
13+
file(MAKE_DIRECTORY "${variant_module_tmp_dir}")
14+
target_compile_options(${target} PRIVATE
15+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-module-path ${variant_module_tmp_dir}/${target}.swiftmodule>")
16+
endif()
17+
18+
# Generate textual swift interfaces is library-evolution is enabled
919
if(SwiftCore_ENABLE_LIBRARY_EVOLUTION)
1020
target_compile_options(${target} PRIVATE
1121
$<$<COMPILE_LANGUAGE:Swift>:-emit-module-interface-path$<SEMICOLON>${CMAKE_CURRENT_BINARY_DIR}/$<TARGET_PROPERTY:${target},Swift_MODULE_NAME>.swiftinterface>
1222
$<$<COMPILE_LANGUAGE:Swift>:-emit-private-module-interface-path$<SEMICOLON>${CMAKE_CURRENT_BINARY_DIR}/$<TARGET_PROPERTY:${target},Swift_MODULE_NAME>.private.swiftinterface>
1323
$<$<COMPILE_LANGUAGE:Swift>:-library-level$<SEMICOLON>api>
1424
$<$<COMPILE_LANGUAGE:Swift>:-Xfrontend$<SEMICOLON>-require-explicit-availability=ignore>)
25+
26+
# Emit catalyst swiftmodules and interfaces
27+
if(SwiftCore_VARIANT_MODULE_TRIPLE)
28+
target_compile_options(${target} PRIVATE
29+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-module-interface-path ${variant_module_tmp_dir}/${target}.swiftinterface>"
30+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-private-module-interface-path ${variant_module_tmp_dir}/${target}.private.swiftinterface>")
31+
endif()
1532
endif()
1633
endfunction()
1734

1835
# Install the generated swift interface file for the target if library evolution
1936
# is enabled.
2037
function(install_swift_interface target)
38+
# Install binary swift modules
39+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/$<TARGET_PROPERTY:${target},Swift_MODULE_NAME>.swiftmodule"
40+
RENAME "${SwiftCore_MODULE_TRIPLE}.swiftmodule"
41+
DESTINATION "${SwiftCore_INSTALL_SWIFTMODULEDIR}/$<TARGET_PROPERTY:${target},Swift_MODULE_NAME>.swiftmodule")
42+
if(SwiftCore_VARIANT_MODULE_TRIPLE)
43+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${target}-${SwiftCore_VARIANT_MODULE_TRIPLE}/${target}.swiftmodule"
44+
RENAME "${SwiftCore_VARIANT_MODULE_TRIPLE}.swiftmodule"
45+
DESTINATION "${SwiftCore_INSTALL_SWIFTMODULEDIR}/$<TARGET_PROPERTY:${target},Swift_MODULE_NAME>.swiftmodule")
46+
endif()
47+
48+
# Install Swift interfaces if library-evolution is enabled
2149
if(SwiftCore_ENABLE_LIBRARY_EVOLUTION)
2250
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/$<TARGET_PROPERTY:${target},Swift_MODULE_NAME>.swiftinterface"
2351
RENAME "${SwiftCore_MODULE_TRIPLE}.swiftinterface"
@@ -26,5 +54,15 @@ function(install_swift_interface target)
2654
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/$<TARGET_PROPERTY:${target},Swift_MODULE_NAME>.private.swiftinterface"
2755
RENAME "${SwiftCore_MODULE_TRIPLE}.private.swiftinterface"
2856
DESTINATION "${SwiftCore_INSTALL_SWIFTMODULEDIR}/$<TARGET_PROPERTY:${target},Swift_MODULE_NAME>.swiftmodule")
57+
58+
# Install catalyst interface files
59+
if(SwiftCore_VARIANT_MODULE_TRIPLE)
60+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${target}-${SwiftCore_VARIANT_MODULE_TRIPLE}/${target}.swiftinterface"
61+
RENAME "${SwiftCore_VARIANT_MODULE_TRIPLE}.swiftinterface"
62+
DESTINATION "${SwiftCore_INSTALL_SWIFTMODULEDIR}/$<TARGET_PROPERTY:${target},Swift_MODULE_NAME>.swiftmodule")
63+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${target}-${SwiftCore_VARIANT_MODULE_TRIPLE}/${target}.private.swiftinterface"
64+
RENAME "${SwiftCore_VARIANT_MODULE_TRIPLE}.private.swiftinterface"
65+
DESTINATION "${SwiftCore_INSTALL_SWIFTMODULEDIR}/$<TARGET_PROPERTY:${target},Swift_MODULE_NAME>.swiftmodule")
66+
endif()
2967
endif()
3068
endfunction()

Runtimes/Core/core/CMakeLists.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -327,9 +327,6 @@ install(TARGETS swiftCore
327327
ARCHIVE DESTINATION "${SwiftCore_INSTALL_LIBDIR}"
328328
LIBRARY DESTINATION "${SwiftCore_INSTALL_LIBDIR}"
329329
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
330-
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Swift.swiftmodule"
331-
DESTINATION "${SwiftCore_INSTALL_SWIFTMODULEDIR}/Swift.swiftmodule"
332-
RENAME "${SwiftCore_MODULE_TRIPLE}.swiftmodule")
333330
emit_swift_interface(swiftCore)
334331
install_swift_interface(swiftCore)
335332

0 commit comments

Comments
 (0)