Skip to content

Commit 267efe3

Browse files
committed
Update stdlib layout
1 parent 686f550 commit 267efe3

File tree

11 files changed

+119
-86
lines changed

11 files changed

+119
-86
lines changed

cmake/modules/AddSwift.cmake

Lines changed: 70 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1921,7 +1921,55 @@ function(add_swift_target_library name)
19211921
DEPLOYMENT_VERSION_WATCHOS "${SWIFTLIB_DEPLOYMENT_VERSION_WATCHOS}"
19221922
)
19231923

1924-
if(NOT SWIFTLIB_OBJECT_LIBRARY)
1924+
if(NOT SWIFTLIB_OBJECT_LIBRARY AND NOT "${sdk}" IN_LIST SWIFT_APPLE_PLATFORMS)
1925+
compute_library_subdir(library_subdir ${sdk} ${arch})
1926+
1927+
# Determine the subdirectory where this library will be installed.
1928+
set(resource_dir_sdk_subdir "${SWIFT_SDK_${sdk}_LIB_SUBDIR}")
1929+
precondition(resource_dir_sdk_subdir)
1930+
1931+
if(SWIFTLIB_SHARED)
1932+
set(resource_dir "swift")
1933+
set(file_permissions
1934+
OWNER_READ OWNER_WRITE OWNER_EXECUTE
1935+
GROUP_READ GROUP_EXECUTE
1936+
WORLD_READ WORLD_EXECUTE)
1937+
else()
1938+
set(resource_dir "swift_static")
1939+
set(file_permissions
1940+
OWNER_READ OWNER_WRITE
1941+
GROUP_READ
1942+
WORLD_READ)
1943+
endif()
1944+
1945+
swift_install_in_component("${SWIFTLIB_INSTALL_IN_COMPONENT}"
1946+
FILES $<TARGET_FILE:${VARIANT_NAME}>
1947+
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/${resource_dir}/${resource_dir_sdk_subdir}/${arch}"
1948+
PERMISSIONS ${file_permissions})
1949+
1950+
swift_is_installing_component("${SWIFTLIB_INSTALL_IN_COMPONENT}" is_installing)
1951+
if(NOT is_installing)
1952+
set_property(GLOBAL APPEND PROPERTY SWIFT_BUILDTREE_EXPORTS ${VARIANT_NAME})
1953+
else()
1954+
set_property(GLOBAL APPEND PROPERTY SWIFT_EXPORTS ${VARIANT_NAME})
1955+
endif()
1956+
1957+
# Add Swift standard library targets as dependencies to the top-level
1958+
# convenience target.
1959+
set(FILTERED_UNITTESTS
1960+
swiftStdlibCollectionUnittest
1961+
swiftStdlibUnicodeUnittest)
1962+
1963+
if(TARGET "swift-stdlib${VARIANT_SUFFIX}" AND
1964+
TARGET "swift-test-stdlib${VARIANT_SUFFIX}")
1965+
add_dependencies("swift-stdlib${VARIANT_SUFFIX}" ${VARIANT_NAME})
1966+
if(NOT "${name}" IN_LIST FILTERED_UNITTESTS)
1967+
add_dependencies("swift-test-stdlib${VARIANT_SUFFIX}" ${VARIANT_NAME})
1968+
endif()
1969+
endif()
1970+
endif()
1971+
1972+
if(NOT SWIFTLIB_OBJECT_LIBRARY AND "${sdk}" IN_LIST SWIFT_APPLE_PLATFORMS)
19251973
# Add dependencies on the (not-yet-created) custom lipo target.
19261974
foreach(DEP ${SWIFTLIB_LINK_LIBRARIES})
19271975
if (NOT "${DEP}" STREQUAL "icucore")
@@ -1945,28 +1993,18 @@ function(add_swift_target_library name)
19451993
endif()
19461994
endforeach()
19471995

