@@ -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