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