Chih-Hung Hsieh | da60c85 | 2019-12-19 14:56:55 -0800 | [diff] [blame^] | 1 | use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; |
Inna Palant | ff3f07a | 2019-07-11 16:15:26 -0700 | [diff] [blame] | 2 | |
| 3 | pub fn target() -> TargetResult { |
| 4 | let mut base = super::apple_base::opts(); |
| 5 | base.cpu = "yonah".to_string(); |
| 6 | base.max_atomic_width = Some(64); |
| 7 | base.pre_link_args.insert(LinkerFlavor::Gcc, vec!["-m32".to_string()]); |
| 8 | base.stack_probes = true; |
| 9 | base.eliminate_frame_pointer = false; |
| 10 | |
Chih-Hung Hsieh | da60c85 | 2019-12-19 14:56:55 -0800 | [diff] [blame^] | 11 | // Clang automatically chooses a more specific target based on |
| 12 | // MACOSX_DEPLOYMENT_TARGET. To enable cross-language LTO to work |
| 13 | // correctly, we do too. |
| 14 | let arch = "i686"; |
| 15 | let llvm_target = super::apple_base::macos_llvm_target(&arch); |
| 16 | |
Inna Palant | ff3f07a | 2019-07-11 16:15:26 -0700 | [diff] [blame] | 17 | Ok(Target { |
Chih-Hung Hsieh | da60c85 | 2019-12-19 14:56:55 -0800 | [diff] [blame^] | 18 | llvm_target: llvm_target, |
Inna Palant | ff3f07a | 2019-07-11 16:15:26 -0700 | [diff] [blame] | 19 | target_endian: "little".to_string(), |
| 20 | target_pointer_width: "32".to_string(), |
| 21 | target_c_int_width: "32".to_string(), |
| 22 | data_layout: "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128".to_string(), |
| 23 | arch: "x86".to_string(), |
| 24 | target_os: "macos".to_string(), |
| 25 | target_env: String::new(), |
| 26 | target_vendor: "apple".to_string(), |
| 27 | linker_flavor: LinkerFlavor::Gcc, |
Chih-Hung Hsieh | da60c85 | 2019-12-19 14:56:55 -0800 | [diff] [blame^] | 28 | options: TargetOptions { |
| 29 | target_mcount: "\u{1}mcount".to_string(), |
| 30 | .. base |
| 31 | }, |
Inna Palant | ff3f07a | 2019-07-11 16:15:26 -0700 | [diff] [blame] | 32 | }) |
| 33 | } |