This change updates the definitions of cmake toolchains to expose CMAKE
environment variable that makes it easier to integrate the toolchain
with other build rules (e.g., with rules_rust).
* Make cc_toolchain_utils.bzl more reusable
By using getattr, the helper functions in this file can be reused in
rules that do not define all of the framework attributes, e.g. bootstrap
rules.
* Bootstrap make reproducibly on Linux and macOS
Uses the Bazel C/C++ toolchain to bootstrap make and ensure that the
resulting binary contains no absolute and thus non-hermetic paths.
Building make reproducibly helps with remote caching and removes the
dependency on a C compiler installed on the host.
The macros utilise bazel "transitions" to set the `make` toolchain used
in the configure_make(), cmake() or make() rules to
a given make variant toolchain, e.g. preinstalled_nmake.
Note that the msvc constraint was removed from the
`exec_compatible_with` attribute of `preinstalled_nmake_toolchain` as
the condition is not actually met even when building with msvc. See
https://github.com/bazelbuild/bazel/issues/7730.
This will be tested in PR#729
* Don't use deprecated targets for the preinstalled toolchains
* Add option to the repository macro for using built version of the build tools.
* Fix buildifier complaint
* Create BUILD_TMP directory when building make
* Corrections to toolchain setup for make_tool, cmake_tool and ninja_tool
* Fix path to built tools
* Attempting to fix make_tool for RBE
* Disable dependency tracking for make build
* Add cc_toolchain deps
* Add a built_toolchains.bzl file to be able to select the version to build
* Address buildifier issues
* Use geolocated mirror redirect for downloading make srcs
* Update docs