0
Files
src/build
Mohannad Farrag 63ce6fc17e Expose a rust_static_library instead of raw rs file from rust_bindgen
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}
2024-10-28 16:38:21 +00:00
..
2024-08-06 16:00:03 +00:00
2024-10-24 17:54:35 +00:00
2024-10-24 19:43:47 +00:00
2024-06-06 00:55:30 +00:00
2024-06-06 00:55:30 +00:00

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 all BUILD.gn files.
  • //build/secondary - An overlay for BUILD.gn files. Enables adding BUILD.gn to directories that live in sub-repositories.
  • //build_overrides - Refer to //build_overrides/README.md.

Docs