@@ -300,6 +300,11 @@ $IsCrossCompiling = $HostArchName -ne $BuildArchName
300
300
301
301
$TimingData = New-Object System.Collections.Generic.List[System.Object ]
302
302
303
+ function Get-AndroidNDKPath {
304
+ $androidNDKPath = Join-Path - Path $BinaryCache - ChildPath " android-ndk-$AndroidNDKVersion "
305
+ return $androidNDKPath
306
+ }
307
+
303
308
function Get-InstallDir ($Arch ) {
304
309
if ($Arch -eq $HostArch ) {
305
310
$ProgramFilesName = " Program Files"
@@ -808,15 +813,23 @@ function Build-CMakeProject {
808
813
TryAdd- KeyValue $Defines CMAKE_SYSTEM_PROCESSOR $Arch.CMakeName
809
814
}
810
815
811
- # TODO(compnerd) clean up these and formalise this selection
812
816
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" )
817
829
TryAdd- KeyValue $Defines CMAKE_ANDROID_API " $AndroidAPILevel "
818
830
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 "
820
833
TryAdd- KeyValue $Defines CMAKE_C_COMPILER_WORKS YES
821
834
TryAdd- KeyValue $Defines CMAKE_CXX_COMPILER_WORKS YES
822
835
}
@@ -830,7 +843,8 @@ function Build-CMakeProject {
830
843
$CFlags = @ (" /GS-" , " /Gw" , " /Gy" , " /Oi" , " /Oy" , " /Zc:inline" )
831
844
}
832
845
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" )
834
848
}
835
849
}
836
850
@@ -945,14 +959,15 @@ function Build-CMakeProject {
945
959
)
946
960
}
947
961
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" )
949
964
$SwiftArgs += @ (
950
965
" -Xclang-linker" , " -target" ,
951
966
" -Xclang-linker" , $Arch.LLVMTarget ,
952
967
" -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" ,
954
969
" -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"
956
971
)
957
972
}
958
973
}
0 commit comments