1948-
if(NOT SWIFTLIB_OBJECT_LIBRARY)
1996+
if(NOT SWIFTLIB_OBJECT_LIBRARY AND "${sdk}" IN_LIST SWIFT_APPLE_PLATFORMS)
19491997
# Determine the name of the universal library.
19501998
if(SWIFTLIB_SHARED)
1951-
if("${sdk}" STREQUAL "WINDOWS")
1952-
set(UNIVERSAL_LIBRARY_NAME
1953-
"${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${name}.dll")
1954-
else()
1955-
set(UNIVERSAL_LIBRARY_NAME
1956-
"${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${name}${CMAKE_SHARED_LIBRARY_SUFFIX}")
1957-
endif()
1999+
set(UNIVERSAL_LIBRARY_NAME
2000+
"${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${name}${CMAKE_SHARED_LIBRARY_SUFFIX}")
19582001
else()
1959-
if("${sdk}" STREQUAL "WINDOWS")
1960-
set(UNIVERSAL_LIBRARY_NAME
1961-
"${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${name}.lib")
1962-
else()
1963-
set(UNIVERSAL_LIBRARY_NAME
1964-
"${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${name}${CMAKE_STATIC_LIBRARY_SUFFIX}")
1965-
endif()
2002+
set(UNIVERSAL_LIBRARY_NAME
2003+
"${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${name}${CMAKE_STATIC_LIBRARY_SUFFIX}")
19662004
endif()
19672005

