1 use crate::spec::{LinkerFlavor, Target, TargetOptions};
3 /// A base target for AVR devices using the GNU toolchain.
5 /// Requires GNU avr-gcc and avr-binutils on the host system.
6 pub fn target(target_cpu: String) -> Target {
8 arch: "avr".to_string(),
9 data_layout: "e-P1-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8".to_string(),
10 llvm_target: "avr-unknown-unknown".to_string(),
12 options: TargetOptions {
13 c_int_width: "16".to_string(),
14 cpu: target_cpu.clone(),
15 exe_suffix: ".elf".to_string(),
17 linker: Some("avr-gcc".to_owned()),
19 eh_frame_header: false,
20 pre_link_args: vec![(LinkerFlavor::Gcc, vec![format!("-mmcu={}", target_cpu)])]
23 late_link_args: vec![(LinkerFlavor::Gcc, vec!["-lgcc".to_owned()])]
26 max_atomic_width: Some(0),
28 ..TargetOptions::default()