Contribute

Bazel C++ Rules Roadmap

Last verified: 2018-12-21 (update history)

C++ Sandwich (2019/Q1)

Status: IN PROGRESS

Objective: It’s possible to write a custom Starlark rule that can depend on C++ rules, and C++ rules can depend on Starlark (C++ sandwich) (tracking issue, owner: oquenchil).

2018/Q4 status: C++ providers are stable and exposed without experimental flag in Bazel 0.22. cc_common.compile and cc_common.link are guarded behind experimental flag and expected to reach stable in Bazel 0.23.

Migrate Crosstools to Features (2019/Q1)

Status: IN PROGRESS

Objective: Features are the only way of defining crosstool flags (owner: hlopko, tracking issue, rollout doc, incompatible flag).

Crosstool in Starlark (2019/Q1)

Status: IN PROGRESS

Objective: Crosstool can be written in Starlark (design doc, tracking issue, owner: scentini).

C++ rules use platforms (2019/Q1)

Status: NOT STARTED

Objective: C++ toolchain is selected using platforms.

System-installed libraries (2019/Q1)

Status: NOT STARTED

Objective: C++ rules are able to depend on a system library using cc_import (possibly build it from source if absent) in a way that works with remote cache/execution and multiple platforms.

Removing hardcoded linux/gcc/libstdc++ assumptions (2019/Q2)

Status: NOT STARTED

Objective: Bazel doesn’t assume linux/gcc anywhere (including include directories).

Simplifying Linking Modes (2019/Q2)

Status: IN PROGRESS

Objective: Crosstool definition for linking modes is based on features; it is possible to control linking of system libraries (design doc, owner: hlopko).

2018/Q4 status: Toolchain libraries are the last piece that is missing.

Transitive Libraries (2019/Q2)

Status: NOT STARTED

Objective: It’s possible to build a static or a shared library with full control over which dependencies are linked statically and which dynamically (design doc).