Make cc_configure script more extensible

This commit adds a few extension points to cc_configure script with
the ultimate goal to allow downloading the compiler and other tools
used for C++ build before generating the crosstool.

Specifically, we make the following changes:
  - Expose the implementation of a cc_autoconf repository rule under a
    name of cc_autoconf_impl.
  - Extend cc_autoconf_impl to allow overriding paths to build
    tools (i.e. compilers, linkers, etc.)
  - Allow to put any extra artifacts into the generated crosstool
    repository. All files inside 'extra_tools' folder are added into
    compiler_files, all_files and linker_files properties of the
    generated crosstool, so that they are available for the crosstool.

With these extension one can do the following to download the
compilers used for the build and configure the crosstool:
  - Create a repository_rule for the toolchain with a custom
    implementation.
  - In the implementation function of the repository rule:
    + Download the compilers and put them into `extra_tools` folder.
    + Run cc_autoconf_impl with overriden_tools set to relative paths
      of the compiler and other build tools in the extra_tools folder.

Change-Id: I51af6b504578963b3e97bcdd1ccb6d0a5fed1c3e
PiperOrigin-RevId: 179675911
4 files changed
tree: eabf32d7eba2d15897f453e655089b0da63c923d
  1. examples/
  2. scripts/
  3. site/
  4. src/
  5. third_party/
  6. tools/
  7. .gitattributes
  8. .gitignore
  9. AUTHORS
  10. BUILD
  11. CHANGELOG.md
  12. combine_distfiles.py
  13. combine_distfiles_to_tar.sh
  14. compile.sh
  15. CONTRIBUTING.md
  16. CONTRIBUTORS
  17. ISSUE_TEMPLATE.md
  18. LICENSE
  19. README.md
  20. WORKSPACE
README.md

Bazel

{Fast, Correct} - Choose two

Build and test software of any size, quickly and reliably.

  • Speed up your builds and tests: Bazel only rebuilds what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.

  • One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.

  • Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.

  • Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.

Getting Started

Documentation

Contributing to Bazel

See CONTRIBUTING.md

Build Status

Bazel is released in ‘Beta’. See the product roadmap to learn about the path toward a stable 1.0 release.