@@ -36,7 +36,7 @@ if (SWIFT_SWIFT_PARSER)
36
36
list (TRANSFORM SWIFT_SYNTAX_MODULES PREPEND "SwiftSyntax::"
37
37
OUTPUT_VARIABLE SWIFT_SYNTAX_TARGETS)
38
38
39
- set (SWIFT_SYNTAX_LIBRARIES_SOURCE_DIR
39
+ set (SWIFT_SYNTAX_LIBRARIES_BUILD_DIR
40
40
"${SWIFT_PATH_TO_EARLYSWIFTSYNTAX_BUILD_DIR} /lib/swift/host" )
41
41
set (SWIFT_HOST_LIBRARIES_DEST_DIR
42
42
"${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /swift/host" )
@@ -56,17 +56,46 @@ if (SWIFT_SWIFT_PARSER)
56
56
# Copy over all of the shared libraries from earlyswiftsyntax so they can
57
57
# be found via RPATH.
58
58
foreach (sharedlib ${SWIFT_SYNTAX_SHARED_LIBRARIES} )
59
+ set (add_origin_rpath)
60
+ if (SWIFT_HOST_VARIANT_SDK STREQUAL "LINUX" )
61
+ get_filename_component (swift_bin_dir ${CMAKE_Swift_COMPILER} DIRECTORY )
62
+ get_filename_component (swift_dir ${swift_bin_dir} DIRECTORY )
63
+ set (host_lib_dir "${swift_dir} /lib/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK} _LIB_SUBDIR}" )
64
+
65
+ # At runtime, use swiftCore in the current toolchain.
66
+
67
+ swift_get_set_rpath_script_file(setrpath_command)
68
+ set (add_origin_rpath COMMAND ${CMAKE_COMMAND}
69
+ "-DSWIFT_SET_RPATH_FILE=${SWIFT_HOST_LIBRARIES_DEST_DIR} /${sharedlib} "
70
+ "-DSWIFT_SET_RPATH_NEW_RPATH='$$ORIGIN:$$ORIGIN/../${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK} _LIB_SUBDIR}:${host_lib_dir} '"
71
+ -P "${setrpath_command} "
72
+ )
73
+ endif ()
74
+
59
75
add_custom_command (
60
76
OUTPUT "${SWIFT_HOST_LIBRARIES_DEST_DIR} /${sharedlib} "
61
- DEPENDS "${SWIFT_SYNTAX_LIBRARIES_SOURCE_DIR} /${sharedlib} "
62
- COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SWIFT_SYNTAX_LIBRARIES_SOURCE_DIR} /${sharedlib} ${SWIFT_HOST_LIBRARIES_DEST_DIR} /${sharedlib}
77
+ DEPENDS "${SWIFT_SYNTAX_LIBRARIES_BUILD_DIR} /${sharedlib} "
78
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SWIFT_SYNTAX_LIBRARIES_BUILD_DIR} /${sharedlib} ${SWIFT_HOST_LIBRARIES_DEST_DIR} /${sharedlib}
79
+ ${add_origin_rpath}
63
80
)
64
81
65
82
add_custom_target (copy_swiftSyntaxLibrary_${sharedlib}
66
83
DEPENDS "${SWIFT_HOST_LIBRARIES_DEST_DIR} /${sharedlib} "
67
84
COMMENT "Copying ${sharedlib} "
68
85
)
69
86
87
+ swift_install_in_component(
88
+ FILES "${SWIFT_HOST_LIBRARIES_DEST_DIR} /${sharedlib} "
89
+ DESTINATION "lib${LLVM_LIBDIR_SUFFIX} /swift/host"
90
+ COMPONENT compiler
91
+ )
92
+
93
+ swift_install_file_set_rpath(
94
+ "lib${LLVM_LIBDIR_SUFFIX} /swift/host/${sharedlib} "
95
+ "$ORIGIN:$ORIGIN/../${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK} _LIB_SUBDIR}"
96
+ compiler
97
+ )
98
+
70
99
add_dependencies (swiftSyntaxLibraries copy_swiftSyntaxLibrary_${sharedlib} )
71
100
endforeach ()
72
101
@@ -79,7 +108,7 @@ if (SWIFT_SWIFT_PARSER)
79
108
foreach (module_dir ${SWIFT_SYNTAX_MODULE_DIRS} )
80
109
# Find all of the source module files.
81
110
file (GLOB module_files
82
- "${SWIFT_SYNTAX_LIBRARIES_SOURCE_DIR } /${module_dir} /*.swiftinterface" )
111
+ "${SWIFT_SYNTAX_LIBRARIES_BUILD_DIR } /${module_dir} /*.swiftinterface" )
83
112
84
113
# Determine the destination module files.
85
114
set (dest_module_files)
@@ -101,6 +130,12 @@ if (SWIFT_SWIFT_PARSER)
101
130
COMMENT "Copying ${module_dir} "
102
131
)
103
132
133
+ swift_install_in_component(
134
+ FILES ${dest_module_files}
135
+ DESTINATION "lib${LLVM_LIBDIR_SUFFIX} /swift/host/${module_dir} "
136
+ COMPONENT compiler
137
+ )
138
+
104
139
add_dependencies (swiftSyntaxLibraries copy_swiftSyntaxModule_${module_dir} )
105
140
endforeach ()
106
141
0 commit comments