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