1 use crate::spec::{Cc, LinkerFlavor, Lld, RelocModel, 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 /// FIXME: Remove the second parameter when const string concatenation is possible.
7 pub fn target(target_cpu: &'static str, mmcu: &'static str) -> Target {
10 data_layout: "e-P1-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8".into(),
11 llvm_target: "avr-unknown-unknown".into(),
13 options: TargetOptions {
14 c_int_width: "16".into(),
15 cpu: target_cpu.into(),
16 exe_suffix: ".elf".into(),
18 linker: Some("avr-gcc".into()),
19 eh_frame_header: false,
20 pre_link_args: TargetOptions::link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &[mmcu]),
21 late_link_args: TargetOptions::link_args(
22 LinkerFlavor::Gnu(Cc::Yes, Lld::No),
25 max_atomic_width: Some(0),
27 relocation_model: RelocModel::Static,
28 ..TargetOptions::default()