Auto merge of #128639 - folkertdev:rmake-thumb-none-qemu, r= · rust-lang/rust@7084c9b (original) (raw)

Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
1 +//! How to run this
2 +//! $ ./x.py clean
3 +//! $ ./x.py test --target thumbv6m-none-eabi,thumbv7m-none-eabi tests/run-make
4 +//!
5 +//! For supported targets, see `example/.cargo/config`
6 +
7 +//@ only-thumb
8 +
9 +use std::path::PathBuf;
10 +
11 +use run_make_support::{cmd, env_var};
12 +
13 +const CRATE: &str = "example";
14 +
15 +fn main() {
16 + std::env::set_current_dir(CRATE).unwrap();
17 +
18 +let target = env_var("TARGET");
19 +let bootstrap_cargo = env_var("BOOTSTRAP_CARGO");
20 +let path = env_var("PATH");
21 +let rustc = env_var("RUSTC");
22 +
23 +let target_dir = PathBuf::from("target");
24 +let manifest_path = PathBuf::from("Cargo.toml");
25 +
26 +let debug = {
27 +let mut cmd = cmd(&bootstrap_cargo);
28 + cmd.args(&["run", "--target", &target])
29 +.env("RUSTFLAGS", "-C linker=arm-none-eabi-ld -C link-arg=-Tlink.x")
30 +.env("CARGO_TARGET_DIR", &target_dir)
31 +.env("PATH", &path)
32 +.env("RUSTC", &rustc);
33 + cmd.run()
34 +};
35 +
36 +let stdout = debug.stdout_utf8();
37 +assert!(stdout.contains("x = 42"), "stdout: {:?}", stdout);
38 +
39 +let release = {
40 +let mut cmd = cmd(&bootstrap_cargo);
41 + cmd.args(&["run", "--release", "--target", &target])
42 +.env("RUSTFLAGS", "-C linker=arm-none-eabi-ld -C link-arg=-Tlink.x")
43 +.env("CARGO_TARGET_DIR", &target_dir)
44 +.env("PATH", &path)
45 +.env("RUSTC", &rustc);
46 + cmd.run()
47 +};
48 +
49 +let stdout = release.stdout_utf8();
50 +assert!(stdout.contains("x = 42"), "stdout: {:?}", stdout);
51 +}