mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
48 lines
1.5 KiB
Rust
48 lines
1.5 KiB
Rust
//! This test runs a basic application for thumb targets, using the cortex-m crate.
|
|
//!
|
|
//! These targets are very bare-metal: the first instruction the core runs on
|
|
//! power-on is already user code. The cortex-m-rt has to initialize the stack, .data,
|
|
//! .bss, enable the FPU if present, etc.
|
|
//!
|
|
//! This test builds and runs the applications for various thumb targets using qemu.
|
|
//!
|
|
//! How to run this
|
|
//! $ ./x.py clean
|
|
//! $ ./x.py test --target thumbv6m-none-eabi,thumbv7m-none-eabi tests/run-make
|
|
//!
|
|
//! For supported targets, see `example/.cargo/config.toml`
|
|
//!
|
|
//! FIXME: https://github.com/rust-lang/rust/issues/128733 this test uses external
|
|
//! dependencies, and needs an active internet connection
|
|
|
|
//@ only-thumb
|
|
|
|
use std::path::PathBuf;
|
|
|
|
use run_make_support::{cargo, cmd, env_var, path, target};
|
|
|
|
const CRATE: &str = "example";
|
|
|
|
fn main() {
|
|
std::env::set_current_dir(CRATE).unwrap();
|
|
|
|
let target_dir = path("target");
|
|
let manifest_path = path("Cargo.toml");
|
|
|
|
// Debug
|
|
cargo()
|
|
.args(&["run", "--target", &target()])
|
|
.env("RUSTFLAGS", "-C linker=arm-none-eabi-ld -C link-arg=-Tlink.x")
|
|
.env("CARGO_TARGET_DIR", &target_dir)
|
|
.run()
|
|
.assert_stdout_contains("x = 42");
|
|
|
|
// Release
|
|
cargo()
|
|
.args(&["run", "--release", "--target", &target()])
|
|
.env("RUSTFLAGS", "-C linker=arm-none-eabi-ld -C link-arg=-Tlink.x")
|
|
.env("CARGO_TARGET_DIR", &target_dir)
|
|
.run()
|
|
.assert_stdout_contains("x = 42");
|
|
}
|