@@ -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+
353373function 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
358377function 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
20662076function 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