@@ -300,6 +300,11 @@ $IsCrossCompiling = $HostArchName -ne $BuildArchName
300300
301301$TimingData = New-Object System.Collections.Generic.List[System.Object ]
302302
303+ function Get-AndroidNDKPath {
304+ $androidNDKPath = Join-Path - Path $BinaryCache - ChildPath " android-ndk-$AndroidNDKVersion "
305+ return $androidNDKPath
306+ }
307+
303308function Get-InstallDir ($Arch ) {
304309 if ($Arch -eq $HostArch ) {
305310 $ProgramFilesName = " Program Files"
@@ -808,15 +813,23 @@ function Build-CMakeProject {
808813 TryAdd- KeyValue $Defines CMAKE_SYSTEM_PROCESSOR $Arch.CMakeName
809814 }
810815
811- # TODO(compnerd) clean up these and formalise this selection
812816 if ($Platform -eq " Android" ) {
813- $env: Path = " C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;${env: Path} "
814- TryAdd- KeyValue $Defines CMAKE_C_COMPILER " S:\b\android-ndk-r26b\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe"
815- TryAdd- KeyValue $Defines CMAKE_CXX_COMPILER " S:\b\android-ndk-r26b\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe"
816- TryAdd- KeyValue $Defines CMAKE_MAKE_PROGRAM " C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja\ninja.exe"
817+ if (Test-Path " C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin" ) {
818+ $env: Path = " C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;${env: Path} "
819+ TryAdd- KeyValue $Defines CMAKE_MAKE_PROGRAM " C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja\ninja.exe"
820+ } elseif (Test-Path " C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin" ) {
821+ $env: Path = " C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;${env: Path} "
822+ TryAdd- KeyValue $Defines CMAKE_MAKE_PROGRAM " C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja\ninja.exe"
823+ } else {
824+ throw " Missing CMake and Ninja in the visual studio installation that are needed to build Android"
825+ }
826+ $androidNDKPath = Get-AndroidNDKPath
827+ TryAdd- KeyValue $Defines CMAKE_C_COMPILER (Join-Path - Path $androidNDKPath - ChildPath " toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe" )
828+ TryAdd- KeyValue $Defines CMAKE_CXX_COMPILER (Join-Path - Path $androidNDKPath - ChildPath " toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe" )
817829 TryAdd- KeyValue $Defines CMAKE_ANDROID_API " $AndroidAPILevel "
818830 TryAdd- KeyValue $Defines CMAKE_ANDROID_ARCH_ABI $Arch.AndroidArchABI
819- TryAdd- KeyValue $Defines CMAKE_ANDROID_NDK " S:\b\android-ndk-r26b"
831+ TryAdd- KeyValue $Defines CMAKE_ANDROID_NDK " $androidNDKPath "
832+ TryAdd- KeyValue $Defines SWIFT_ANDROID_NDK_PATH " $androidNDKPath "
820833 TryAdd- KeyValue $Defines CMAKE_C_COMPILER_WORKS YES
821834 TryAdd- KeyValue $Defines CMAKE_CXX_COMPILER_WORKS YES
822835 }
@@ -830,7 +843,8 @@ function Build-CMakeProject {
830843 $CFlags = @ (" /GS-" , " /Gw" , " /Gy" , " /Oi" , " /Oy" , " /Zc:inline" )
831844 }
832845 Android {
833- $CFlags = @ (" --sysroot=S:\b\android-ndk-r26b\toolchains\llvm\prebuilt\windows-x86_64\sysroot" )
846+ $androidNDKPath = Get-AndroidNDKPath
847+ $CFlags = @ (" --sysroot=$androidNDKPath \toolchains\llvm\prebuilt\windows-x86_64\sysroot" )
834848 }
835849 }
836850
@@ -945,14 +959,15 @@ function Build-CMakeProject {
945959 )
946960 }
947961 Android {
948- $SwiftArgs += @ (" -sdk" , " S:\b\android-ndk-r26b\toolchains\llvm\prebuilt\windows-x86_64\sysroot" )
962+ $androidNDKPath = Get-AndroidNDKPath
963+ $SwiftArgs += @ (" -sdk" , " $androidNDKPath \toolchains\llvm\prebuilt\windows-x86_64\sysroot" )
949964 $SwiftArgs += @ (
950965 " -Xclang-linker" , " -target" ,
951966 " -Xclang-linker" , $Arch.LLVMTarget ,
952967 " -Xclang-linker" , " --sysroot" ,
953- " -Xclang-linker" , " S:\b\android-ndk-r26b \toolchains\llvm\prebuilt\windows-x86_64\sysroot" ,
968+ " -Xclang-linker" , " $androidNDKPath \toolchains\llvm\prebuilt\windows-x86_64\sysroot" ,
954969 " -Xclang-linker" , " -resource-dir" ,
955- " -Xclang-linker" , " S:\b\android-ndk-r26b \toolchains\llvm\prebuilt\windows-x86_64\lib\clang\17"
970+ " -Xclang-linker" , " $androidNDKPath \toolchains\llvm\prebuilt\windows-x86_64\lib\clang\17"
956971 )
957972 }
958973 }
0 commit comments