2020-09-25 12:07:46 -07:00
|
|
|
use crate::spec::TargetOptions;
|
2015-01-08 10:19:52 +02:00
|
|
|
|
2019-02-08 21:00:07 +09:00
|
|
|
use Arch::*;
|
2015-01-08 10:19:52 +02:00
|
|
|
#[allow(non_camel_case_types)]
|
2015-03-30 09:38:44 -04:00
|
|
|
#[derive(Copy, Clone)]
|
2015-01-08 10:19:52 +02:00
|
|
|
pub enum Arch {
|
|
|
|
|
Armv7,
|
|
|
|
|
Armv7s,
|
|
|
|
|
Arm64,
|
|
|
|
|
I386,
|
2019-08-11 20:31:01 +02:00
|
|
|
X86_64,
|
|
|
|
|
X86_64_macabi,
|
2015-01-08 10:19:52 +02:00
|
|
|
}
|
|
|
|
|
|
2015-01-11 12:11:44 +01:00
|
|
|
fn target_cpu(arch: Arch) -> String {
|
|
|
|
|
match arch {
|
2015-02-12 19:15:36 +02:00
|
|
|
Armv7 => "cortex-a8", // iOS7 is supported on iPhone 4 and higher
|
|
|
|
|
Armv7s => "cortex-a9",
|
2020-06-07 11:23:15 +04:00
|
|
|
Arm64 => "apple-a7",
|
2015-08-11 12:05:36 -07:00
|
|
|
I386 => "yonah",
|
|
|
|
|
X86_64 => "core2",
|
2019-08-11 20:31:01 +02:00
|
|
|
X86_64_macabi => "core2",
|
2019-12-22 17:42:04 -05:00
|
|
|
}
|
|
|
|
|
.to_string()
|
2015-01-11 12:11:44 +01:00
|
|
|
}
|
|
|
|
|
|
2019-09-12 15:23:59 +03:00
|
|
|
fn link_env_remove(arch: Arch) -> Vec<String> {
|
|
|
|
|
match arch {
|
|
|
|
|
Armv7 | Armv7s | Arm64 | I386 | X86_64 => vec!["MACOSX_DEPLOYMENT_TARGET".to_string()],
|
2020-02-20 10:16:32 -08:00
|
|
|
X86_64_macabi => vec!["IPHONEOS_DEPLOYMENT_TARGET".to_string()],
|
2019-09-12 15:23:59 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-08 20:54:45 +03:00
|
|
|
pub fn opts(os: &str, arch: Arch) -> TargetOptions {
|
2020-09-25 12:07:46 -07:00
|
|
|
TargetOptions {
|
2015-01-11 12:11:44 +01:00
|
|
|
cpu: target_cpu(arch),
|
2020-10-07 15:46:05 -07:00
|
|
|
dynamic_linking: false,
|
2015-01-08 10:19:52 +02:00
|
|
|
executables: true,
|
2019-09-12 15:23:59 +03:00
|
|
|
link_env_remove: link_env_remove(arch),
|
2015-12-10 12:21:55 -08:00
|
|
|
has_elf_tls: false,
|
2018-03-24 21:54:21 +02:00
|
|
|
eliminate_frame_pointer: false,
|
2020-10-08 20:54:45 +03:00
|
|
|
..super::apple_base::opts(os)
|
2020-09-25 12:07:46 -07:00
|
|
|
}
|
2015-01-08 10:19:52 +02:00
|
|
|
}
|