Skip to content

Commit 81d1fdd

Browse files
committed
[android][build] clean up the android path handling
1 parent 6317229 commit 81d1fdd

File tree

1 file changed

+25
-10
lines changed

1 file changed

+25
-10
lines changed

utils/build.ps1

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
303308
function 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

Comments
 (0)