Skip to content

Commit 351d66a

Browse files
authored
Merge pull request #79615 from compnerd/ndks
utils: begin supporting new NDKs when building
2 parents 1d28b5c + da11b51 commit 351d66a

File tree

1 file changed

+28
-17
lines changed

1 file changed

+28
-17
lines changed

utils/build.ps1

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ param
139139
[string] $PinnedToolchainVariant = "Asserts",
140140
[string] $PythonVersion = "3.9.10",
141141
[ValidatePattern("^r(?:[1-9]|[1-9][0-9])(?:[a-z])?$")]
142-
[string] $AndroidNDKVersion = "r26b",
142+
[string] $AndroidNDKVersion = "r27c",
143143
[ValidatePattern("^\d+\.\d+\.\d+(?:-\w+)?")]
144144
[string] $WinSDKVersion = "",
145145
[switch] $Android = $false,
@@ -346,13 +346,32 @@ $BuildArch = switch ($BuildArchName) {
346346
default { throw "Unsupported processor architecture" }
347347
}
348348

349+
$KnownNDKs = @{
350+
r26b = @{
351+
URL = "https://dl.google.com/android/repository/android-ndk-r26b-windows.zip"
352+
SHA256 = "A478D43D4A45D0D345CDA6BE50D79642B92FB175868D9DC0DFC86181D80F691E"
353+
ClangVersion = 17
354+
}
355+
r27c = @{
356+
URL = "https://dl.google.com/android/repository/android-ndk-r27c-windows.zip"
357+
SHA256 = "27E49F11E0CEE5800983D8AF8F4ACD5BF09987AA6F790D4439DDA9F3643D2494"
358+
ClangVersion = 18
359+
}
360+
}
361+
362+
349363
$IsCrossCompiling = $HostArchName -ne $BuildArchName
350364

351365
$TimingData = New-Object System.Collections.Generic.List[System.Object]
352366

367+
function Get-AndroidNDK {
368+
$NDK = $KnownNDKs[$AndroidNDKVersion]
369+
if ($NDK -eq $null) { throw "Unsupported Android NDK version" }
370+
return $NDK
371+
}
372+
353373
function Get-AndroidNDKPath {
354-
$androidNDKPath = Join-Path -Path $BinaryCache -ChildPath "android-ndk-$AndroidNDKVersion"
355-
return $androidNDKPath
374+
return Join-Path -Path $BinaryCache -ChildPath "android-ndk-$AndroidNDKVersion"
356375
}
357376

358377
function Get-FlexExecutable {
@@ -860,14 +879,8 @@ function Fetch-Dependencies {
860879
Install-PythonModules
861880

862881
if ($Android) {
863-
# Only a specific NDK version is supported right now.
864-
if ($AndroidNDKVersion -ne "r26b") {
865-
throw "Unsupported Android NDK version"
866-
}
867-
$NDKURL = "https://dl.google.com/android/repository/android-ndk-r26b-windows.zip"
868-
$NDKHash = "A478D43D4A45D0D345CDA6BE50D79642B92FB175868D9DC0DFC86181D80F691E"
869-
DownloadAndVerify $NDKURL "$BinaryCache\android-ndk-$AndroidNDKVersion-windows.zip" $NDKHash
870-
882+
$NDK = Get-AndroidNDK
883+
DownloadAndVerify $NDK.URL "$BinaryCache\android-ndk-$AndroidNDKVersion-windows.zip" $NDK.SHA256
871884
Extract-ZipFile -ZipFileName "android-ndk-$AndroidNDKVersion-windows.zip" -BinaryCache $BinaryCache -ExtractPath "android-ndk-$AndroidNDKVersion" -CreateExtractPath $false
872885
}
873886

@@ -1105,9 +1118,6 @@ function Build-CMakeProject {
11051118
TryAdd-KeyValue $Defines SWIFT_ANDROID_NDK_PATH "$androidNDKPath"
11061119
TryAdd-KeyValue $Defines CMAKE_C_COMPILER_WORKS YES
11071120
TryAdd-KeyValue $Defines CMAKE_CXX_COMPILER_WORKS YES
1108-
# The current Android NDK ships with Clang 17,
1109-
# which doesn't provide the _Builtin_float module.
1110-
TryAdd-KeyValue $Defines SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT YES
11111121
}
11121122

11131123
TryAdd-KeyValue $Defines CMAKE_BUILD_TYPE Release
@@ -1257,7 +1267,7 @@ function Build-CMakeProject {
12571267
"-Xclang-linker", "--sysroot",
12581268
"-Xclang-linker", "$androidNDKPath\toolchains\llvm\prebuilt\windows-x86_64\sysroot",
12591269
"-Xclang-linker", "-resource-dir",
1260-
"-Xclang-linker", "$androidNDKPath\toolchains\llvm\prebuilt\windows-x86_64\lib\clang\17"
1270+
"-Xclang-linker", "$androidNDKPath\toolchains\llvm\prebuilt\windows-x86_64\lib\clang\$($(Get-AndroidNDK).ClangVersion)"
12611271
)
12621272
}
12631273
}
@@ -2065,16 +2075,17 @@ function Build-CURL([Platform]$Platform, $Arch) {
20652075

20662076
function Build-Runtime([Platform]$Platform, $Arch) {
20672077
$PlatformDefines = @{}
2068-
if ($Platform -eq "Android") {
2078+
if ($Platform -eq [Platform]::Android) {
20692079
$PlatformDefines += @{
20702080
LLVM_ENABLE_LIBCXX = "YES";
20712081
SWIFT_USE_LINKER = "lld";
20722082
SWIFT_INCLUDE_TESTS = "NO";
20732083
SWIFT_INCLUDE_TEST_BINARIES = "NO";
2084+
# Clang[<18] doesn't provide the _Builtin_float module.
2085+
SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT = "YES";
20742086
}
20752087
}
20762088

2077-
20782089
Isolate-EnvVars {
20792090
$env:Path = "$(Get-CMarkBinaryCache $Arch)\src;$(Get-PinnedToolchainRuntime);${env:Path}"
20802091

0 commit comments

Comments
 (0)