Detect the NDK path from CMAKE_TOOLCHAIN_FILE. The NDK toolchain file uses either ANDROID_NDK or CMAKE_TOOLCHAIN_FILE, so look at both. In particular, our builders don't pass in ANDROID_NDK. Change-Id: Ic7fabdbd16adc3d38389d338b38839b67dde6523 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/39544 Commit-Queue: David Benjamin <davidben@google.com> Commit-Queue: Adam Langley <agl@google.com> Reviewed-by: Adam Langley <agl@google.com>
diff --git a/util/run_android_tests.go b/util/run_android_tests.go index 7c0abf8..b2ad913 100644 --- a/util/run_android_tests.go +++ b/util/run_android_tests.go
@@ -213,9 +213,13 @@ } if len(*ndkPath) == 0 { - var ok bool - if *ndkPath, ok = cmakeVars["ANDROID_NDK"]; !ok { - return errors.New("ANDROID_NDK not found in CMakeCache.txt") + if ndk, ok := cmakeVars["ANDROID_NDK"]; ok { + *ndkPath = ndk + } else if toolchainFile, ok := cmakeVars["CMAKE_TOOLCHAIN_FILE"]; ok { + // The toolchain is at build/cmake/android.toolchain.cmake under the NDK. + *ndkPath = filepath.Dir(filepath.Dir(filepath.Dir(toolchainFile))) + } else { + return errors.New("Neither CMAKE_TOOLCHAIN_FILE nor ANDROID_NDK found in CMakeCache.txt") } fmt.Printf("Detected NDK path %q from CMakeCache.txt.\n", *ndkPath) }