Add support for the Rust toolchain
To enable Rust build targets in standalone dawn:
- Add `checkout_rust: True` to the gclient `custom_vars` section. As
it defaults to false:
"custom_vars": {
"checkout_rust": True,
}
- Set `enable_rust = true` in GN args, as it also defaults to false.
- Run gclient sync
Then building `rust_build_tests` will build test targets in
//build/rust/tests, which rely on and verify the functioning of
the Rust toolchain.
Make new rust targets by using the GN templates in //build/rust.
In the chromium build, Rust build targets that use the templates
from //build/rust will just work.
------
Dependent steps that are already done:
1) The //tools/rust repo needs to be created in
https://bugs.chromium.org/p/chromium/issues/detail?id=1494128
2) Then, we should remove the checkout_tools_rust DEPS var,
3) And update the tools/clang and tools/rust revisions so that they
are compatible.
4) Roll the chromium //build changes that were required in from
https://chromium-review.googlesource.com/c/chromium/src/+/4956874
and
https://chromium-review.googlesource.com/c/chromium/src/+/4966201
5) The clang roll causes clang-cl to warn on use of offsetof, but it
does not define __GNUC__, which is used to remove the warning. So
also remove the warning when __clang__ is defined.
Bug: chromium:1494118
Change-Id: I5e280090ec950a1da9f91e2e4717925ce4b2eaa6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/157120
Reviewed-by: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: danakj <danakj@chromium.org>
diff --git a/DEPS b/DEPS
index eec063d..682db69 100644
--- a/DEPS
+++ b/DEPS
@@ -35,6 +35,14 @@
# Fetch clang-tidy into the same bin/ directory as our clang binary.
'checkout_clang_tidy': False,
+ # Fetch the rust toolchain.
+ #
+ # Use a custom_vars section to enable it:
+ # "custom_vars": {
+ # "checkout_rust": True,
+ # }
+ 'checkout_rust': False,
+
# Fetch configuration files required for the 'use_remoteexec' gn arg
'download_remoteexec_cfg': False,
# RBE instance to use for running remote builds
@@ -53,11 +61,6 @@
}
deps = {
- # Dependencies required to use GN/Clang in standalone
- 'build': {
- 'url': '{chromium_git}/chromium/src/build@5885d3c24833ad72845a52a1b913a2b8bc651b56',
- 'condition': 'dawn_standalone',
- },
'buildtools': {
'url': '{chromium_git}/chromium/src/buildtools@a9a6f0c49d0e8fa0cda37337430b4736ab3dc944',
'condition': 'dawn_standalone',
@@ -101,10 +104,21 @@
'condition': 'dawn_standalone',
},
- 'tools/clang': {
- 'url': '{chromium_git}/chromium/src/tools/clang@8f75392b4aa947fb55c7c206b36804229595e4da',
+ # Dependencies required to use GN, Clang, and Rust in standalone.
+ # The //build, //tools/clang, and //tools/rust deps should all be updated
+ # in unison, as there are dependencies between them.
+ 'build': {
+ 'url': '{chromium_git}/chromium/src/build@e2f4d00875f7d00fad39d5af2c6869ac7c7413cc',
'condition': 'dawn_standalone',
},
+ 'tools/clang': {
+ 'url': '{chromium_git}/chromium/src/tools/clang@86aed39db276fb876a2b98c93cc6ff8940377903',
+ 'condition': 'dawn_standalone',
+ },
+ 'tools/rust': {
+ 'url': '{chromium_git}/chromium/src/tools/rust@7052bd3aa0eba2d3d701b7a76219e3b04770540e',
+ 'condition': 'dawn_standalone and checkout_rust',
+ },
'tools/clang/dsymutil': {
'packages': [{
'package': 'chromium/llvm-build-tools/dsymutil',
@@ -333,6 +347,12 @@
'--package=clang-tidy'],
},
{
+ 'name': 'rust',
+ 'pattern': '.',
+ 'action': ['python3', 'tools/rust/update_rust.py'],
+ 'condition': 'dawn_standalone and checkout_rust',
+ },
+ {
# Pull rc binaries using checked-in hashes.
'name': 'rc_win',
'pattern': '.',