@@ -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 {
@@ -859,14 +878,8 @@ function Fetch-Dependencies {
859
878
Install-PythonModules
860
879
861
880
if ($Android ) {
862
- # Only a specific NDK version is supported right now.
863
- if ($AndroidNDKVersion -ne " r26b" ) {
864
- throw " Unsupported Android NDK version"
865
- }
866
- $NDKURL = " https://dl.google.com/android/repository/android-ndk-r26b-windows.zip"
867
- $NDKHash = " A478D43D4A45D0D345CDA6BE50D79642B92FB175868D9DC0DFC86181D80F691E"
868
- DownloadAndVerify $NDKURL " $BinaryCache \android-ndk-$AndroidNDKVersion -windows.zip" $NDKHash
869
-
881
+ $NDK = Get-AndroidNDK
882
+ DownloadAndVerify $NDK.URL " $BinaryCache \android-ndk-$AndroidNDKVersion -windows.zip" $NDK.SHA256
870
883
Extract- ZipFile - ZipFileName " android-ndk-$AndroidNDKVersion -windows.zip" - BinaryCache $BinaryCache - ExtractPath " android-ndk-$AndroidNDKVersion " - CreateExtractPath $false
871
884
}
872
885
@@ -1104,9 +1117,6 @@ function Build-CMakeProject {
1104
1117
TryAdd- KeyValue $Defines SWIFT_ANDROID_NDK_PATH " $androidNDKPath "
1105
1118
TryAdd- KeyValue $Defines CMAKE_C_COMPILER_WORKS YES
1106
1119
TryAdd- KeyValue $Defines CMAKE_CXX_COMPILER_WORKS YES
1107
- # The current Android NDK ships with Clang 17,
1108
- # which doesn't provide the _Builtin_float module.
1109
- TryAdd- KeyValue $Defines SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT YES
1110
1120
}
1111
1121
1112
1122
TryAdd- KeyValue $Defines CMAKE_BUILD_TYPE Release
@@ -1256,7 +1266,7 @@ function Build-CMakeProject {
1256
1266
" -Xclang-linker" , " --sysroot" ,
1257
1267
" -Xclang-linker" , " $androidNDKPath \toolchains\llvm\prebuilt\windows-x86_64\sysroot" ,
1258
1268
" -Xclang-linker" , " -resource-dir" ,
1259
- " -Xclang-linker" , " $androidNDKPath \toolchains\llvm\prebuilt\windows-x86_64\lib\clang\17 "
1269
+ " -Xclang-linker" , " $androidNDKPath \toolchains\llvm\prebuilt\windows-x86_64\lib\clang\$ ( $ ( Get-AndroidNDK ).ClangVersion ) "
1260
1270
)
1261
1271
}
1262
1272
}
@@ -2064,16 +2074,17 @@ function Build-CURL([Platform]$Platform, $Arch) {
2064
2074
2065
2075
function Build-Runtime ([Platform ]$Platform , $Arch ) {
2066
2076
$PlatformDefines = @ {}
2067
- if ($Platform -eq " Android" ) {
2077
+ if ($Platform -eq [ Platform ]:: Android) {
2068
2078
$PlatformDefines += @ {
2069
2079
LLVM_ENABLE_LIBCXX = " YES" ;
2070
2080
SWIFT_USE_LINKER = " lld" ;
2071
2081
SWIFT_INCLUDE_TESTS = " NO" ;
2072
2082
SWIFT_INCLUDE_TEST_BINARIES = " NO" ;
2083
+ # Clang[<18] doesn't provide the _Builtin_float module.
2084
+ SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT = " YES" ;
2073
2085
}
2074
2086
}
2075
2087
2076
-
2077
2088
Isolate- EnvVars {
2078
2089
$env: Path = " $ ( Get-CMarkBinaryCache $Arch ) \src;$ ( Get-PinnedToolchainRuntime ) ;${env: Path} "
2079
2090
0 commit comments