]> git.proxmox.com Git - rustc.git/blob - compiler/rustc_target/src/spec/avr_gnu_base.rs
New upstream version 1.61.0+dfsg1
[rustc.git] / compiler / rustc_target / src / spec / avr_gnu_base.rs
1 use crate::spec::{LinkerFlavor, Target, TargetOptions};
2
3 /// A base target for AVR devices using the GNU toolchain.
4 ///
5 /// Requires GNU avr-gcc and avr-binutils on the host system.
6 pub fn target(target_cpu: &'static str) -> Target {
7 Target {
8 arch: "avr".into(),
9 data_layout: "e-P1-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8".into(),
10 llvm_target: "avr-unknown-unknown".into(),
11 pointer_width: 16,
12 options: TargetOptions {
13 c_int_width: "16".into(),
14 cpu: target_cpu.into(),
15 exe_suffix: ".elf".into(),
16
17 linker: Some("avr-gcc".into()),
18 executables: true,
19 eh_frame_header: false,
20 pre_link_args: [(LinkerFlavor::Gcc, vec![format!("-mmcu={}", target_cpu).into()])]
21 .into_iter()
22 .collect(),
23 late_link_args: [(LinkerFlavor::Gcc, vec!["-lgcc".into()])].into_iter().collect(),
24 max_atomic_width: Some(0),
25 atomic_cas: false,
26 ..TargetOptions::default()
27 },
28 }
29 }