2
0
Fork 0
mirror of https://github.com/bazelbuild/rules_cc synced 2024-12-02 01:15:34 +00:00
rules_cc/README.md
Fabian Meumertzheim 66cf3048e9 Copybara Merge: https://github.com/bazelbuild/rules_cc/pull/165
BEGIN_PUBLIC
Copybara import of the project:

--
56e69b82484f1a9fb55d8173cc112f9f608f3581 by Fabian Meumertzheim <fabian@meumertzhe.im>:

Simplify WORKSPACE setup and update ancient deps

By removing a single unused `bzl_library` target, rules_cc no longer has
any dependencies that would need to be loaded by a dependency macro. The
existing macro is made a no-op.

The few needed Bazel Federation dependencies are inlined and, in the
case of bazel_skylib and abseil-py, updated to modern versions.

Also reorders `WORKSPACE` to list direct dependencies first and keeps
`MODULE.bazel` in sync with the dependency versions used in WORKSPACE.

The `ubuntu1604` CI pipeline is removed as the version of Python used by
it is no longer supported and the distribution is EOL. Instead, a new
pipeline is added to check the Bzlmod build.

END_PUBLIC

COPYBARA_INTEGRATE_REVIEW=https://github.com/bazelbuild/rules_cc/pull/165 from fmeum:fix-workspace-module 56e69b82484f1a9fb55d8173cc112f9f608f3581
PiperOrigin-RevId: 501245864
Change-Id: Ib71ad910705807a00929a76774387a38d2da0f9f
2023-01-11 04:33:23 -08:00

82 lines
2.7 KiB
Markdown

# C++ rules for Bazel
* Postsubmit [![Build status](https://badge.buildkite.com/f03592ae2d7d25a2abc2a2ba776e704823fa17fd3e061f5103.svg?branch=main)](https://buildkite.com/bazel/rules-cc)
* Postsubmit + Current Bazel Incompatible flags [![Build status](https://badge.buildkite.com/5ba709cc33e5855078a1f8570adcf8e0a78ea93591bc0b4e81.svg?branch=master)](https://buildkite.com/bazel/rules-cc-plus-bazelisk-migrate)
This repository contains Starlark implementation of C++ rules in Bazel.
The rules are being incrementally converted from their native implementations in the [Bazel source tree](https://source.bazel.build/bazel/+/master:src/main/java/com/google/devtools/build/lib/rules/cpp/).
For the list of C++ rules, see the Bazel
[documentation](https://docs.bazel.build/versions/main/be/overview.html).
# Getting Started
There is no need to use rules from this repository just yet. If you want to use
`rules_cc` anyway, add the following to your `WORKSPACE` file:
```starlark
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:
```starlark
load("@rules_cc//cc:defs.bzl", "cc_library")
cc_library(
...
)
```
# Using the rules_cc toolchain
If you'd like to use the cc toolchain defined in this repo add this to
your WORKSPACE after you include rules_cc:
```bzl
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](https://github.com/bazelbuild/bazel/issues/6861),
[tracking issue](https://github.com/bazelbuild/bazel/issues/5883)).
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](https://github.com/bazelbuild/rules_cc/blob/main/CONTRIBUTING.md).
Note that the `rules_cc` use the GitHub issue tracker for bug reports and feature requests only.
For asking questions see:
* [Stack Overflow](https://stackoverflow.com/questions/tagged/bazel)
* [`rules_cc` mailing list](https://groups.google.com/forum/#!forum/cc-bazel-discuss)
* Slack channel `#cc` on [slack.bazel.build](https://slack.bazel.build)