
Originally, `rust_bindgen` would originally expose an `action` which generates a `.rs` file (and sometimes `.c` file if wrap_static_inline is true). This would move the burden of knowing how to correctly bundle the generated file on the user where they would have to define a custom `BINDGEN_RS_FILE` flag which has to be loaded from the code. In order to eliminate the overhead, the user will treat the `rust_bindgen` as a `rust_static_library` which can be used by importing it using `chromium::import` or `use ..` whether it's first-party or not. The different design also allows the rust toolchain owners to take finer control on what's being done and what's exposed exactly from `rust_bindgen` by tweaking the `bindings.rs` file. This also fixes Cronet in AOSP where Soong (AOSP build system) does not allow a target to access another target's output through its path which what most clients of `rust_bindgen` did through the custom rustflag. In order to stay backward compatible with older consumers of `rust_bindgen`, we created `rust_bindgen_generator` which generates the raw rust which allows flexibility in usage. Bug: 373864033 Change-Id: I3d72aa8ecd11151235d3dd387b313c9d0309d4a6 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5953710 Auto-Submit: Mohannad Farrag <aymanm@google.com> Commit-Queue: David Benjamin <davidben@chromium.org> Reviewed-by: Dale Curtis <dalecurtis@chromium.org> Commit-Queue: danakj <danakj@chromium.org> Reviewed-by: danakj <danakj@chromium.org> Reviewed-by: David Benjamin <davidben@chromium.org> Cr-Commit-Position: refs/heads/main@{#1374672}
About
//build
contains:
- Core GN templates and configuration
- Core Python build scripts
Since this directory is DEPS'ed in by some other repositories (webrtc, pdfium,
v8, etc), it should be kept as self-contained as possible by not referring
to files outside of it. Some exceptions exist (//testing
, select
//third_party
subdirectories), but new dependencies tend to break these other
projects, and so should be avoided.
Changes to //build
should be landed in the Chromium repo. They will then be
replicated to the stand-alone build repo
by the gsubtreed tool.
Note: You can find all directories already available through gsubtreed in the
list of all chromium repos.
Contents
//build/config
- Common templates via.gni
files.//build/toolchain
- GN toolchain definitions.Other .py files
- Some are used by GN/Ninja. Some by gclient hooks, some are just random utilities.
Files referenced by //.gn
:
//build/BUILDCONFIG.gn
- Included by allBUILD.gn
files.//build/secondary
- An overlay forBUILD.gn
files. Enables addingBUILD.gn
to directories that live in sub-repositories.//build_overrides
- Refer to //build_overrides/README.md.