commit | 21dcb365c1eae5e99eb9ae6ef78bfe3c9372057e | [log] [tgz] |
---|---|---|
author | Adrian Taylor <[email protected]> | Wed Sep 01 14:58:14 2021 |
committer | Chromium LUCI CQ <[email protected]> | Wed Sep 01 14:58:14 2021 |
tree | 366fa45b3ed32cbeef462c8cf0a218600de8a525 | |
parent | df687f0637694a55d8f24851437fd2245794a258 [diff] |
[rust] Introduce Rust Android toolchain. This provides the ability to add Rust components to Chromium. This is experimental and won't affect production Chromium. This is the most minimal possible addition: future CLs will handle more tooling, ability to add third party crates, C++ interop etc. Specifically, this CL contains: * Global gn flags to enable Rust compilation (off by default) and to enable contribution of Rust code into Chrome binaries (off by default; currently unused anyway) * Modifications to three gn toolchains (clang, Windows and Mac) to trigger gn's built-in support for Rust tool invocations * Reasonable default Rust compiler flags for various cases where we set up C++ compiler flags (e.g. optimization, debug info) * Some test binaries, built by default. * Support for our existing C++ linker invocations to link Rust code into their output binaries (more discussion below). More on this last point. The Rust compiler (rustc) knows how to make several different products - executables, shared objects, 'complete' static libraries, and 'rlibs'. 'Complete' static libraries contain everything required to link Rust code into non-Rust binaries, including (for instance) the required parts of the Rust standard library. That would be fine if we only ever expected a single Rust subsystem in Chrome. But as we expect (eventually) several, we instead choose to generate 'rlibs' and pass them into our C++ linker commands. (To link multiple staticlibs would give us ODR violations on the Rust stdlib.) 'rlibs' are 'incomplete' and thus we have to take extra steps to include the Rust standard library - that's in //build/rust std. Change-Id: Ie0342bde51852ddc049e8d6a7950897b779904d2 Bug: 1069271 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2162136 Reviewed-by: Alex Gough <[email protected]> Reviewed-by: Nico Weber <[email protected]> Commit-Queue: Adrian Taylor <[email protected]> Cr-Commit-Position: refs/heads/main@{#917242}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.