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()),
20 eh_frame_header
: false,
21 pre_link_args
: vec
![(LinkerFlavor
::Gcc
, vec
![format
!("-mmcu={}", target_cpu
)])]
24 late_link_args
: vec
![(LinkerFlavor
::Gcc
, vec
!["-lgcc".to_owned()])]
27 max_atomic_width
: Some(0),
29 ..TargetOptions
::default()