| 55 | |
| 56 | |
| 57 | def resolve_ndk_root(android_sdk_root, value): |
| 58 | candidates = [ |
| 59 | value, |
| 60 | os.environ.get('ANDROID_NDK_ROOT'), |
| 61 | os.environ.get('ANDROID_NDK_HOME'), |
| 62 | os.environ.get('ANDROID_NDK'), |
| 63 | android_sdk_root / 'ndk' / '25.1.8937393', |
| 64 | ] |
| 65 | ndk_dir = android_sdk_root / 'ndk' |
| 66 | if ndk_dir.is_dir(): |
| 67 | versions = sorted([path for path in ndk_dir.iterdir() if path.is_dir()]) |
| 68 | candidates.extend(reversed(versions)) |
| 69 | |
| 70 | for candidate in candidates: |
| 71 | if candidate: |
| 72 | path = Path(candidate).resolve() |
| 73 | if (path / 'build' / 'cmake' / 'android.toolchain.cmake').is_file(): |
| 74 | return path |
| 75 | raise RuntimeError('Android NDK not found. Set ANDROID_NDK_ROOT or pass --ndk-root.') |
| 76 | |
| 77 | |
| 78 | def resolve_ninja(root): |