Expose merge_cc_info from cc_info.bzl

Once this change is *released* in rules_cc and rules_java updated to use the new version, we can update rules_java/java/private/java_info.bzl, preventing that from widely-loading cc_common.

Compatibility mode loads native merge_cc_infos instead of the starlarked thing because when I tried forcing java_info to use cc_info.bzl's merge_cc_infos it failed on Bazel 8.

PiperOrigin-RevId: 876268175
Change-Id: Ib1d8b75da74c474c287ea6a485a6795515df0d41
2 files changed
tree: f777a6056a33bbaa754c37bd53fe1195e4439e4e
  1. .bazelci/
  2. .bcr/
  3. .github/
  4. cc/
  5. docs/
  6. examples/
  7. test/
  8. tests/
  9. .bazelignore
  10. .bazelrc
  11. .gitignore
  12. AUTHORS
  13. BUILD
  14. CODEOWNERS
  15. CONTRIBUTING.md
  16. googletest.patch
  17. ISSUE_TEMPLATE.md
  18. LICENSE
  19. MODULE.bazel
  20. README.md
  21. renovate.json
  22. WORKSPACE
  23. WORKSPACE.bzlmod
README.md

C++ rules for Bazel

  • Postsubmit Build status

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.

Getting Started

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(
    ...
)

Using the rules_cc toolchain

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()

Migration Tools

This repository also contains migration tools that can be used to migrate your project for Bazel incompatible changes.

Legacy fields migrator

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

Contributing

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: