[rust] Support for transitive `deps` in `cpp_api_from_rust`.
Supporting transitive dependencies in C++ bindings for Rust APIs
requires:
* Adding `--crate-header=<other crate name>=<some path>` to the
invocation of `cpp_api_from_rust`. The CL accomplishes this
by:
- Passing `crate_name` from `rust_target.gni` to
`cpp_api_from_rust.gni`
- Having each bindings target declare the `--crate-header=...`
flag in the `metadata` of the target
- Using `generated_file` to walk the `metadata` of dependencies
and save the command-line flags into `_action_rsp_path`
- Adding `@{action-rsp-path}` to the invocation of
`cpp_api_from_rust_wrapper.py`
* Propagating dependencies of the original Rust library into:
- `_h_target_name` (because newly included bindings can in theory
transitively include files that are build-time-generated when
building the dependencies.
- `_rust_impl_target_name` (because the FFI thunks may need refer
to Rust types of the dependencies)
Bug: 470466915
Change-Id: Ie6ceda7fa53bcbc90a72e5cdd537a6993e4b8e58
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7410363
Reviewed-by: Devon Loehr <[email protected]>
Commit-Queue: Ćukasz Anforowicz <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1584835}
NOKEYCHECK=True
GitOrigin-RevId: de16b3716e4384002d194566f01f0ed65bf56a7a
//build contains:
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.
//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.