diff --git a/cmake/modules/AddSwift.cmake b/cmake/modules/AddSwift.cmake index 606ca2e533bcb..5a976dd81d6a2 100644 --- a/cmake/modules/AddSwift.cmake +++ b/cmake/modules/AddSwift.cmake @@ -539,7 +539,7 @@ function(_add_swift_runtime_link_flags target relpath_to_lib_dir bootstrapping) # installed host toolchain. get_filename_component(swift_bin_dir ${SWIFT_EXEC_FOR_SWIFT_MODULES} DIRECTORY) get_filename_component(swift_dir ${swift_bin_dir} DIRECTORY) - set(host_lib_dir "${swift_dir}/lib/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}") + set(host_lib_dir "${swift_dir}/lib/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}/${SWIFT_HOST_VARIANT_ARCH}") target_link_libraries(${target} PRIVATE ${swiftrt}) target_link_libraries(${target} PRIVATE "swiftCore") @@ -548,7 +548,7 @@ function(_add_swift_runtime_link_flags target relpath_to_lib_dir bootstrapping) if(ASRLF_BOOTSTRAPPING_MODE STREQUAL "HOSTTOOLS") set(swift_runtime_rpath "${host_lib_dir}") else() - set(swift_runtime_rpath "$ORIGIN/${relpath_to_lib_dir}/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}") + set(swift_runtime_rpath "$ORIGIN/${relpath_to_lib_dir}/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}/${SWIFT_HOST_VARIANT_ARCH}") endif() elseif(ASRLF_BOOTSTRAPPING_MODE STREQUAL "BOOTSTRAPPING") @@ -563,7 +563,7 @@ function(_add_swift_runtime_link_flags target relpath_to_lib_dir bootstrapping) # At runtime link against the built swift libraries from the current # bootstrapping stage. - set(swift_runtime_rpath "$ORIGIN/${relpath_to_lib_dir}/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}") + set(swift_runtime_rpath "$ORIGIN/${relpath_to_lib_dir}/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}/${SWIFT_HOST_VARIANT_ARCH}") elseif(ASRLF_BOOTSTRAPPING_MODE STREQUAL "BOOTSTRAPPING-WITH-HOSTLIBS") message(FATAL_ERROR "BOOTSTRAPPING_MODE 'BOOTSTRAPPING-WITH-HOSTLIBS' not supported on Linux") diff --git a/cmake/modules/Libdispatch.cmake b/cmake/modules/Libdispatch.cmake index f0ea3577a2ba0..1e341969a072d 100644 --- a/cmake/modules/Libdispatch.cmake +++ b/cmake/modules/Libdispatch.cmake @@ -125,14 +125,6 @@ foreach(sdk ${DISPATCH_SDKS}) ${CMAKE_COMMAND} -E copy /${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX} ${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX} - COMMAND - ${CMAKE_COMMAND} -E copy - /${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX} - ${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX} - COMMAND - ${CMAKE_COMMAND} -E copy - /${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX} - ${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX} STEP_TARGETS install BUILD_BYPRODUCTS diff --git a/cmake/modules/SwiftUtils.cmake b/cmake/modules/SwiftUtils.cmake index 9d6b2ce73af94..99443555e8072 100644 --- a/cmake/modules/SwiftUtils.cmake +++ b/cmake/modules/SwiftUtils.cmake @@ -99,6 +99,9 @@ function(get_bootstrapping_swift_lib_dir bs_lib_dir bootstrapping) if(BOOTSTRAPPING_MODE STREQUAL "BOOTSTRAPPING") set(lib_dir "${SWIFTLIB_DIR}/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}") + if(NOT ${SWIFT_HOST_VARIANT_SDK} IN_LIST SWIFT_DARWIN_PLATFORMS) + set(lib_dir "${lib_dir}/${SWIFT_HOST_VARIANT_ARCH}") + endif() # If building the stdlib with bootstrapping, the compiler has to pick up # the swift libraries of the previous bootstrapping level (because in the # current lib-directory they are not built yet. diff --git a/docs/Android.md b/docs/Android.md index af15d57d2dddf..e7c823a0362cd 100644 --- a/docs/Android.md +++ b/docs/Android.md @@ -121,13 +121,13 @@ listed when you run the `adb devices` command - **currently this example works o commands to copy the Swift Android stdlib: ``` -$ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/libswiftCore.so /data/local/tmp -$ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/libswiftGlibc.so /data/local/tmp -$ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/libswiftSwiftOnoneSupport.so /data/local/tmp -$ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/libswiftRemoteMirror.so /data/local/tmp -$ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/libswift_Concurrency.so /data/local/tmp -$ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/libdispatch.so /data/local/tmp -$ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/libBlocksRuntime.so /data/local/tmp +$ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/aarch64/libswiftCore.so /data/local/tmp +$ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/aarch64/libswiftGlibc.so /data/local/tmp +$ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/aarch64/libswiftSwiftOnoneSupport.so /data/local/tmp +$ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/aarch64/libswiftRemoteMirror.so /data/local/tmp +$ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/aarch64/libswift_Concurrency.so /data/local/tmp +$ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/aarch64/libdispatch.so /data/local/tmp +$ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/aarch64/libBlocksRuntime.so /data/local/tmp ``` In addition, you'll also need to copy the Android NDK's libc++: diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 9d52c08549744..04c8405779e73 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -1452,6 +1452,11 @@ void ToolChain::getRuntimeLibraryPaths(SmallVectorImpl &runtimeLibP StringRef SDKPath, bool shared) const { SmallString<128> scratchPath; getResourceDirPath(scratchPath, args, shared); + // Since only Darwin doesn't have separate libraries per architecture, link + // against the architecture-specific version of the library everywhere else. + if (!getTriple().isOSDarwin()) + llvm::sys::path::append(scratchPath, + swift::getMajorArchitectureName(getTriple())); runtimeLibPaths.push_back(std::string(scratchPath.str())); // If there's a secondary resource dir, add it too. diff --git a/lib/Driver/WindowsToolChains.cpp b/lib/Driver/WindowsToolChains.cpp index 5001fa33fd2a5..e8fc8a5aa3720 100644 --- a/lib/Driver/WindowsToolChains.cpp +++ b/lib/Driver/WindowsToolChains.cpp @@ -118,10 +118,7 @@ toolchains::Windows::constructInvocation(const DynamicLinkJobAction &job, for (auto path : RuntimeLibPaths) { Arguments.push_back("-L"); - // Since Windows has separate libraries per architecture, link against the - // architecture specific version of the static library. - Arguments.push_back(context.Args.MakeArgString(path + "/" + - getTriple().getArchName())); + Arguments.push_back(context.Args.MakeArgString(path)); } SmallString<128> SharedResourceDirPath; diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index 9e0a7afeff838..1e0b46822e488 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -168,8 +168,11 @@ static void updateRuntimeLibraryPaths(SearchPathOptions &SearchPathOpts, LibSubDir = "maccatalyst"; llvm::sys::path::append(LibPath, LibSubDir); + llvm::SmallString<128> runtimeLibPath = LibPath; + if (!Triple.isOSDarwin()) + llvm::sys::path::append(runtimeLibPath, swift::getMajorArchitectureName(Triple)); SearchPathOpts.RuntimeLibraryPaths.clear(); - SearchPathOpts.RuntimeLibraryPaths.push_back(std::string(LibPath.str())); + SearchPathOpts.RuntimeLibraryPaths.push_back(std::string(runtimeLibPath.str())); if (Triple.isOSDarwin()) SearchPathOpts.RuntimeLibraryPaths.push_back(DARWIN_OS_LIBRARY_PATH); diff --git a/stdlib/cmake/modules/AddSwiftStdlib.cmake b/stdlib/cmake/modules/AddSwiftStdlib.cmake index 6267acfc2143a..7d94fb63f02b9 100644 --- a/stdlib/cmake/modules/AddSwiftStdlib.cmake +++ b/stdlib/cmake/modules/AddSwiftStdlib.cmake @@ -803,11 +803,11 @@ function(add_swift_target_library_single target name) "${SWIFT_SDK_MACCATALYST_LIB_SUBDIR}/${SWIFTLIB_SINGLE_ARCHITECTURE}") endif() - if ("${SWIFTLIB_SINGLE_BOOTSTRAPPING}" STREQUAL "") + if ("${SWIFTLIB_SINGLE_BOOTSTRAPPING}" STREQUAL "" OR NOT SWIFTLIB_SINGLE_SDK IN_LIST SWIFT_DARWIN_PLATFORMS) set(output_sub_dir ${SWIFTLIB_SINGLE_SUBDIR}) else() # In the bootstrapping builds, we only have the single host architecture. - # So generated the library directly in the parent SDK specific directory + # So generate the Darwin library directly in the parent SDK specific directory # (avoiding to lipo/copy the library). set(output_sub_dir ${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}) endif() @@ -1257,11 +1257,12 @@ function(add_swift_target_library_single target name) ${SWIFTLIB_SINGLE_C_COMPILE_FLAGS} "-DSWIFT_TARGET_LIBRARY_NAME=${name}") set(link_flags ${SWIFTLIB_SINGLE_LINK_FLAGS}) - set(library_search_subdir "${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}") set(library_search_directories "${lib_dir}/${output_sub_dir}" - "${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFTLIB_SINGLE_SUBDIR}" - "${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}") + "${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFTLIB_SINGLE_SUBDIR}") + if("${SWIFTLIB_SINGLE_SDK}" IN_LIST SWIFT_DARWIN_PLATFORMS) + list(APPEND library_search_directories "${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}") + endif() # In certain cases when building, the environment variable SDKROOT is set to override # where the sdk root is located in the system. If that environment variable has been @@ -1487,8 +1488,10 @@ function(add_swift_target_library_single target name) endif() set(library_search_directories "${search_base_dir}/${SWIFTLIB_SINGLE_SUBDIR}" - "${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFTLIB_SINGLE_SUBDIR}" - "${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}") + "${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFTLIB_SINGLE_SUBDIR}") + if("${SWIFTLIB_SINGLE_SDK}" IN_LIST SWIFT_DARWIN_PLATFORMS) + list(APPEND library_search_directories "${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}") + endif() target_link_directories(${target_static} PRIVATE ${library_search_directories}) target_link_libraries("${target_static}" PRIVATE @@ -2377,8 +2380,10 @@ function(add_swift_target_library name) if (SWIFTLIB_BACK_DEPLOYMENT_LIBRARY) # Back-deployment libraries get installed into a versioned directory. set(install_dest "lib${LLVM_LIBDIR_SUFFIX}/${resource_dir}-${SWIFTLIB_BACK_DEPLOYMENT_LIBRARY}/${resource_dir_sdk_subdir}") - else() + elseif(sdk STREQUAL WINDOWS OR sdk IN_LIST SWIFT_DARWIN_PLATFORMS) set(install_dest "lib${LLVM_LIBDIR_SUFFIX}/${resource_dir}/${resource_dir_sdk_subdir}") + else() + set(install_dest "lib${LLVM_LIBDIR_SUFFIX}/${resource_dir}/${resource_dir_sdk_subdir}/${SWIFT_PRIMARY_VARIANT_ARCH}") endif() swift_install_in_component(FILES "${UNIVERSAL_LIBRARY_NAME}" @@ -2454,6 +2459,10 @@ function(add_swift_target_library name) "${name}-${library_subdir}-static") set(UNIVERSAL_LIBRARY_NAME "${universal_subdir}/${library_subdir}/${CMAKE_STATIC_LIBRARY_PREFIX}${name}${CMAKE_STATIC_LIBRARY_SUFFIX}") + set(install_dest "lib${LLVM_LIBDIR_SUFFIX}/${install_subdir}/${resource_dir_sdk_subdir}") + if(NOT sdk STREQUAL WINDOWS AND NOT sdk IN_LIST SWIFT_DARWIN_PLATFORMS) + set(install_dest "${install_dest}/${SWIFT_PRIMARY_VARIANT_ARCH}") + endif() _add_swift_lipo_target(SDK ${sdk} TARGET @@ -2463,7 +2472,7 @@ function(add_swift_target_library name) ${THIN_INPUT_TARGETS_STATIC}) add_dependencies(${SWIFTLIB_INSTALL_IN_COMPONENT} ${lipo_target_static}) swift_install_in_component(FILES "${UNIVERSAL_LIBRARY_NAME}" - DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/${install_subdir}/${resource_dir_sdk_subdir}" + DESTINATION "${install_dest}" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ @@ -2542,6 +2551,10 @@ function(_add_swift_target_executable_single name) # Prepare linker search directories. set(library_search_directories "${SWIFTLIB_DIR}/${SWIFT_SDK_${SWIFTEXE_SINGLE_SDK}_LIB_SUBDIR}") + if(NOT ${SWIFTEXE_SINGLE_SDK} IN_LIST SWIFT_DARWIN_PLATFORMS AND NOT ${SWIFTEXE_SINGLE_SDK} STREQUAL WINDOWS) + set(library_search_directories + "${library_search_directories}/${SWIFTEXE_SINGLE_ARCHITECTURE}") + endif() # Add variant-specific flags. _add_target_variant_c_compile_flags( diff --git a/test/Driver/environment.swift b/test/Driver/environment.swift index 62d625ab30496..bbebd88a4c09d 100644 --- a/test/Driver/environment.swift +++ b/test/Driver/environment.swift @@ -4,5 +4,5 @@ // RUN: %swift_driver_plain -sdk "" -target x86_64-unknown-gnu-linux -L/foo/ -driver-use-frontend-path %S/Inputs/print-var.sh %s LD_LIBRARY_PATH | %FileCheck -check-prefix=CHECK${LD_LIBRARY_PATH+_LAX} %s -// CHECK: {{^/foo/:[^:]+/lib/swift/linux$}} -// CHECK_LAX: {{^/foo/:[^:]+/lib/swift/linux}} +// CHECK: {{^/foo/:[^:]+/lib/swift/linux/x86_64$}} +// CHECK_LAX: {{^/foo/:[^:]+/lib/swift/linux/x86_64}} diff --git a/test/Driver/options-interpreter.swift b/test/Driver/options-interpreter.swift index c5b0598ea59f1..5f5ff7c826e00 100644 --- a/test/Driver/options-interpreter.swift +++ b/test/Driver/options-interpreter.swift @@ -18,8 +18,8 @@ // CHECK-RESOURCE-DIR-ONLY: # DYLD_LIBRARY_PATH=/RSRC/macosx{{$}} // RUN: %swift_driver_plain -sdk "" -### -target x86_64-unknown-linux-gnu -resource-dir /RSRC/ %s | %FileCheck -check-prefix=CHECK-RESOURCE-DIR-ONLY-LINUX${LD_LIBRARY_PATH+_LAX} %s -// CHECK-RESOURCE-DIR-ONLY-LINUX: # LD_LIBRARY_PATH=/RSRC/linux{{$}} -// CHECK-RESOURCE-DIR-ONLY-LINUX_LAX: # LD_LIBRARY_PATH=/RSRC/linux{{$|:}} +// CHECK-RESOURCE-DIR-ONLY-LINUX: # LD_LIBRARY_PATH=/RSRC/linux/x86_64{{$}} +// CHECK-RESOURCE-DIR-ONLY-LINUX_LAX: # LD_LIBRARY_PATH=/RSRC/linux/x86_64{{$|:}} // RUN: %swift_driver_plain -sdk "" -### -target x86_64-apple-macosx10.9 -L/foo/ %s | %FileCheck -check-prefix=CHECK-L %s // CHECK-L: # DYLD_LIBRARY_PATH={{/foo/:[^:]+/lib/swift/macosx$}} @@ -59,9 +59,9 @@ // CHECK-COMPLEX-DAG: DYLD_LIBRARY_PATH={{/foo2/:/bar2/:[^:]+/lib/swift/macosx:/sdkroot/usr/lib/swift($| )}} // RUN: %swift_driver_plain -sdk "" -### -target x86_64-unknown-linux-gnu -L/foo/ %s | %FileCheck -check-prefix=CHECK-L-LINUX${LD_LIBRARY_PATH+_LAX} %s -// CHECK-L-LINUX: # LD_LIBRARY_PATH={{/foo/:[^:]+/lib/swift/linux$}} -// CHECK-L-LINUX_LAX: # LD_LIBRARY_PATH={{/foo/:[^:]+/lib/swift/linux($|:)}} +// CHECK-L-LINUX: # LD_LIBRARY_PATH={{/foo/:[^:]+/lib/swift/linux/x86_64$}} +// CHECK-L-LINUX_LAX: # LD_LIBRARY_PATH={{/foo/:[^:]+/lib/swift/linux/x86_64($|:)}} // RUN: env LD_LIBRARY_PATH=/abc/ %swift_driver_plain -### -target x86_64-unknown-linux-gnu -L/foo/ -L/bar/ %s | %FileCheck -check-prefix=CHECK-LINUX-COMPLEX${LD_LIBRARY_PATH+_LAX} %s -// CHECK-LINUX-COMPLEX: # LD_LIBRARY_PATH={{/foo/:/bar/:[^:]+/lib/swift/linux:/abc/$}} -// CHECK-LINUX-COMPLEX_LAX: # LD_LIBRARY_PATH={{/foo/:/bar/:[^:]+/lib/swift/linux:/abc/($|:)}} +// CHECK-LINUX-COMPLEX: # LD_LIBRARY_PATH={{/foo/:/bar/:[^:]+/lib/swift/linux/x86_64:/abc/$}} +// CHECK-LINUX-COMPLEX_LAX: # LD_LIBRARY_PATH={{/foo/:/bar/:[^:]+/lib/swift/linux/x86_64:/abc/($|:)}} diff --git a/test/Reflection/conformance_descriptors.swift b/test/Reflection/conformance_descriptors.swift index 274d86c9b4a3f..3487bc34653e0 100644 --- a/test/Reflection/conformance_descriptors.swift +++ b/test/Reflection/conformance_descriptors.swift @@ -9,7 +9,7 @@ // RUN: %empty-directory(%t) // RUN: %target-build-swift %S/Inputs/ConcreteTypes.swift %S/Inputs/GenericTypes.swift %S/Inputs/Protocols.swift %S/Inputs/Extensions.swift %S/Inputs/Closures.swift %S/Inputs/Conformances.swift -parse-as-library -emit-module -emit-library -module-name ConformanceCheck -o %t/Conformances -// RUN: %target-swift-reflection-dump %t/Conformances %platform-module-dir/%target-library-name(swiftCore) | %FileCheck %s +// RUN: %target-swift-reflection-dump %t/Conformances %platform-dylib-dir/%target-library-name(swiftCore) | %FileCheck %s // CHECK: CONFORMANCES: // CHECK: ============= diff --git a/test/Reflection/typeref_lowering.swift b/test/Reflection/typeref_lowering.swift index 03df741b3d8e3..6c2803f788ecc 100644 --- a/test/Reflection/typeref_lowering.swift +++ b/test/Reflection/typeref_lowering.swift @@ -8,8 +8,8 @@ // RUN: %target-build-swift -Xfrontend -disable-availability-checking %S/Inputs/TypeLowering.swift -parse-as-library -emit-module -emit-library -module-name TypeLowering -o %t/%target-library-name(TypesToReflect) // RUN: %target-build-swift -Xfrontend -disable-availability-checking %S/Inputs/TypeLowering.swift %S/Inputs/main.swift -emit-module -emit-executable -module-name TypeLowering -o %t/TypesToReflect -// RUN: %target-swift-reflection-dump %t/%target-library-name(TypesToReflect) %platform-module-dir/%target-library-name(swiftCore) -dump-type-lowering < %s | %FileCheck %s --check-prefix=CHECK-%target-ptrsize -// RUN: %target-swift-reflection-dump %t/TypesToReflect %platform-module-dir/%target-library-name(swiftCore) -dump-type-lowering < %s | %FileCheck %s --check-prefix=CHECK-%target-ptrsize +// RUN: %target-swift-reflection-dump %t/%target-library-name(TypesToReflect) %platform-dylib-dir/%target-library-name(swiftCore) -dump-type-lowering < %s | %FileCheck %s --check-prefix=CHECK-%target-ptrsize +// RUN: %target-swift-reflection-dump %t/TypesToReflect %platform-dylib-dir/%target-library-name(swiftCore) -dump-type-lowering < %s | %FileCheck %s --check-prefix=CHECK-%target-ptrsize 12TypeLowering11BasicStructV // CHECK-64: (struct TypeLowering.BasicStruct) diff --git a/test/lit.cfg b/test/lit.cfg index 5bf2fd1cfe5d7..7af59a1e0ad2f 100644 --- a/test/lit.cfg +++ b/test/lit.cfg @@ -2047,6 +2047,9 @@ if platform.system() != 'Darwin': platform_module_dir = make_path(test_resource_dir, config.target_sdk_name) platform_dylib_dir = platform_module_dir +if platform.system() != 'Darwin': + platform_dylib_dir = make_path(test_resource_dir, relative_platform_module_dir_prefix) + if run_os == 'maccatalyst' and config.darwin_maccatalyst_build_flavor == "ios-like": # When using the ios-macabi triple, look for module files # in the 'maccatalyst' compiler resource directory. diff --git a/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake b/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake index 14d9a99a13a78..0db3418997002 100644 --- a/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake +++ b/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake @@ -123,7 +123,7 @@ function(add_sourcekit_swift_runtime_link_flags target path HAS_SWIFT_MODULES) # installed host toolchain. get_filename_component(swift_bin_dir ${SWIFT_EXEC_FOR_SWIFT_MODULES} DIRECTORY) get_filename_component(swift_dir ${swift_bin_dir} DIRECTORY) - set(host_lib_dir "${swift_dir}/lib/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}") + set(host_lib_dir "${swift_dir}/lib/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}/${SWIFT_HOST_VARIANT_ARCH}") target_link_libraries(${target} PRIVATE ${swiftrt}) target_link_libraries(${target} PRIVATE "swiftCore") @@ -132,7 +132,7 @@ function(add_sourcekit_swift_runtime_link_flags target path HAS_SWIFT_MODULES) if(ASKD_BOOTSTRAPPING_MODE STREQUAL "HOSTTOOLS") list(APPEND RPATH_LIST "${host_lib_dir}") else() - file(RELATIVE_PATH relative_rtlib_path "${path}" "${SWIFTLIB_DIR}/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}") + file(RELATIVE_PATH relative_rtlib_path "${path}" "${SWIFTLIB_DIR}/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}/${SWIFT_HOST_VARIANT_ARCH}") list(APPEND RPATH_LIST "$ORIGIN/${relative_rtlib_path}") endif() @@ -144,7 +144,7 @@ function(add_sourcekit_swift_runtime_link_flags target path HAS_SWIFT_MODULES) # At runtime link against the built swift libraries from the current # bootstrapping stage. - file(RELATIVE_PATH relative_rtlib_path "${path}" "${SWIFTLIB_DIR}/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}") + file(RELATIVE_PATH relative_rtlib_path "${path}" "${SWIFTLIB_DIR}/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}/${SWIFT_HOST_VARIANT_ARCH}") list(APPEND RPATH_LIST "$ORIGIN/${relative_rtlib_path}") elseif(ASKD_BOOTSTRAPPING_MODE STREQUAL "BOOTSTRAPPING-WITH-HOSTLIBS") diff --git a/utils/build-script-impl b/utils/build-script-impl index 1f24fc2d828c7..0e8ca0a9909fd 100755 --- a/utils/build-script-impl +++ b/utils/build-script-impl @@ -3287,7 +3287,7 @@ for host in "${ALL_HOSTS[@]}"; do ICU_BUILD_DIR=$(build_directory ${host} ${product}) ICU_INSTALL_DIR="$(get_host_install_destdir ${host})$(get_host_install_prefix ${host})" ICU_LIBDIR="$(build_directory ${host} swift)/lib/swift/${SWIFT_HOST_VARIANT}/${SWIFT_HOST_VARIANT_ARCH}" - LIBICU_DEST_DIR="${ICU_INSTALL_DIR}lib/swift/${SWIFT_HOST_VARIANT}" + LIBICU_DEST_DIR="${ICU_INSTALL_DIR}lib/swift/${SWIFT_HOST_VARIANT}/${SWIFT_HOST_VARIANT_ARCH}" call mkdir -p ${LIBICU_DEST_DIR} for l in uc i18n data @@ -3298,7 +3298,7 @@ for host in "${ALL_HOSTS[@]}"; do done if [ $(true_false "${BUILD_SWIFT_STATIC_STDLIB}") == "TRUE" ]; then - LIBICU_DEST_DIR_STATIC="${ICU_INSTALL_DIR}lib/swift_static/${SWIFT_HOST_VARIANT}" + LIBICU_DEST_DIR_STATIC="${ICU_INSTALL_DIR}lib/swift_static/${SWIFT_HOST_VARIANT}/${SWIFT_HOST_VARIANT_ARCH}" call mkdir -p ${LIBICU_DEST_DIR_STATIC} for l in uc i18n data do diff --git a/validation-test/execution/interpret-with-dependencies-linux.swift b/validation-test/execution/interpret-with-dependencies-unix.swift similarity index 62% rename from validation-test/execution/interpret-with-dependencies-linux.swift rename to validation-test/execution/interpret-with-dependencies-unix.swift index e1b43ca8c69eb..953ddbacc0361 100644 --- a/validation-test/execution/interpret-with-dependencies-linux.swift +++ b/validation-test/execution/interpret-with-dependencies-unix.swift @@ -1,4 +1,4 @@ -// REQUIRES: OS=linux-gnu +// UNSUPPORTED: OS=macosx || OS=tvos || OS=ios || OS=watchos || OS=windows-msvc // RUN: %empty-directory(%t) // RUN: echo 'int abc = 42;' | %clang -x c - -shared -fPIC -o %t/libabc.so @@ -8,9 +8,10 @@ // CHECK: {{okay}} // Now test a dependency on a library in the compiler's resource directory. -// RUN: %empty-directory(%t/rsrc/%target-sdk-name) -// RUN: ln -s %t/libabc.so %t/rsrc/%target-sdk-name/ -// RUN: ln -s %platform-module-dir/* %t/rsrc/%target-sdk-name/ +// RUN: %empty-directory(%t/rsrc/%relative-platform-module-dir-prefix) +// RUN: ln -s %t/libabc.so %t/rsrc/%relative-platform-module-dir-prefix/ +// RUN: ln -s %platform-module-dir/*.swiftmodule %t/rsrc/%target-sdk-name/ +// RUN: ln -s %test-resource-dir/%relative-platform-module-dir-prefix/* %t/rsrc/%relative-platform-module-dir-prefix/ // RUN: ln -s %platform-module-dir/../shims %t/rsrc/ // RUN: %empty-directory(%t/other) // RUN: ln -s %t/libfoo.so %t/other