@@ -33,7 +33,7 @@ if (SWIFT_SWIFT_PARSER)
3333 list (TRANSFORM SWIFT_SYNTAX_MODULES PREPEND "SwiftSyntax::"
3434 OUTPUT_VARIABLE SWIFT_SYNTAX_TARGETS)
3535
36- set (SWIFT_SYNTAX_LIBRARIES_SOURCE_DIR
36+ set (SWIFT_SYNTAX_LIBRARIES_BUILD_DIR
3737 "${SWIFT_PATH_TO_EARLYSWIFTSYNTAX_BUILD_DIR} /lib/swift/host" )
3838 set (SWIFT_HOST_LIBRARIES_DEST_DIR
3939 "${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /swift/host" )
@@ -53,17 +53,46 @@ if (SWIFT_SWIFT_PARSER)
5353 # Copy over all of the shared libraries from earlyswiftsyntax so they can
5454 # be found via RPATH.
5555 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+
5672 add_custom_command (
5773 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}
6077 )
6178
6279 add_custom_target (copy_swiftSyntaxLibrary_${sharedlib}
6380 DEPENDS "${SWIFT_HOST_LIBRARIES_DEST_DIR} /${sharedlib} "
6481 COMMENT "Copying ${sharedlib} "
6582 )
6683
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+
6796 add_dependencies (swiftSyntaxLibraries copy_swiftSyntaxLibrary_${sharedlib} )
6897 endforeach ()
6998
@@ -76,7 +105,7 @@ if (SWIFT_SWIFT_PARSER)
76105 foreach (module_dir ${SWIFT_SYNTAX_MODULE_DIRS} )
77106 # Find all of the source module files.
78107 file (GLOB module_files
79- "${SWIFT_SYNTAX_LIBRARIES_SOURCE_DIR } /${module_dir} /*.swiftinterface" )
108+ "${SWIFT_SYNTAX_LIBRARIES_BUILD_DIR } /${module_dir} /*.swiftinterface" )
80109
81110 # Determine the destination module files.
82111 set (dest_module_files)
@@ -98,6 +127,12 @@ if (SWIFT_SWIFT_PARSER)
98127 COMMENT "Copying ${module_dir} "
99128 )
100129
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+
101136 add_dependencies (swiftSyntaxLibraries copy_swiftSyntaxModule_${module_dir} )
102137 endforeach ()
103138
0 commit comments