Skip to content

Commit 2de093b

Browse files
authored
Merge pull request swiftlang#74758 from hyp/eng/swift6-android-overlay
[swift 6] cherry-pick Android NDK overlay into Swift 6
2 parents 1d20b96 + e9e4a52 commit 2de093b

File tree

79 files changed

+1234
-32
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+1234
-32
lines changed

lib/ClangImporter/ClangIncludePaths.cpp

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ createClangArgs(const ASTContext &ctx, clang::driver::Driver &clangDriver) {
180180

181181
static SmallVector<std::pair<std::string, std::string>, 2>
182182
getLibcFileMapping(ASTContext &ctx, StringRef modulemapFileName,
183-
std::optional<StringRef> maybeHeaderFileName,
183+
std::optional<ArrayRef<StringRef>> maybeHeaderFileNames,
184184
const llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> &vfs) {
185185
const llvm::Triple &triple = ctx.LangOpts.Target;
186186

@@ -220,18 +220,20 @@ getLibcFileMapping(ASTContext &ctx, StringRef modulemapFileName,
220220
SmallVector<std::pair<std::string, std::string>, 2> vfsMappings{
221221
{std::string(injectedModuleMapPath), std::string(actualModuleMapPath)}};
222222

223-
if (maybeHeaderFileName) {
224-
// TODO: remove the SwiftGlibc.h header and reference all Glibc headers
225-
// directly from the modulemap.
226-
Path actualHeaderPath = actualModuleMapPath;
227-
llvm::sys::path::remove_filename(actualHeaderPath);
228-
llvm::sys::path::append(actualHeaderPath, maybeHeaderFileName.value());
223+
if (maybeHeaderFileNames) {
224+
for (const auto &filename : *maybeHeaderFileNames) {
225+
// TODO: remove the SwiftGlibc.h header and reference all Glibc headers
226+
// directly from the modulemap.
227+
Path actualHeaderPath = actualModuleMapPath;
228+
llvm::sys::path::remove_filename(actualHeaderPath);
229+
llvm::sys::path::append(actualHeaderPath, filename);
229230

230-
Path injectedHeaderPath(libcDir);
231-
llvm::sys::path::append(injectedHeaderPath, maybeHeaderFileName.value());
231+
Path injectedHeaderPath(libcDir);
232+
llvm::sys::path::append(injectedHeaderPath, filename);
232233

233-
vfsMappings.push_back(
234-
{std::string(injectedHeaderPath), std::string(actualHeaderPath)});
234+
vfsMappings.push_back(
235+
{std::string(injectedHeaderPath), std::string(actualHeaderPath)});
236+
}
235237
}
236238

237239
return vfsMappings;
@@ -552,9 +554,14 @@ ClangInvocationFileMapping swift::getClangInvocationFileMapping(
552554
} else if (triple.isMusl()) {
553555
libcFileMapping =
554556
getLibcFileMapping(ctx, "musl.modulemap", StringRef("SwiftMusl.h"), vfs);
557+
} else if (triple.isAndroid()) {
558+
// Android uses the android-specific module map that overlays the NDK.
559+
StringRef headerFiles[] = {"SwiftAndroidNDK.h", "SwiftBionic.h"};
560+
libcFileMapping =
561+
getLibcFileMapping(ctx, "android.modulemap", headerFiles, vfs);
555562
} else if (triple.isOSGlibc() || triple.isOSOpenBSD() ||
556-
triple.isOSFreeBSD() || triple.isAndroid()) {
557-
// Android/BSD/Linux Mappings
563+
triple.isOSFreeBSD()) {
564+
// BSD/Linux Mappings
558565
libcFileMapping = getLibcFileMapping(ctx, "glibc.modulemap",
559566
StringRef("SwiftGlibc.h"), vfs);
560567

stdlib/cmake/modules/AddSwiftStdlib.cmake

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1761,6 +1761,9 @@ endfunction()
17611761
# SWIFT_MODULE_DEPENDS_WASI
17621762
# Swift modules this library depends on when built for WASI.
17631763
#
1764+
# SWIFT_MODULE_DEPENDS_ANDROID
1765+
# Swift modules this library depends on when built for Android.
1766+
#
17641767
# FRAMEWORK_DEPENDS
17651768
# System frameworks this library depends on.
17661769
#
@@ -1923,6 +1926,7 @@ function(add_swift_target_library name)
19231926
SWIFT_COMPILE_FLAGS_XROS
19241927
SWIFT_COMPILE_FLAGS_LINUX
19251928
SWIFT_MODULE_DEPENDS
1929+
SWIFT_MODULE_DEPENDS_ANDROID
19261930
SWIFT_MODULE_DEPENDS_CYGWIN
19271931
SWIFT_MODULE_DEPENDS_FREEBSD
19281932
SWIFT_MODULE_DEPENDS_FREESTANDING
@@ -2150,12 +2154,15 @@ function(add_swift_target_library name)
21502154
elseif(sdk STREQUAL "OPENBSD")
21512155
list(APPEND swiftlib_module_depends_flattened
21522156
${SWIFTLIB_SWIFT_MODULE_DEPENDS_OPENBSD})
2153-
elseif(sdk STREQUAL "LINUX" OR sdk STREQUAL "ANDROID")
2157+
elseif(sdk STREQUAL "LINUX")
21542158
list(APPEND swiftlib_module_depends_flattened
21552159
${SWIFTLIB_SWIFT_MODULE_DEPENDS_LINUX})
21562160
elseif(sdk STREQUAL "LINUX_STATIC")
21572161
list(APPEND swiftlib_module_depends_flattened
21582162
${SWIFTLIB_SWIFT_MODULE_DEPENDS_LINUX_STATIC})
2163+
elseif(sdk STREQUAL "ANDROID")
2164+
list(APPEND swiftlib_module_depends_flattened
2165+
${SWIFTLIB_SWIFT_MODULE_DEPENDS_ANDROID})
21592166
elseif(sdk STREQUAL "CYGWIN")
21602167
list(APPEND swiftlib_module_depends_flattened
21612168
${SWIFTLIB_SWIFT_MODULE_DEPENDS_CYGWIN})
@@ -2999,6 +3006,7 @@ function(add_swift_target_executable name)
29993006
DEPENDS
30003007
LINK_LIBRARIES
30013008
SWIFT_MODULE_DEPENDS
3009+
SWIFT_MODULE_DEPENDS_ANDROID
30023010
SWIFT_MODULE_DEPENDS_CYGWIN
30033011
SWIFT_MODULE_DEPENDS_FREEBSD
30043012
SWIFT_MODULE_DEPENDS_FREESTANDING
@@ -3112,12 +3120,15 @@ function(add_swift_target_executable name)
31123120
elseif(sdk STREQUAL "OPENBSD")
31133121
list(APPEND swiftexe_module_depends_flattened
31143122
${SWIFTEXE_TARGET_SWIFT_MODULE_DEPENDS_OPENBSD})
3115-
elseif(sdk STREQUAL "LINUX" OR sdk STREQUAL "ANDROID")
3123+
elseif(sdk STREQUAL "LINUX")
31163124
list(APPEND swiftexe_module_depends_flattened
31173125
${SWIFTEXE_TARGET_SWIFT_MODULE_DEPENDS_LINUX})
31183126
elseif(sdk STREQUAL "LINUX_STATIC")
31193127
list(APPEND swiftexe_module_depends_flattened
31203128
${SWIFTEXE_TARGET_SWIFT_MODULE_DEPENDS_LINUX_STATIC})
3129+
elseif(sdk STREQUAL "ANDROID")
3130+
list(APPEND swiftexe_module_depends_flattened
3131+
${SWIFTEXE_TARGET_SWIFT_MODULE_DEPENDS_ANDROID})
31213132
elseif(sdk STREQUAL "CYGWIN")
31223133
list(APPEND swiftexe_module_depends_flattened
31233134
${SWIFTEXE_TARGET_SWIFT_MODULE_DEPENDS_CYGWIN})

stdlib/private/RuntimeUnittest/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ add_swift_target_library(swiftRuntimeUnittest ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES
88
ExclusivityTests.cpp
99

1010
SWIFT_MODULE_DEPENDS StdlibUnittest
11+
SWIFT_MODULE_DEPENDS_ANDROID Android
1112
SWIFT_MODULE_DEPENDS_LINUX Glibc
1213
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
1314
SWIFT_MODULE_DEPENDS_OPENBSD Glibc

stdlib/private/StdlibCollectionUnittest/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ add_swift_target_library(swiftStdlibCollectionUnittest ${SWIFT_STDLIB_LIBRARY_BU
1919
WriteBackMutableSlice.swift
2020

2121
SWIFT_MODULE_DEPENDS StdlibUnittest
22+
SWIFT_MODULE_DEPENDS_ANDROID Android
2223
SWIFT_MODULE_DEPENDS_LINUX Glibc
2324
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
2425
SWIFT_MODULE_DEPENDS_OPENBSD Glibc

stdlib/private/StdlibUnicodeUnittest/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ add_swift_target_library(swiftStdlibUnicodeUnittest ${SWIFT_STDLIB_LIBRARY_BUILD
1010
WordBreaking.swift
1111

1212
SWIFT_MODULE_DEPENDS StdlibUnittest
13+
SWIFT_MODULE_DEPENDS_ANDROID Android
1314
SWIFT_MODULE_DEPENDS_LINUX Glibc
1415
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
1516
SWIFT_MODULE_DEPENDS_OPENBSD Glibc

stdlib/private/StdlibUnittest/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ add_swift_target_library(swiftStdlibUnittest ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES}
6262
SWIFT_MODULE_DEPENDS_XROS ${swift_stdlib_unittest_darwin_dependencies}
6363
SWIFT_MODULE_DEPENDS_MACCATALYST ${swift_stdlib_unittest_darwin_dependencies}
6464
SWIFT_MODULE_DEPENDS_FREESTANDING "${SWIFT_FREESTANDING_TEST_DEPENDENCIES}"
65+
SWIFT_MODULE_DEPENDS_ANDROID Android
6566
SWIFT_MODULE_DEPENDS_LINUX Glibc
6667
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
6768
SWIFT_MODULE_DEPENDS_OPENBSD Glibc

stdlib/private/StdlibUnittest/RaceTest.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ import Darwin
4545
import Glibc
4646
#elseif canImport(Musl)
4747
import Musl
48+
#elseif canImport(Android)
49+
import Android
4850
#elseif os(WASI)
4951
import WASILibc
5052
#elseif os(Windows)

stdlib/private/StdlibUnittest/StdlibCoreExtras.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import Darwin
1818
import Glibc
1919
#elseif canImport(Musl)
2020
import Musl
21+
#elseif canImport(Android)
22+
import Android
2123
#elseif os(WASI)
2224
import WASILibc
2325
#elseif os(Windows)

stdlib/private/StdlibUnittest/StdlibUnittest.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import Darwin
2424
import Glibc
2525
#elseif canImport(Musl)
2626
import Musl
27+
#elseif canImport(Android)
28+
import Android
2729
#elseif os(WASI)
2830
import WASILibc
2931
#elseif os(Windows)

stdlib/private/SwiftPrivate/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ add_swift_target_library(swiftSwiftPrivate ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} I
2727
SWIFT_MODULE_DEPENDS_WATCHOS ${swift_swiftprivate_darwin_depencencies}
2828
SWIFT_MODULE_DEPENDS_MACCATALYST ${swift_swiftprivate_darwin_depencencies}
2929
SWIFT_MODULE_DEPENDS_FREESTANDING "${SWIFT_FREESTANDING_TEST_DEPENDENCIES}"
30+
SWIFT_MODULE_DEPENDS_ANDROID Android
3031
SWIFT_MODULE_DEPENDS_LINUX Glibc
3132
SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl
3233
SWIFT_MODULE_DEPENDS_FREEBSD Glibc

0 commit comments

Comments
 (0)