]>
Commit | Line | Data |
---|---|---|
5e7ed085 | 1 | use crate::spec::{cvs, LinkArgs, LinkerFlavor, RelocModel, Target, TargetOptions}; |
c295e0f8 XL |
2 | |
3 | /// A base target for Nintendo 3DS devices using the devkitARM toolchain. | |
4 | /// | |
5 | /// Requires the devkitARM toolchain for 3DS targets on the host system. | |
6 | ||
7 | pub fn target() -> Target { | |
8 | let mut pre_link_args = LinkArgs::new(); | |
9 | pre_link_args.insert( | |
10 | LinkerFlavor::Gcc, | |
11 | vec![ | |
5e7ed085 FG |
12 | "-specs=3dsx.specs".into(), |
13 | "-mtune=mpcore".into(), | |
14 | "-mfloat-abi=hard".into(), | |
15 | "-mtp=soft".into(), | |
c295e0f8 XL |
16 | ], |
17 | ); | |
18 | ||
19 | Target { | |
5e7ed085 | 20 | llvm_target: "armv6k-none-eabihf".into(), |
c295e0f8 | 21 | pointer_width: 32, |
5e7ed085 FG |
22 | data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(), |
23 | arch: "arm".into(), | |
c295e0f8 XL |
24 | |
25 | options: TargetOptions { | |
5e7ed085 FG |
26 | os: "horizon".into(), |
27 | env: "newlib".into(), | |
28 | vendor: "nintendo".into(), | |
29 | abi: "eabihf".into(), | |
c295e0f8 | 30 | linker_flavor: LinkerFlavor::Gcc, |
5e7ed085 | 31 | cpu: "mpcore".into(), |
c295e0f8 | 32 | executables: true, |
5e7ed085 FG |
33 | families: cvs!["unix"], |
34 | linker: Some("arm-none-eabi-gcc".into()), | |
c295e0f8 | 35 | relocation_model: RelocModel::Static, |
5e7ed085 | 36 | features: "+vfp2".into(), |
c295e0f8 | 37 | pre_link_args, |
5e7ed085 | 38 | exe_suffix: ".elf".into(), |
5099ac24 | 39 | no_default_libraries: false, |
923072b8 FG |
40 | // There are some issues in debug builds with this enabled in certain programs. |
41 | has_thread_local: false, | |
c295e0f8 XL |
42 | ..Default::default() |
43 | }, | |
44 | } | |
45 | } |