1
+ set (libcxxshim_modulemap_target_list )
2
+ foreach (sdk ${SWIFT_SDKS} )
3
+ foreach (arch ${SWIFT_SDK_${sdk}_ARCHITECTURES} )
4
+ set (arch_suffix "${SWIFT_SDK_${sdk} _LIB_SUBDIR}-${arch} " )
5
+ set (arch_subdir "${SWIFT_SDK_${sdk} _LIB_SUBDIR}/${arch} " )
6
+
7
+ set (module_dir "${SWIFTLIB_DIR} /${arch_subdir} " )
8
+ set (module_dir_static "${SWIFTSTATICLIB_DIR} /${arch_subdir} " )
9
+
10
+ set (libcxxshim_header "libcxxshim.h" )
11
+ set (libcxxshim_header_out "${module_dir} /libcxxshim.h" )
12
+ set (libcxxshim_header_out_static "${module_dir_static} /libcxxshim.h" )
13
+ set (libcxxshim_modulemap "libcxxshim.modulemap" )
14
+ set (libcxxshim_modulemap_out "${module_dir} /libcxxshim.modulemap" )
15
+ set (libcxxshim_modulemap_out_static "${module_dir_static} /libcxxshim.modulemap" )
16
+
17
+ add_custom_command_target (
18
+ copy_libcxxshim_modulemap
19
+ COMMAND
20
+ "${CMAKE_COMMAND} " "-E" "make_directory" ${module_dir}
21
+ COMMAND
22
+ "${CMAKE_COMMAND} " "-E" "copy_if_different" "${CMAKE_CURRENT_SOURCE_DIR} /${libcxxshim_modulemap} " "${libcxxshim_modulemap_out} "
23
+ OUTPUT ${libcxxshim_modulemap_out}
24
+ DEPENDS ${libcxxshim_modulemap}
25
+ COMMENT "Copying libcxxshim modulemap to resources" )
26
+ list (APPEND libcxxshim_modulemap_target_list ${copy_libcxxshim_modulemap} )
27
+ add_dependencies (swift-stdlib-${arch_suffix} ${copy_libcxxshim_modulemap} )
28
+
29
+ add_custom_command_target (
30
+ copy_libcxxshim_header
31
+ COMMAND
32
+ "${CMAKE_COMMAND} " "-E" "make_directory" ${module_dir}
33
+ COMMAND
34
+ "${CMAKE_COMMAND} " "-E" "copy_if_different" "${CMAKE_CURRENT_SOURCE_DIR} /${libcxxshim_header} " "${libcxxshim_header_out} "
35
+ OUTPUT ${libcxxshim_header_out}
36
+ DEPENDS ${libcxxshim_header}
37
+ COMMENT "Copying libcxxshim header to resources" )
38
+ list (APPEND libcxxshim_modulemap_target_list ${copy_libcxxshim_header} )
39
+ add_dependencies (swift-stdlib-${arch_suffix} ${copy_libcxxshim_header} )
40
+
41
+ if (SWIFT_BUILD_STATIC_STDLIB )
42
+ add_custom_command_target (
43
+ copy_libcxxshim_modulemap_static
44
+ COMMAND
45
+ "${CMAKE_COMMAND} " "-E" "make_directory" ${module_dir_static}
46
+ COMMAND
47
+ "${CMAKE_COMMAND} " "-E" "copy_if_different"
48
+ "${libcxxshim_modulemap_out} " "${libcxxshim_modulemap_out_static} "
49
+ OUTPUT ${libcxxshim_modulemap_out_static}
50
+ DEPENDS ${copy_libcxxshim_modulemap}
51
+ COMMENT "Copying libcxxshim modulemap to static resources" )
52
+ list (APPEND libcxxshim_modulemap_target_list ${copy_libcxxshim_modulemap_static} )
53
+ add_dependencies (swift-stdlib-${arch_suffix} ${copy_libcxxshim_modulemap_static} )
54
+
55
+ add_custom_command_target (
56
+ copy_libcxxshim_header_static
57
+ COMMAND
58
+ "${CMAKE_COMMAND} " "-E" "make_directory" ${module_dir_static}
59
+ COMMAND
60
+ "${CMAKE_COMMAND} " "-E" "copy_if_different"
61
+ "${libcxxshim_header_out} " "${libcxxshim_header_out_static} "
62
+ OUTPUT ${libcxxshim_header_out_static}
63
+ DEPENDS ${copy_libcxxshim_header}
64
+ COMMENT "Copying libcxxshim header to static resources" )
65
+ list (APPEND libcxxshim_modulemap_target_list ${copy_libcxxshim_header_static} )
66
+ add_dependencies (swift-stdlib-${arch_suffix} ${copy_libcxxshim_header_static} )
67
+ endif ()
68
+
69
+ swift_install_in_component (FILES "${libcxxshim_modulemap_out} "
70
+ DESTINATION "lib/swift/${arch_subdir} "
71
+ COMPONENT sdk-overlay )
72
+ swift_install_in_component (FILES "${libcxxshim_header_out} "
73
+ DESTINATION "lib/swift/${arch_subdir} "
74
+ COMPONENT sdk-overlay )
75
+
76
+ if (SWIFT_BUILD_STATIC_STDLIB )
77
+ swift_install_in_component (FILES "${libcxxshim_modulemap_out_static} "
78
+ DESTINATION "lib/swift_static/${arch_subdir} "
79
+ COMPONENT sdk-overlay )
80
+ swift_install_in_component (FILES "${libcxxshim_header_out_static} "
81
+ DESTINATION "lib/swift_static/${arch_subdir} "
82
+ COMPONENT sdk-overlay )
83
+ endif ()
84
+ endforeach ()
85
+ endforeach ()
86
+
87
+ add_custom_target (libcxxshim-modulemap DEPENDS ${libcxxshim_modulemap_target_list} )
88
+ set_property (TARGET libcxxshim-modulemap PROPERTY FOLDER "Miscellaneous" )
89
+ add_dependencies (sdk-overlay libcxxshim-modulemap )
90
+
91
+
92
+ #
93
+ # C++ Standard Library Overlay.
94
+ #
95
+ add_swift_target_library (swiftcxxshim ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
96
+ SWIFT_MODULE_DEPENDS_OSX Darwin
97
+ SWIFT_MODULE_DEPENDS_IOS Darwin
98
+ SWIFT_MODULE_DEPENDS_TVOS Darwin
99
+ SWIFT_MODULE_DEPENDS_WATCHOS Darwin
100
+ SWIFT_MODULE_DEPENDS_LINUX Glibc
101
+
102
+ SWIFT_COMPILE_FLAGS ${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS} ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
103
+ -Xfrontend -enable-experimental-cxx-interop
104
+ # This module should not pull in the C++ standard library, so we disable it explicitly.
105
+ # For functionality that depends on the C++ stdlib, use C++ stdlib overlay (`swiftstd` module).
106
+ -Xcc -nostdinc++
107
+
108
+ LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS} "
109
+ TARGET_SDKS ALL_APPLE_PLATFORMS LINUX
110
+ INSTALL_IN_COMPONENT sdk-overlay
111
+ DEPENDS libcxxshim-modulemap )
0 commit comments