19682006
set(lipo_target "${name}-${SWIFT_SDK_${sdk}_LIB_SUBDIR}")
1969-
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin" AND SWIFTLIB_SHARED)
2007+
if(SWIFTLIB_SHARED)
19702008
set(codesign_arg CODESIGN)
19712009
endif()
19722010
precondition(THIN_INPUT_TARGETS)
@@ -2007,17 +2045,6 @@ function(add_swift_target_library name)
20072045
FILES "${UNIVERSAL_LIBRARY_NAME}"
20082046
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/${resource_dir}/${resource_dir_sdk_subdir}"
20092047
PERMISSIONS ${file_permissions})
2010-
if(sdk STREQUAL WINDOWS)
2011-
foreach(arch ${SWIFT_SDK_WINDOWS_ARCHITECTURES})
2012-
if(TARGET ${name}-windows-${arch}_IMPLIB)
2013-
get_target_property(import_library ${name}-windows-${arch}_IMPLIB IMPORTED_LOCATION)
2014-
swift_install_in_component(${SWIFTLIB_INSTALL_IN_COMPONENT}
2015-
FILES ${import_library}
2016-
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/${resource_dir}/${resource_dir_sdk_subdir}/${arch}"
2017-
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
2018-
endif()
2019-
endforeach()
2020-
endif()
20212048

20222049
swift_is_installing_component("${SWIFTLIB_INSTALL_IN_COMPONENT}" is_installing)
20232050
if(NOT is_installing)
@@ -2270,12 +2297,21 @@ function(add_swift_target_executable name)
22702297
add_dependencies("swift-test-stdlib${VARIANT_SUFFIX}" ${VARIANT_NAME})
22712298
endif()
22722299

2273-
# Don't add the ${arch} to the suffix. We want to link against fat
2274-
# libraries.
2275-
_list_add_string_suffix(
2276-
"${SWIFTEXE_TARGET_DEPENDS}"
2277-
"-${SWIFT_SDK_${sdk}_LIB_SUBDIR}"
2278-
SWIFTEXE_TARGET_DEPENDS_with_suffix)
2300+
# We don't add the ${arch} to the target suffix because we want to link
2301+
# against fat libraries. This only works for the Darwin targets as MachO is
2302+
# the only format with the fat libraries.
2303+
if(${sdk} IN_LIST SWIFT_APPLE_PLATFORMS)
2304+
_list_add_string_suffix(
2305+
"${SWIFTEXE_TARGET_DEPENDS}"
2306+
"-${SWIFT_SDK_${sdk}_LIB_SUBDIR}"
2307+
SWIFTEXE_TARGET_DEPENDS_with_suffix)
2308+
else()
2309+
_list_add_string_suffix(
2310+
"${SWIFTEXE_TARGET_DEPENDS}"
2311+
"-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}"
2312+
SWIFTEXE_TARGET_DEPENDS_with_suffix)
2313+
endif()
2314+
22792315
_add_swift_executable_single(
22802316
${VARIANT_NAME}
22812317
${SWIFTEXE_TARGET_SOURCES}

lib/Driver/ToolChains.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1046,6 +1046,12 @@ void ToolChain::getClangLibraryPath(const ArgList &Args,
10461046
const llvm::Triple &T = getTriple();
10471047

10481048
getRuntimeLibraryPath(LibPath, Args, /*Shared=*/true);
1049+
1050+
// Remove arch name.
1051+
if (!T.isOSDarwin()) {
1052+
llvm::sys::path::remove_filename(LibPath);
1053+
}
1054+
10491055
// Remove platform name.
10501056
llvm::sys::path::remove_filename(LibPath);
10511057
llvm::sys::path::append(LibPath, "clang", "lib",
@@ -1072,8 +1078,13 @@ void ToolChain::getRuntimeLibraryPath(SmallVectorImpl<char> &runtimeLibPath,
10721078
llvm::sys::path::append(runtimeLibPath, "lib",
10731079
shared ? "swift" : "swift_static");
10741080
}
1081+
const llvm::Triple &T = getTriple();
1082+
10751083
llvm::sys::path::append(runtimeLibPath,
1076-
getPlatformNameForTriple(getTriple()));
1084+
getPlatformNameForTriple(T));
1085+
1086+
if (!Triple.isOSDarwin())
1087+
llvm::sys::path::append(runtimeLibPath, getMajorArchitectureName(Triple));
10771088
}
10781089

10791090
bool ToolChain::sanitizerRuntimeLibExists(const ArgList &args,

lib/Driver/UnixToolChains.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,8 +226,6 @@ toolchains::GenericUnix::constructInvocation(const LinkJobAction &job,
226226
}
227227

228228
SmallString<128> swiftrtPath = SharedRuntimeLibPath;
229-
llvm::sys::path::append(swiftrtPath,
230-
swift::getMajorArchitectureName(getTriple()));
231229
llvm::sys::path::append(swiftrtPath, "swiftrt.o");
232230
Arguments.push_back(context.Args.MakeArgString(swiftrtPath));
233231

@@ -314,6 +312,7 @@ toolchains::GenericUnix::constructInvocation(const LinkJobAction &job,
314312

315313
if (context.Args.hasArg(options::OPT_profile_generate)) {
316314
SmallString<128> LibProfile(SharedRuntimeLibPath);
315+
llvm::sys::path::remove_filename(LibProfile); // remove arh name
317316
llvm::sys::path::remove_filename(LibProfile); // remove platform name
318317
llvm::sys::path::append(LibProfile, "clang", "lib");
319318

lib/Driver/WindowsToolChains.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,6 @@ toolchains::Windows::constructInvocation(const LinkJobAction &job,
120120
}
121121

122122
SmallString<128> swiftrtPath = SharedRuntimeLibPath;
123-
llvm::sys::path::append(swiftrtPath,
124-
swift::getMajorArchitectureName(getTriple()));
125123
llvm::sys::path::append(swiftrtPath, "swiftrt.obj");
126124
Arguments.push_back(context.Args.MakeArgString(swiftrtPath));
127125

@@ -155,6 +153,7 @@ toolchains::Windows::constructInvocation(const LinkJobAction &job,
155153

156154
if (context.Args.hasArg(options::OPT_profile_generate)) {
157155
SmallString<128> LibProfile(SharedRuntimeLibPath);
156+
llvm::sys::path::remove_filename(LibProfile); // remove arch name
158157
llvm::sys::path::remove_filename(LibProfile); // remove platform name
159158
llvm::sys::path::append(LibProfile, "clang", "lib");
160159

lib/Frontend/CompilerInvocation.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,19 @@ static void updateRuntimeLibraryPath(SearchPathOptions &SearchPathOpts,
4646
llvm::Triple &Triple) {
4747
llvm::SmallString<128> LibPath(SearchPathOpts.RuntimeResourcePath);
4848

49-
llvm::sys::path::append(LibPath, getPlatformNameForTriple(Triple));
50-
SearchPathOpts.RuntimeLibraryPath = LibPath.str();
49+
if (Triple.isOSDarwin()) {
50+
llvm::sys::path::append(LibPath, getPlatformNameForTriple(Triple));
51+
SearchPathOpts.RuntimeLibraryPath = LibPath.str();
5152

52-
llvm::sys::path::append(LibPath, swift::getMajorArchitectureName(Triple));
53-
SearchPathOpts.RuntimeLibraryImportPath = LibPath.str();
53+
llvm::sys::path::append(LibPath, getMajorArchitectureName(Triple));
54+
SearchPathOpts.RuntimeLibraryImportPath = LibPath.str();
55+
} else {
56+
llvm::sys::path::append(LibPath, getPlatformNameForTriple(Triple),
57+
getMajorArchitectureName(Triple));
58+
59+
SearchPathOpts.RuntimeLibraryPath = LibPath.str();
60+
SearchPathOpts.RuntimeLibraryImportPath = LibPath.str();
61+
}
5462
}
5563

5664
void CompilerInvocation::setRuntimeResourcePath(StringRef Path,

test/CMakeLists.txt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,15 @@ foreach(SDK ${SWIFT_SDKS})
204204
list(APPEND test_dependencies "touch-covering-tests")
205205
endif()
206206

207-
set(validation_test_dependencies
208-
"swiftStdlibCollectionUnittest-${SWIFT_SDK_${SDK}_LIB_SUBDIR}"
209-
"swiftStdlibUnicodeUnittest-${SWIFT_SDK_${SDK}_LIB_SUBDIR}")
207+
if("${SDK}" IN_LIST SWIFT_APPLE_PLATFORMS)
208+
set(validation_test_dependencies
209+
"swiftStdlibCollectionUnittest-${SWIFT_SDK_${SDK}_LIB_SUBDIR}"
210+
"swiftStdlibUnicodeUnittest-${SWIFT_SDK_${SDK}_LIB_SUBDIR}")
211+
else()
212+
set(validation_test_dependencies
213+
"swiftStdlibCollectionUnittest-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-${ARCH}"
214+
"swiftStdlibUnicodeUnittest-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-${ARCH}")
215+
endif()
210216

211217
set(command_upload_stdlib)
212218
set(command_upload_swift_reflection_test)

test/Driver/options-interpreter.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
// CHECK-RESOURCE-DIR-ONLY: # DYLD_LIBRARY_PATH=/RSRC/macosx{{$}}
1919

2020
// RUN: %swift_driver -### -target x86_64-unknown-linux-gnu -resource-dir /RSRC/ %s | %FileCheck -check-prefix=CHECK-RESOURCE-DIR-ONLY-LINUX${LD_LIBRARY_PATH+_LAX} %s
21-
// CHECK-RESOURCE-DIR-ONLY-LINUX: # LD_LIBRARY_PATH=/RSRC/linux{{$}}
22-
// CHECK-RESOURCE-DIR-ONLY-LINUX_LAX: # LD_LIBRARY_PATH=/RSRC/linux{{$|:}}
21+
// CHECK-RESOURCE-DIR-ONLY-LINUX: # LD_LIBRARY_PATH=/RSRC/linux/x86_64{{$}}
22+
// CHECK-RESOURCE-DIR-ONLY-LINUX_LAX: # LD_LIBRARY_PATH=/RSRC/linux/x86_64{{$|:}}
2323

2424
// RUN: %swift_driver -### -target x86_64-apple-macosx10.9 -L/foo/ %s | %FileCheck -check-prefix=CHECK-L %s
2525
// CHECK-L: # DYLD_LIBRARY_PATH={{/foo/:[^:]+/lib/swift/macosx$}}
@@ -59,9 +59,9 @@
5959
// CHECK-COMPLEX-DAG: DYLD_LIBRARY_PATH={{/foo2/:/bar2/:[^:]+/lib/swift/macosx($| )}}
6060

6161
// RUN: %swift_driver -### -target x86_64-unknown-linux-gnu -L/foo/ %s | %FileCheck -check-prefix=CHECK-L-LINUX${LD_LIBRARY_PATH+_LAX} %s
62-
// CHECK-L-LINUX: # LD_LIBRARY_PATH={{/foo/:[^:]+/lib/swift/linux$}}
63-
// CHECK-L-LINUX_LAX: # LD_LIBRARY_PATH={{/foo/:[^:]+/lib/swift/linux($|:)}}
62+
// CHECK-L-LINUX: # LD_LIBRARY_PATH={{/foo/:[^:]+/lib/swift/linux/x86_64$}}
63+
// CHECK-L-LINUX_LAX: # LD_LIBRARY_PATH={{/foo/:[^:]+/lib/swift/linux/x86_64($|:)}}
6464

6565
// 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
66-
// CHECK-LINUX-COMPLEX: # LD_LIBRARY_PATH={{/foo/:/bar/:[^:]+/lib/swift/linux:/abc/$}}
67-
// CHECK-LINUX-COMPLEX_LAX: # LD_LIBRARY_PATH={{/foo/:/bar/:[^:]+/lib/swift/linux:/abc/($|:)}}
66+
// CHECK-LINUX-COMPLEX: # LD_LIBRARY_PATH={{/foo/:/bar/:[^:]+/lib/swift/linux/x86_64:/abc/$}}
67+
// CHECK-LINUX-COMPLEX_LAX: # LD_LIBRARY_PATH={{/foo/:/bar/:[^:]+/lib/swift/linux/x86_64:/abc/($|:)}}

utils/build-script-impl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3616,7 +3616,7 @@ for host in "${ALL_HOSTS[@]}"; do
36163616
ICU_BUILD_DIR=$(build_directory ${host} ${product})
36173617
ICU_INSTALL_DIR="$(get_host_install_destdir ${host})$(get_host_install_prefix ${host})"
36183618
ICU_LIBDIR="$(build_directory ${host} swift)/lib/swift/${SWIFT_HOST_VARIANT}/${SWIFT_HOST_VARIANT_ARCH}"
3619-
LIBICU_DEST_DIR="${ICU_INSTALL_DIR}lib/swift/${SWIFT_HOST_VARIANT}"
3619+
LIBICU_DEST_DIR="${ICU_INSTALL_DIR}lib/swift/${SWIFT_HOST_VARIANT}/${SWIFT_HOST_VARIANT_ARCH}"
36203620
mkdir -p ${LIBICU_DEST_DIR}
36213621

36223622
for l in uc i18n data

utils/build_swift/tests/test_presets.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
'swift_install_destdir': '/tmp/install/swift',
4242
'symbols_package': '/path/to/symbols/package',
4343
'ndk_path': '/path/to/ndk',
44-
'arm_dir': '/path/to/arm',
44+
'icu_dir': '/path/to/arm',
4545
}
4646

4747
SAMPLE_PRESET = """

utils/update_checkout/update-checkout-config.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,17 @@
1313
"cmark": {
1414
"remote": { "id": "apple/swift-cmark" } },
1515
"llbuild": {
16-
"remote": { "id": "apple/swift-llbuild" } },
16+
"remote": { "id": "readdle/swift-llbuild" } },
1717
"swiftpm": {
18-
"remote": { "id": "apple/swift-package-manager" } },
18+
"remote": { "id": "readdle/swift-package-manager" } },
1919
"swift-syntax": {
2020
"remote": { "id": "apple/swift-syntax" } },
2121
"swift-stress-tester": {
2222
"remote": { "id": "apple/swift-stress-tester" } },
2323
"compiler-rt": {
2424
"remote": { "id": "apple/swift-compiler-rt" } },
2525
"swift-corelibs-xctest": {
26-
"remote": { "id": "apple/swift-corelibs-xctest" } },
26+
"remote": { "id": "readdle/swift-corelibs-xctest" } },
2727
"swift-corelibs-foundation": {
2828
"remote": { "id": "readdle/swift-corelibs-foundation" } },
2929
"swift-corelibs-libdispatch": {
@@ -233,11 +233,11 @@
233233
"swift": "swift-android-5.0-branch",
234234
"lldb": "swift-5.0-branch",
235235
"cmark": "swift-5.0-branch",
236-
"llbuild": "swift-5.0-branch",
237-
"swiftpm": "swift-5.0-branch",
236+
"llbuild": "swift-android-5.0-branch",
237+
"swiftpm": "swift-android-5.0-branch",
238238
"swift-syntax": "swift-5.0-branch",
239239
"swift-stress-tester": "swift-5.0-branch",
240-
"swift-corelibs-xctest": "swift-5.0-branch",
240+
"swift-corelibs-xctest": "swift-android-5.0-branch",
241241
"swift-corelibs-foundation": "swift-android-5.0-branch",
242242
"swift-corelibs-libdispatch": "swift-android-5.0-branch",
243243
"swift-integration-tests": "swift-5.0-branch",

validation-test/execution/interpret-with-dependencies-linux.swift

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)