Skip to content

Commit 0c30f55

Browse files
authored
Merge pull request swiftlang#75626 from compnerd/android-configuration
utils: improve android swift-corelibs-foundation support
2 parents f1d2da1 + f771933 commit 0c30f55

File tree

1 file changed

+38
-20
lines changed

1 file changed

+38
-20
lines changed

utils/build.ps1

+38-20
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ $AndroidARM64 = @{
269269
CMakeName = "aarch64";
270270
LLVMName = "aarch64";
271271
LLVMTarget = "aarch64-unknown-linux-android$AndroidAPILevel";
272+
ShortName = "arm64";
272273
BuildID = 400;
273274
BinaryCache = "$BinaryCache\aarch64";
274275
PlatformInstallRoot = "$BinaryCache\arm64\Android.platform";
@@ -283,6 +284,7 @@ $AndroidARMv7 = @{
283284
CMakeName = "armv7-a";
284285
LLVMName = "armv7";
285286
LLVMTarget = "armv7-unknown-linux-androideabi$AndroidAPILevel";
287+
ShortName = "armv7";
286288
BuildID = 500;
287289
BinaryCache = "$BinaryCache\armv7";
288290
PlatformInstallRoot = "$BinaryCache\armv7\Android.platform";
@@ -297,6 +299,7 @@ $AndroidX86 = @{
297299
CMakeName = "i686";
298300
LLVMName = "i686";
299301
LLVMTarget = "i686-unknown-linux-android$AndroidAPILevel";
302+
ShortName = "i686";
300303
BuildID = 600;
301304
BinaryCache = "$BinaryCache\i686";
302305
PlatformInstallRoot = "$BinaryCache\x86\Android.platform";
@@ -311,6 +314,7 @@ $AndroidX64 = @{
311314
CMakeName = "x86_64";
312315
LLVMName = "x86_64";
313316
LLVMTarget = "x86_64-unknown-linux-android$AndroidAPILevel";
317+
ShortName = "x86_64";
314318
BuildID = 700;
315319
BinaryCache = "$BinaryCache\x86_64";
316320
PlatformInstallRoot = "$BinaryCache\x64\Android.platform";
@@ -1056,36 +1060,44 @@ function Build-CMakeProject {
10561060
}
10571061
TryAdd-KeyValue $Defines CMAKE_Swift_COMPILER_TARGET $Arch.LLVMTarget.Replace("$AndroidAPILevel", "")
10581062
if ($UseBuiltCompilers.Contains("Swift")) {
1059-
if ($SwiftSDK -ne "") {
1060-
$SwiftArgs += @("-sdk", $SwiftSDK)
1061-
} else {
1062-
$RuntimeBinaryCache = Get-TargetProjectBinaryCache $Arch Runtime
1063-
$SwiftResourceDir = "${RuntimeBinaryCache}\lib\swift"
1064-
1065-
switch ($Platform) {
1066-
Windows {
1063+
$RuntimeBinaryCache = Get-TargetProjectBinaryCache $Arch Runtime
1064+
$SwiftResourceDir = "${RuntimeBinaryCache}\lib\swift"
1065+
1066+
switch ($Platform) {
1067+
Windows {
1068+
if ($SwiftSDK -ne "") {
1069+
$SwiftArgs += @("-sdk", $SwiftSDK)
1070+
} else {
10671071
$SwiftArgs += @(
10681072
"-vfsoverlay", "$RuntimeBinaryCache\stdlib\windows-vfs-overlay.yaml",
10691073
"-strict-implicit-module-context",
10701074
"-Xcc", "-Xclang", "-Xcc", "-fbuiltin-headers-in-system-modules"
10711075
)
1076+
$SwiftArgs += @("-resource-dir", "$SwiftResourceDir")
1077+
$SwiftArgs += @("-L", "$SwiftResourceDir\$($Platform.ToString().ToLowerInvariant())")
10721078
}
1073-
Android {
1074-
$androidNDKPath = Get-AndroidNDKPath
1079+
}
1080+
Android {
1081+
$androidNDKPath = Get-AndroidNDKPath
1082+
if ($SwiftSDK -ne "") {
1083+
$SwiftArgs += @("-sdk", $SwiftSDK)
1084+
$SwiftArgs += @("-sysroot", "$androidNDKPath\toolchains\llvm\prebuilt\windows-x86_64\sysroot")
1085+
} else {
10751086
$SwiftArgs += @("-sdk", "$androidNDKPath\toolchains\llvm\prebuilt\windows-x86_64\sysroot")
1076-
$SwiftArgs += @(
1077-
"-Xclang-linker", "-target",
1078-
"-Xclang-linker", $Arch.LLVMTarget,
1079-
"-Xclang-linker", "--sysroot",
1080-
"-Xclang-linker", "$androidNDKPath\toolchains\llvm\prebuilt\windows-x86_64\sysroot",
1081-
"-Xclang-linker", "-resource-dir",
1082-
"-Xclang-linker", "$androidNDKPath\toolchains\llvm\prebuilt\windows-x86_64\lib\clang\17"
1083-
)
1087+
$SwiftArgs += @("-resource-dir", "$SwiftResourceDir")
1088+
$SwiftArgs += @("-L", "$SwiftResourceDir\$($Platform.ToString().ToLowerInvariant())")
10841089
}
1090+
$SwiftArgs += @(
1091+
"-Xclang-linker", "-target",
1092+
"-Xclang-linker", $Arch.LLVMTarget,
1093+
"-Xclang-linker", "--sysroot",
1094+
"-Xclang-linker", "$androidNDKPath\toolchains\llvm\prebuilt\windows-x86_64\sysroot",
1095+
"-Xclang-linker", "-resource-dir",
1096+
"-Xclang-linker", "$androidNDKPath\toolchains\llvm\prebuilt\windows-x86_64\lib\clang\17"
1097+
)
10851098
}
1086-
$SwiftArgs += @("-resource-dir", "$SwiftResourceDir")
1087-
$SwiftArgs += @("-L", "$SwiftResourceDir\$($Platform.ToString().ToLowerInvariant())")
10881099
}
1100+
10891101
} else {
10901102
$SwiftArgs += @("-sdk", (Get-PinnedToolchainSDK))
10911103
}
@@ -1775,6 +1787,12 @@ function Build-Foundation([Platform]$Platform, $Arch, [switch]$Test = $false) {
17751787
$Targets = @("default")
17761788
$InstallPath = "$($Arch.SDKInstallRoot)\usr"
17771789

1790+
$SDKRoot = if ($Platform -eq "Windows") {
1791+
""
1792+
} else {
1793+
(Get-Variable "${Platform}$($Arch.ShortName)" -ValueOnly).SDKInstallRoot
1794+
}
1795+
17781796
Build-CMakeProject `
17791797
-Src $SourceCache\swift-corelibs-foundation `
17801798
-Bin $FoundationBinaryCache `

0 commit comments

Comments
 (0)