Cut cc_common dependencies from split build rules. Once we switch to deferred implementation, this will reduce the impact of changes transitively affecting cc_common and similar files (i.e. a change affecting cc_common will affect java rules importing rules_cc but not affect every cc_binary in the repo). The rules whose declaration/definition have been split will now no longer transitively depend on cc_common or cc_helper; this requires splitting find_cc toolchain and cc_postmark, as well as moving a function that's used only in cc_shared_library out of cc_helper. The side of find_cc_toolchain and cc_postmark that still needs cc_common also loads the more lightweight side, making this change a no-op for any files not included in the change. PiperOrigin-RevId: 875149689 Change-Id: I71b5cf5575b02cf9a8def11fb2a20d1624567979
This repository contains a Starlark implementation of C++ rules in Bazel.
The rules are being incrementally converted from their native implementations in the Bazel source tree.
For the list of C++ rules, see the Bazel documentation.
Add the following to your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "rules_cc", urls = ["https://github.com/bazelbuild/rules_cc/archive/refs/tags/<VERSION>.tar.gz"], sha256 = "...", )
Then, in your BUILD files, import and use the rules:
load("@rules_cc//cc:defs.bzl", "cc_library") cc_library( ... )
This repo contains an auto-detecting toolchain that expects to find tools installed on your host machine. This is non-hermetic, and may have varying behaviors depending on the versions of tools found.
There are third-party contributed hermetic toolchains you may want to investigate:
If you'd like to use the cc toolchain defined in this repo, add this to your WORKSPACE after you include rules_cc:
load("@rules_cc//cc:repositories.bzl", "rules_cc_dependencies", "rules_cc_toolchains") rules_cc_dependencies() rules_cc_toolchains()
This repository also contains migration tools that can be used to migrate your project for Bazel incompatible changes.
Script that migrates legacy crosstool fields into features (incompatible flag, tracking issue).
TLDR:
bazel run @rules_cc//tools/migration:legacy_fields_migrator -- \ --input=my_toolchain/CROSSTOOL \ --inline
Bazel and rules_cc are the work of many contributors. We appreciate your help!
To contribute, please read the contribution guidelines: CONTRIBUTING.md.
Note that the rules_cc use the GitHub issue tracker for bug reports and feature requests only. For asking questions see:
rules_cc mailing list#cc on slack.bazel.build