@@ -139,7 +139,7 @@ param
139
139
[string ] $PinnedToolchainVariant = " Asserts" ,
140
140
[string ] $PythonVersion = " 3.9.10" ,
141
141
[ValidatePattern (" ^r(?:[1-9]|[1-9][0-9])(?:[a-z])?$" )]
142
- [string ] $AndroidNDKVersion = " r26b " ,
142
+ [string ] $AndroidNDKVersion = " r27c " ,
143
143
[ValidatePattern (" ^\d+\.\d+\.\d+(?:-\w+)?" )]
144
144
[string ] $WinSDKVersion = " " ,
145
145
[switch ] $Android = $false ,
@@ -346,13 +346,32 @@ $BuildArch = switch ($BuildArchName) {
346
346
default { throw " Unsupported processor architecture" }
347
347
}
348
348
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
+
349
363
$IsCrossCompiling = $HostArchName -ne $BuildArchName
350
364
351
365
$TimingData = New-Object System.Collections.Generic.List[System.Object ]
352
366
367
+ function Get-AndroidNDK {
368
+ $NDK = $KnownNDKs [$AndroidNDKVersion ]
369
+ if ($NDK -eq $null ) { throw " Unsupported Android NDK version" }
370
+ return $NDK
371
+ }
372
+
353
373
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 "
356
375
}
357
376
358
377
function Get-FlexExecutable {
@@ -860,14 +879,8 @@ function Fetch-Dependencies {
860
879
Install-PythonModules
861
880
862
881
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
871
884
Extract- ZipFile - ZipFileName " android-ndk-$AndroidNDKVersion -windows.zip" - BinaryCache $BinaryCache - ExtractPath " android-ndk-$AndroidNDKVersion " - CreateExtractPath $false
872
885
}
873
886
@@ -1105,9 +1118,6 @@ function Build-CMakeProject {
1105
1118
TryAdd- KeyValue $Defines SWIFT_ANDROID_NDK_PATH " $androidNDKPath "
1106
1119
TryAdd- KeyValue $Defines CMAKE_C_COMPILER_WORKS YES
1107
1120
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
1111
1121
}
1112
1122
1113
1123
TryAdd- KeyValue $Defines CMAKE_BUILD_TYPE Release
@@ -1257,7 +1267,7 @@ function Build-CMakeProject {
1257
1267
" -Xclang-linker" , " --sysroot" ,
1258
1268
" -Xclang-linker" , " $androidNDKPath \toolchains\llvm\prebuilt\windows-x86_64\sysroot" ,
1259
1269
" -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 ) "
1261
1271
)
1262
1272
}
1263
1273
}
@@ -2065,16 +2075,17 @@ function Build-CURL([Platform]$Platform, $Arch) {
2065
2075
2066
2076
function Build-Runtime ([Platform ]$Platform , $Arch ) {
2067
2077
$PlatformDefines = @ {}
2068
- if ($Platform -eq " Android" ) {
2078
+ if ($Platform -eq [ Platform ]:: Android) {
2069
2079
$PlatformDefines += @ {
2070
2080
LLVM_ENABLE_LIBCXX = " YES" ;
2071
2081
SWIFT_USE_LINKER = " lld" ;
2072
2082
SWIFT_INCLUDE_TESTS = " NO" ;
2073
2083
SWIFT_INCLUDE_TEST_BINARIES = " NO" ;
2084
+ # Clang[<18] doesn't provide the _Builtin_float module.
2085
+ SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT = " YES" ;
2074
2086
}
2075
2087
}
2076
2088
2077
-
2078
2089
Isolate- EnvVars {
2079
2090
$env: Path = " $ ( Get-CMarkBinaryCache $Arch ) \src;$ ( Get-PinnedToolchainRuntime ) ;${env: Path} "
2080
2091
0 commit comments