Skip to content

Latest commit

 

History

History

arm-targets

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Compile-time Support for Arm Targets

This crate looks at your build target (using the $TARGET environment variable that cargo sets) and provides a selection of --cfg values to rustc that might be useful.

Add to your build dependencies and make a build.rs file like this:

fn main() {
    arm_targets::process();
}

Cargo will be given configuration like this:

cargo:rustc-cfg=arm_architecture="v7-r"
cargo:rustc-check-cfg=cfg(arm_architecture, values("v6-m", "v7-m", "v7e-m", "v8-m.base", "v8-m.main", "v7-r", "v8-r", "v7-a", "v8-a"))
cargo:rustc-cfg=arm_isa="A32"
cargo:rustc-check-cfg=cfg(arm_isa, values("A64", "A32", "T32"))

This allows you to write Rust code in your firmware like:

#[cfg(any(arm_architecture = "v7-r", arm_architecture = "v8-r"))]

Minimum Supported Rust Version (MSRV)

This crate is guaranteed to compile on stable Rust 1.82.0 and up. It might compile with older versions but that may change in any new patch release.

Licence

Copyright (c) Ferrous Systems, 2025

Licensed under either MIT or Apache-2.0 at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be licensed as above, without any additional terms or conditions.