This directory defines a hermetic C++ toolchain suite to compile with the Android NDK.
Bazel has a built-in
android_ndk_repository rule, which generates C++ toolchains based on a local NDK installation provided via the
ANDROID_NDK_HOME environment variable. However, this rule breaks hermeticity, and requires the user to provide an NDK installation.
This directory provides a
download_android_ndk repository rule, which downloads the Android NDK under
external/ndk_linux_amd64, and a C++ toolchain suite that targets 32- and 64-bit ARM.
The C++ toolchain suite is based on the C++ toolchain generated by the
android_ndk_repositoryrule at this revision.
bazel-skcms/external/androidndk/cc_toolchain_config.bzl, which are generated by said rule.
cc_common.create_cc_toolchain_config_info function expects tool paths to point to files under the directory in which it is invoked. This means we cannot directly reference tools under
external/ndk_linux_amd64. The solution is to use “trampoline” scripts that pass through any command-line arguments to the NDK binaries under