2020-10-05 12:37:55 +00:00
|
|
|
use crate::spec::{LinkerFlavor, Target, TargetOptions};
|
2020-07-26 11:58:37 +00:00
|
|
|
|
|
|
|
/// A base target for AVR devices using the GNU toolchain.
|
|
|
|
///
|
|
|
|
/// Requires GNU avr-gcc and avr-binutils on the host system.
|
2020-10-05 12:37:55 +00:00
|
|
|
pub fn target(target_cpu: String) -> Target {
|
|
|
|
Target {
|
2020-07-26 11:58:37 +00:00
|
|
|
arch: "avr".to_string(),
|
|
|
|
data_layout: "e-P1-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8".to_string(),
|
|
|
|
llvm_target: "avr-unknown-unknown".to_string(),
|
2020-10-14 16:08:12 +00:00
|
|
|
pointer_width: 16,
|
2020-07-26 11:58:37 +00:00
|
|
|
options: TargetOptions {
|
2020-11-08 11:57:55 +00:00
|
|
|
c_int_width: "16".to_string(),
|
2020-07-26 11:58:37 +00:00
|
|
|
cpu: target_cpu.clone(),
|
|
|
|
exe_suffix: ".elf".to_string(),
|
2020-07-30 16:04:26 +00:00
|
|
|
|
2020-07-26 11:58:37 +00:00
|
|
|
linker: Some("avr-gcc".to_owned()),
|
2020-07-30 16:04:26 +00:00
|
|
|
executables: true,
|
|
|
|
eh_frame_header: false,
|
2021-12-17 07:36:18 +00:00
|
|
|
pre_link_args: [(LinkerFlavor::Gcc, vec![format!("-mmcu={}", target_cpu)])]
|
2020-07-26 11:58:37 +00:00
|
|
|
.into_iter()
|
|
|
|
.collect(),
|
2021-12-17 07:36:18 +00:00
|
|
|
late_link_args: [(LinkerFlavor::Gcc, vec!["-lgcc".to_owned()])].into_iter().collect(),
|
2020-09-05 09:33:01 +00:00
|
|
|
max_atomic_width: Some(0),
|
|
|
|
atomic_cas: false,
|
2020-07-30 16:04:26 +00:00
|
|
|
..TargetOptions::default()
|
2020-07-26 11:58:37 +00:00
|
|
|
},
|
2020-10-05 12:37:55 +00:00
|
|
|
}
|
2020-07-26 11:58:37 +00:00
|
|
|
}
|