target: move base specs to spec/base

Signed-off-by: David Wood <david@davidtw.co>
This commit is contained in:
David Wood 2023-11-08 14:15:26 +08:00
parent 0d5ec963bb
commit 76aa83e3e1
No known key found for this signature in database
229 changed files with 453 additions and 449 deletions

View File

@ -1,4 +1,4 @@
use super::apple_base::{macos_llvm_target, opts, Arch};
use crate::spec::base::apple::{macos_llvm_target, opts, Arch};
use crate::spec::{FramePointer, SanitizerSet, Target, TargetOptions};
pub fn target() -> Target {

View File

@ -1,4 +1,4 @@
use super::apple_base::{ios_llvm_target, opts, Arch};
use crate::spec::base::apple::{ios_llvm_target, opts, Arch};
use crate::spec::{FramePointer, SanitizerSet, Target, TargetOptions};
pub fn target() -> Target {

View File

@ -1,4 +1,4 @@
use super::apple_base::{opts, Arch};
use crate::spec::base::apple::{opts, Arch};
use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, SanitizerSet, Target, TargetOptions};
pub fn target() -> Target {

View File

@ -1,4 +1,4 @@
use super::apple_base::{ios_sim_llvm_target, opts, Arch};
use crate::spec::base::apple::{ios_sim_llvm_target, opts, Arch};
use crate::spec::{FramePointer, SanitizerSet, Target, TargetOptions};
pub fn target() -> Target {

View File

@ -1,4 +1,4 @@
use super::apple_base::{opts, tvos_llvm_target, Arch};
use crate::spec::base::apple::{opts, tvos_llvm_target, Arch};
use crate::spec::{FramePointer, Target, TargetOptions};
pub fn target() -> Target {

View File

@ -1,4 +1,4 @@
use super::apple_base::{opts, tvos_sim_llvm_target, Arch};
use crate::spec::base::apple::{opts, tvos_sim_llvm_target, Arch};
use crate::spec::{FramePointer, Target, TargetOptions};
pub fn target() -> Target {

View File

@ -1,4 +1,4 @@
use super::apple_base::{opts, watchos_sim_llvm_target, Arch};
use crate::spec::base::apple::{opts, watchos_sim_llvm_target, Arch};
use crate::spec::{FramePointer, Target, TargetOptions};
pub fn target() -> Target {

View File

@ -1,5 +1,5 @@
use crate::abi::Endian;
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -12,7 +12,7 @@ pub fn target() -> Target {
max_atomic_width: Some(128),
mcount: "\u{1}_mcount".into(),
endian: Endian::Big,
..super::linux_gnu_base::opts()
..base::linux_gnu::opts()
},
}
}

View File

@ -1,8 +1,8 @@
use crate::abi::Endian;
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
let mut base = super::linux_gnu_base::opts();
let mut base = base::linux_gnu::opts();
base.max_atomic_width = Some(128);
Target {

View File

@ -1,5 +1,5 @@
use crate::abi::Endian;
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -11,7 +11,7 @@ pub fn target() -> Target {
mcount: "__mcount".into(),
max_atomic_width: Some(128),
endian: Endian::Big,
..super::netbsd_base::opts()
..base::netbsd::opts()
},
}
}

View File

@ -1,7 +1,7 @@
use super::{RelocModel, Target, TargetOptions};
use super::{base, RelocModel, Target, TargetOptions};
pub fn target() -> Target {
let base = super::solid_base::opts("asp3");
let base = base::solid::opts("asp3");
Target {
llvm_target: "aarch64-unknown-none".into(),
pointer_width: 64,

View File

@ -1,4 +1,4 @@
use crate::spec::{SanitizerSet, Target, TargetOptions};
use crate::spec::{base, SanitizerSet, Target, TargetOptions};
// See https://developer.android.com/ndk/guides/abis.html#arm64-v8a
// for target ABI requirements.
@ -20,7 +20,7 @@ pub fn target() -> Target {
| SanitizerSet::SHADOWCALLSTACK
| SanitizerSet::ADDRESS,
supports_xray: true,
..super::android_base::opts()
..base::android::opts()
},
}
}

View File

@ -1,7 +1,7 @@
use crate::spec::Target;
use crate::spec::{base, Target};
pub fn target() -> Target {
let mut base = super::windows_gnullvm_base::opts();
let mut base = base::windows_gnullvm::opts();
base.max_atomic_width = Some(128);
base.features = "+v8a,+neon,+fp-armv8".into();
base.linker = Some("aarch64-w64-mingw32-clang".into());

View File

@ -1,7 +1,7 @@
use crate::spec::Target;
use crate::spec::{base, Target};
pub fn target() -> Target {
let mut base = super::windows_msvc_base::opts();
let mut base = base::windows_msvc::opts();
base.max_atomic_width = Some(128);
base.features = "+v8a,+neon,+fp-armv8".into();

View File

@ -1,4 +1,4 @@
use crate::spec::{SanitizerSet, Target, TargetOptions};
use crate::spec::{base, SanitizerSet, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -13,7 +13,7 @@ pub fn target() -> Target {
| SanitizerSet::CFI
| SanitizerSet::MEMORY
| SanitizerSet::THREAD,
..super::freebsd_base::opts()
..base::freebsd::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{SanitizerSet, Target, TargetOptions};
use crate::spec::{base, SanitizerSet, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -12,7 +12,7 @@ pub fn target() -> Target {
supported_sanitizers: SanitizerSet::ADDRESS
| SanitizerSet::CFI
| SanitizerSet::SHADOWCALLSTACK,
..super::fuchsia_base::opts()
..base::fuchsia::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -9,7 +9,7 @@ pub fn target() -> Target {
options: TargetOptions {
features: "+v8a,+strict-align,+neon,+fp-armv8".into(),
max_atomic_width: Some(128),
..super::hermit_base::opts()
..base::hermit::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{SanitizerSet, Target, TargetOptions};
use crate::spec::{base, SanitizerSet, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -18,7 +18,7 @@ pub fn target() -> Target {
| SanitizerSet::THREAD
| SanitizerSet::HWADDRESS,
supports_xray: true,
..super::linux_gnu_base::opts()
..base::linux_gnu::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -11,7 +11,7 @@ pub fn target() -> Target {
features: "+v8a,+outline-atomics".into(),
max_atomic_width: Some(128),
mcount: "\u{1}_mcount".into(),
..super::linux_gnu_base::opts()
..base::linux_gnu::opts()
},
}
}

View File

@ -1,7 +1,7 @@
use crate::spec::{SanitizerSet, Target, TargetOptions};
use crate::spec::{base, SanitizerSet, Target, TargetOptions};
pub fn target() -> Target {
let mut base = super::linux_musl_base::opts();
let mut base = base::linux_musl::opts();
base.max_atomic_width = Some(128);
base.supports_xray = true;
base.features = "+v8a".into();

View File

@ -1,9 +1,9 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
use super::SanitizerSet;
pub fn target() -> Target {
let mut base = super::linux_ohos_base::opts();
let mut base = base::linux_ohos::opts();
base.max_atomic_width = Some(128);
Target {

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -10,7 +10,7 @@ pub fn target() -> Target {
features: "+v8a".into(),
mcount: "__mcount".into(),
max_atomic_width: Some(128),
..super::netbsd_base::opts()
..base::netbsd::opts()
},
}
}

View File

@ -1,5 +1,4 @@
use super::nto_qnx_base;
use crate::spec::{Cc, LinkerFlavor, Lld, Target, TargetOptions};
use crate::spec::{base, Cc, LinkerFlavor, Lld, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -24,7 +23,7 @@ pub fn target() -> Target {
&["-Vgcc_ntoaarch64le_cxx"],
),
env: "nto71".into(),
..nto_qnx_base::opts()
..base::nto_qnx::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -9,7 +9,7 @@ pub fn target() -> Target {
options: TargetOptions {
features: "+v8a".into(),
max_atomic_width: Some(128),
..super::openbsd_base::opts()
..base::openbsd::opts()
},
}
}

View File

@ -1,7 +1,7 @@
use crate::spec::Target;
use crate::spec::{base, Target};
pub fn target() -> Target {
let mut base = super::redox_base::opts();
let mut base = base::redox::opts();
base.max_atomic_width = Some(128);
base.features = "+v8a".into();

View File

@ -1,7 +1,7 @@
use crate::spec::Target;
use crate::spec::{base, Target};
pub fn target() -> Target {
let mut base = super::teeos_base::opts();
let mut base = base::teeos::opts();
base.features = "+strict-align,+neon,+fp-armv8".into();
base.max_atomic_width = Some(128);
base.linker = Some("aarch64-linux-gnu-ld".into());

View File

@ -1,11 +1,10 @@
// This defines the aarch64 target for UEFI systems as described in the UEFI specification. See the
// uefi-base module for generic UEFI options.
use super::uefi_msvc_base;
use crate::spec::{LinkerFlavor, Lld, Target};
use crate::spec::{base, LinkerFlavor, Lld, Target};
pub fn target() -> Target {
let mut base = uefi_msvc_base::opts();
let mut base = base::uefi_msvc::opts();
base.max_atomic_width = Some(128);
base.add_pre_link_args(LinkerFlavor::Msvc(Lld::No), &["/machine:arm64"]);

View File

@ -1,7 +1,7 @@
use crate::spec::Target;
use crate::spec::{base, Target};
pub fn target() -> Target {
let mut base = super::windows_uwp_msvc_base::opts();
let mut base = base::windows_uwp_msvc::opts();
base.max_atomic_width = Some(128);
base.features = "+v8a".into();

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -9,7 +9,7 @@ pub fn target() -> Target {
options: TargetOptions {
features: "+v8a".into(),
max_atomic_width: Some(128),
..super::vxworks_base::opts()
..base::vxworks::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use super::apple_base::{opts, Arch};
use crate::spec::base::apple::{opts, Arch};
use crate::spec::{Target, TargetOptions};
pub fn target() -> Target {

View File

@ -1,4 +1,4 @@
use crate::spec::{SanitizerSet, Target, TargetOptions};
use crate::spec::{base, SanitizerSet, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -12,7 +12,7 @@ pub fn target() -> Target {
features: "+strict-align,+v5te".into(),
supported_sanitizers: SanitizerSet::ADDRESS,
max_atomic_width: Some(32),
..super::android_base::opts()
..base::android::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -12,7 +12,7 @@ pub fn target() -> Target {
max_atomic_width: Some(64),
mcount: "\u{1}__gnu_mcount_nc".into(),
llvm_mcount_intrinsic: Some("llvm.arm.gnu.eabi.mcount".into()),
..super::linux_gnu_base::opts()
..base::linux_gnu::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -12,7 +12,7 @@ pub fn target() -> Target {
max_atomic_width: Some(64),
mcount: "\u{1}__gnu_mcount_nc".into(),
llvm_mcount_intrinsic: Some("llvm.arm.gnu.eabi.mcount".into()),
..super::linux_gnu_base::opts()
..base::linux_gnu::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -16,7 +16,7 @@ pub fn target() -> Target {
features: "+strict-align,+v6".into(),
max_atomic_width: Some(64),
mcount: "\u{1}mcount".into(),
..super::linux_musl_base::opts()
..base::linux_musl::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -16,7 +16,7 @@ pub fn target() -> Target {
features: "+strict-align,+v6,+vfp2,-d32".into(),
max_atomic_width: Some(64),
mcount: "\u{1}mcount".into(),
..super::linux_musl_base::opts()
..base::linux_musl::opts()
},
}
}

View File

@ -1,5 +1,5 @@
use crate::abi::Endian;
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -14,7 +14,7 @@ pub fn target() -> Target {
max_atomic_width: Some(64),
mcount: "\u{1}__gnu_mcount_nc".into(),
llvm_mcount_intrinsic: Some("llvm.arm.gnu.eabi.mcount".into()),
..super::linux_gnu_base::opts()
..base::linux_gnu::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -14,7 +14,7 @@ pub fn target() -> Target {
mcount: "\u{1}__gnu_mcount_nc".into(),
llvm_mcount_intrinsic: Some("llvm.arm.gnu.eabi.mcount".into()),
has_thumb_interworking: true,
..super::linux_gnu_base::opts()
..base::linux_gnu::opts()
},
}
}

View File

@ -1,6 +1,6 @@
//! Targets the ARMv5TE, with code as `a32` code by default.
use crate::spec::{cvs, FramePointer, Target, TargetOptions};
use crate::spec::{base, cvs, FramePointer, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -35,7 +35,7 @@ pub fn target() -> Target {
atomic_cas: false,
has_thumb_interworking: true,
..super::thumb_base::opts()
..base::thumb::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -13,7 +13,7 @@ pub fn target() -> Target {
max_atomic_width: Some(32),
mcount: "\u{1}__gnu_mcount_nc".into(),
has_thumb_interworking: true,
..super::linux_gnu_base::opts()
..base::linux_gnu::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -17,7 +17,7 @@ pub fn target() -> Target {
max_atomic_width: Some(32),
mcount: "\u{1}mcount".into(),
has_thumb_interworking: true,
..super::linux_musl_base::opts()
..base::linux_musl::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -13,7 +13,7 @@ pub fn target() -> Target {
max_atomic_width: Some(32),
mcount: "\u{1}__gnu_mcount_nc".into(),
has_thumb_interworking: true,
..super::linux_uclibc_base::opts()
..base::linux_uclibc::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -14,7 +14,7 @@ pub fn target() -> Target {
max_atomic_width: Some(64),
mcount: "\u{1}__gnu_mcount_nc".into(),
llvm_mcount_intrinsic: Some("llvm.arm.gnu.eabi.mcount".into()),
..super::freebsd_base::opts()
..base::freebsd::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -13,7 +13,7 @@ pub fn target() -> Target {
features: "+v6,+vfp2,-d32".into(),
max_atomic_width: Some(64),
mcount: "__mcount".into(),
..super::netbsd_base::opts()
..base::netbsd::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Cc, LinkerFlavor, Lld, SanitizerSet, Target, TargetOptions};
use crate::spec::{base, Cc, LinkerFlavor, Lld, SanitizerSet, Target, TargetOptions};
// This target if is for the baseline of the Android v7a ABI
// in thumb mode. It's named armv7-* instead of thumbv7-*
@ -9,7 +9,7 @@ use crate::spec::{Cc, LinkerFlavor, Lld, SanitizerSet, Target, TargetOptions};
// for target ABI requirements.
pub fn target() -> Target {
let mut base = super::android_base::opts();
let mut base = base::android::opts();
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-march=armv7-a"]);
Target {
llvm_target: "armv7-none-linux-android".into(),

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -13,7 +13,7 @@ pub fn target() -> Target {
features: "+v7,+vfp3,-d32,+thumb2,-neon".into(),
max_atomic_width: Some(64),
mcount: "\u{1}__gnu_mcount_nc".into(),
..super::freebsd_base::opts()
..base::freebsd::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
// This target is for glibc Linux on ARMv7 without thumb-mode, NEON or
// hardfloat.
@ -15,7 +15,7 @@ pub fn target() -> Target {
max_atomic_width: Some(64),
mcount: "\u{1}__gnu_mcount_nc".into(),
llvm_mcount_intrinsic: Some("llvm.arm.gnu.eabi.mcount".into()),
..super::linux_gnu_base::opts()
..base::linux_gnu::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
// This target is for glibc Linux on ARMv7 without NEON or
// thumb-mode. See the thumbv7neon variant for enabling both.
@ -15,7 +15,7 @@ pub fn target() -> Target {
features: "+v7,+vfp3,-d32,+thumb2,-neon".into(),
max_atomic_width: Some(64),
mcount: "\u{1}__gnu_mcount_nc".into(),
..super::linux_gnu_base::opts()
..base::linux_gnu::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
// This target is for musl Linux on ARMv7 without thumb-mode, NEON or
// hardfloat.
@ -20,7 +20,7 @@ pub fn target() -> Target {
features: "+v7,+thumb2,+soft-float,-neon".into(),
max_atomic_width: Some(64),
mcount: "\u{1}mcount".into(),
..super::linux_musl_base::opts()
..base::linux_musl::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
// This target is for musl Linux on ARMv7 without thumb-mode or NEON.
@ -19,7 +19,7 @@ pub fn target() -> Target {
features: "+v7,+vfp3,-d32,+thumb2,-neon".into(),
max_atomic_width: Some(64),
mcount: "\u{1}mcount".into(),
..super::linux_musl_base::opts()
..base::linux_musl::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
// This target is for OpenHarmony on ARMv7 Linux with thumb-mode, but no NEON or
// hardfloat.
@ -18,7 +18,7 @@ pub fn target() -> Target {
features: "+v7,+thumb2,+soft-float,-neon".into(),
max_atomic_width: Some(64),
mcount: "\u{1}mcount".into(),
..super::linux_ohos_base::opts()
..base::linux_ohos::opts()
},
}
}

View File

@ -1,10 +1,10 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
// This target is for uclibc Linux on ARMv7 without NEON,
// thumb-mode or hardfloat.
pub fn target() -> Target {
let base = super::linux_uclibc_base::opts();
let base = base::linux_uclibc::opts();
Target {
llvm_target: "armv7-unknown-linux-gnueabi".into(),
pointer_width: 32,

View File

@ -1,10 +1,10 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
// This target is for uclibc Linux on ARMv7 without NEON or
// thumb-mode. See the thumbv7neon variant for enabling both.
pub fn target() -> Target {
let base = super::linux_uclibc_base::opts();
let base = base::linux_uclibc::opts();
Target {
llvm_target: "armv7-unknown-linux-gnueabihf".into(),
pointer_width: 32,

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -13,7 +13,7 @@ pub fn target() -> Target {
features: "+v7,+vfp3,-d32,+thumb2,-neon".into(),
max_atomic_width: Some(64),
mcount: "__mcount".into(),
..super::netbsd_base::opts()
..base::netbsd::opts()
},
}
}

View File

@ -1,4 +1,4 @@
use crate::spec::{Target, TargetOptions};
use crate::spec::{base, Target, TargetOptions};
pub fn target() -> Target {
Target {
@ -11,7 +11,7 @@ pub fn target() -> Target {
// Info about features at https://wiki.debian.org/ArmHardFloatPort
features: "+v7,+vfp3,-d32,+thumb2,-neon".into(),
max_atomic_width: Some(64),
..super::vxworks_base::opts()
..base::vxworks::opts()
},
}
}

View File

@ -1,7 +1,7 @@
use super::{RelocModel, Target, TargetOptions};
use super::{base, RelocModel, Target, TargetOptions};
pub fn target() -> Target {
let base = super::solid_base::opts("asp3");
let base = base::solid::opts("asp3");
Target {
llvm_target: "armv7a-none-eabi".into(),
pointer_width: 32,

View File

@ -1,7 +1,7 @@
use super::{RelocModel, Target, TargetOptions};
use super::{base, RelocModel, Target, TargetOptions};
pub fn target() -> Target {
let base = super::solid_base::opts("asp3");
let base = base::solid::opts("asp3");
Target {
llvm_target: "armv7a-none-eabihf".into(),
pointer_width: 32,

View File

@ -1,4 +1,4 @@
use super::apple_base::{opts, Arch};
use crate::spec::base::apple::{opts, Arch};
use crate::spec::{Target, TargetOptions};
pub fn target() -> Target {

View File

@ -1,4 +1,4 @@
use super::apple_base::{ios_llvm_target, opts, Arch};
use crate::spec::base::apple::{ios_llvm_target, opts, Arch};
use crate::spec::{Target, TargetOptions};
pub fn target() -> Target {

View File

@ -1,5 +1,5 @@
use crate::spec::Target;
use crate::spec::{base, Target};
pub fn target() -> Target {
super::avr_gnu_base::target("atmega328", "-mmcu=atmega328")
base::avr_gnu::target("atmega328", "-mmcu=atmega328")
}

View File

@ -1,7 +1,7 @@
use crate::spec::{SanitizerSet, TargetOptions};
use crate::spec::{base, SanitizerSet, TargetOptions};
pub fn opts() -> TargetOptions {
let mut base = super::linux_base::opts();
let mut base = base::linux::opts();
base.os = "android".into();
base.is_like_android = true;
base.default_dwarf_version = 2;

View File

@ -1,10 +1,10 @@
use std::{borrow::Cow, env};
use crate::spec::{add_link_args, add_link_args_iter};
use crate::spec::{cvs, Cc, DebuginfoKind, FramePointer, LinkArgs};
use crate::spec::{LinkerFlavor, Lld, SplitDebuginfo, StaticCow, Target, TargetOptions};
#[cfg(test)]
#[path = "apple/tests.rs"]
mod tests;
use Arch::*;
@ -102,13 +102,13 @@ fn pre_link_args(os: &'static str, arch: Arch, abi: &'static str) -> LinkArgs {
LinkerFlavor::Darwin(Cc::No, Lld::No),
&["-arch", arch, "-platform_version"],
);
super::add_link_args_iter(
add_link_args_iter(
&mut args,
LinkerFlavor::Darwin(Cc::No, Lld::No),
[platform_name, platform_version.clone(), platform_version].into_iter(),
);
if abi != "macabi" {
super::add_link_args(&mut args, LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-arch", arch]);
add_link_args(&mut args, LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-arch", arch]);
}
args

View File

@ -0,0 +1,5 @@
use crate::spec::{base, TargetOptions};
pub fn opts() -> TargetOptions {
TargetOptions { env: "gnu".into(), ..base::hurd::opts() }
}

View File

@ -0,0 +1,5 @@
use crate::spec::{base, TargetOptions};
pub fn opts() -> TargetOptions {
TargetOptions { env: "gnu".into(), ..base::linux::opts() }
}

View File

@ -1,8 +1,8 @@
use crate::spec::crt_objects;
use crate::spec::{LinkSelfContainedDefault, TargetOptions};
use crate::spec::{base, LinkSelfContainedDefault, TargetOptions};
pub fn opts() -> TargetOptions {
let mut base = super::linux_base::opts();
let mut base = base::linux::opts();
base.env = "musl".into();
base.pre_link_objects_self_contained = crt_objects::pre_musl_self_contained();

View File

@ -1,7 +1,7 @@
use crate::spec::TargetOptions;
use crate::spec::{base, TargetOptions};
pub fn opts() -> TargetOptions {
let mut base = super::linux_base::opts();
let mut base = base::linux::opts();
base.env = "ohos".into();
base.crt_static_default = false;

View File

@ -0,0 +1,5 @@
use crate::spec::{base, TargetOptions};
pub fn opts() -> TargetOptions {
TargetOptions { env: "uclibc".into(), ..base::linux::opts() }
}

View File

@ -0,0 +1,37 @@
pub(crate) mod aix;
pub(crate) mod android;
pub(crate) mod apple;
pub(crate) mod avr_gnu;
pub(crate) mod bpf;
pub(crate) mod dragonfly;
pub(crate) mod freebsd;
pub(crate) mod fuchsia;
pub(crate) mod haiku;
pub(crate) mod hermit;
pub(crate) mod hurd;
pub(crate) mod hurd_gnu;
pub(crate) mod illumos;
pub(crate) mod l4re;
pub(crate) mod linux;
pub(crate) mod linux_gnu;
pub(crate) mod linux_musl;
pub(crate) mod linux_ohos;
pub(crate) mod linux_uclibc;
pub(crate) mod msvc;
pub(crate) mod netbsd;
pub(crate) mod nto_qnx;
pub(crate) mod openbsd;
pub(crate) mod redox;
pub(crate) mod solaris;
pub(crate) mod solid;
pub(crate) mod teeos;
pub(crate) mod thumb;
pub(crate) mod uefi_msvc;
pub(crate) mod unikraft_linux_musl;
pub(crate) mod vxworks;
pub(crate) mod wasm;
pub(crate) mod windows_gnu;
pub(crate) mod windows_gnullvm;
pub(crate) mod windows_msvc;
pub(crate) mod windows_uwp_gnu;
pub(crate) mod windows_uwp_msvc;

View File

@ -1,5 +1,4 @@
use super::FramePointer;
use crate::spec::TargetOptions;
use crate::spec::{FramePointer, TargetOptions};
pub fn opts(kernel: &str) -> TargetOptions {
TargetOptions {

View File

@ -1,12 +1,11 @@
use super::{Cc, LinkerFlavor, Lld, PanicStrategy};
use crate::spec::{RelroLevel, TargetOptions};
use crate::spec::{add_link_args, Cc, LinkerFlavor, Lld, PanicStrategy, RelroLevel, TargetOptions};
pub fn opts() -> TargetOptions {
let lld_args = &["-zmax-page-size=4096", "-znow", "-ztext", "--execute-only"];
let cc_args = &["-Wl,-zmax-page-size=4096", "-Wl,-znow", "-Wl,-ztext", "-mexecute-only"];
let mut pre_link_args = TargetOptions::link_args(LinkerFlavor::Gnu(Cc::No, Lld::No), lld_args);
super::add_link_args(&mut pre_link_args, LinkerFlavor::Gnu(Cc::Yes, Lld::No), cc_args);
add_link_args(&mut pre_link_args, LinkerFlavor::Gnu(Cc::Yes, Lld::No), cc_args);
TargetOptions {
os: "teeos".into(),

View File

@ -9,10 +9,10 @@
// the timer-interrupt. Device-drivers are required to use polling-based models. Furthermore, all
// code runs in the same environment, no process separation is supported.
use crate::spec::{LinkerFlavor, Lld, PanicStrategy, StackProbeType, TargetOptions};
use crate::spec::{base, LinkerFlavor, Lld, PanicStrategy, StackProbeType, TargetOptions};
pub fn opts() -> TargetOptions {
let mut base = super::msvc_base::opts();
let mut base = base::msvc::opts();
base.add_pre_link_args(
LinkerFlavor::Msvc(Lld::No),

View File

@ -1,5 +1,7 @@
use super::LinkSelfContainedDefault;
use super::{cvs, Cc, LinkerFlavor, PanicStrategy, RelocModel, TargetOptions, TlsModel};
use crate::spec::{
add_link_args, cvs, Cc, LinkSelfContainedDefault, LinkerFlavor, PanicStrategy, RelocModel,
TargetOptions, TlsModel,
};
pub fn options() -> TargetOptions {
macro_rules! args {
@ -50,7 +52,7 @@ pub fn options() -> TargetOptions {
}
let mut pre_link_args = TargetOptions::link_args(LinkerFlavor::WasmLld(Cc::No), args!(""));
super::add_link_args(&mut pre_link_args, LinkerFlavor::WasmLld(Cc::Yes), args!("-Wl,"));
add_link_args(&mut pre_link_args, LinkerFlavor::WasmLld(Cc::Yes), args!("-Wl,"));
TargetOptions {
is_like_wasm: true,

View File

@ -1,5 +1,5 @@
use crate::spec::crt_objects;
use crate::spec::LinkSelfContainedDefault;
use crate::spec::{add_link_args, crt_objects};
use crate::spec::{cvs, Cc, DebuginfoKind, LinkerFlavor, Lld, SplitDebuginfo, TargetOptions};
use std::borrow::Cow;
@ -13,7 +13,7 @@ pub fn opts() -> TargetOptions {
"--disable-auto-image-base",
],
);
super::add_link_args(
add_link_args(
&mut pre_link_args,
LinkerFlavor::Gnu(Cc::Yes, Lld::No),
&[
@ -45,14 +45,14 @@ pub fn opts() -> TargetOptions {
];
let mut late_link_args =
TargetOptions::link_args(LinkerFlavor::Gnu(Cc::No, Lld::No), mingw_libs);
super::add_link_args(&mut late_link_args, LinkerFlavor::Gnu(Cc::Yes, Lld::No), mingw_libs);
add_link_args(&mut late_link_args, LinkerFlavor::Gnu(Cc::Yes, Lld::No), mingw_libs);
// If any of our crates are dynamically linked then we need to use
// the shared libgcc_s-dw2-1.dll. This is required to support
// unwinding across DLL boundaries.
let dynamic_unwind_libs = &["-lgcc_s"];
let mut late_link_args_dynamic =
TargetOptions::link_args(LinkerFlavor::Gnu(Cc::No, Lld::No), dynamic_unwind_libs);
super::add_link_args(
add_link_args(
&mut late_link_args_dynamic,
LinkerFlavor::Gnu(Cc::Yes, Lld::No),
dynamic_unwind_libs,
@ -65,7 +65,7 @@ pub fn opts() -> TargetOptions {
let static_unwind_libs = &["-lgcc_eh", "-l:libpthread.a"];
let mut late_link_args_static =
TargetOptions::link_args(LinkerFlavor::Gnu(Cc::No, Lld::No), static_unwind_libs);
super::add_link_args(
add_link_args(
&mut late_link_args_static,
LinkerFlavor::Gnu(Cc::Yes, Lld::No),
static_unwind_libs,

View File

@ -1,7 +1,7 @@
use crate::spec::{cvs, TargetOptions};
use crate::spec::{base, cvs, TargetOptions};
pub fn opts() -> TargetOptions {
let base = super::msvc_base::opts();
let base = base::msvc::opts();
TargetOptions {
os: "windows".into(),

View File

@ -1,7 +1,7 @@
use crate::spec::{Cc, LinkArgs, LinkerFlavor, Lld, TargetOptions};
use crate::spec::{add_link_args, base, Cc, LinkArgs, LinkerFlavor, Lld, TargetOptions};
pub fn opts() -> TargetOptions {
let base = super::windows_gnu_base::opts();
let base = base::windows_gnu::opts();
// FIXME: This should be updated for the exception machinery changes from #67502
// and inherit from `windows_gnu_base`, at least partially.
@ -17,7 +17,7 @@ pub fn opts() -> TargetOptions {
];
let mut late_link_args =
TargetOptions::link_args(LinkerFlavor::Gnu(Cc::No, Lld::No), mingw_libs);
super::add_link_args(&mut late_link_args, LinkerFlavor::Gnu(Cc::Yes, Lld::No), mingw_libs);
add_link_args(&mut late_link_args, LinkerFlavor::Gnu(Cc::Yes, Lld::No), mingw_libs);
// Reset the flags back to empty until the FIXME above is addressed.
let late_link_args_dynamic = LinkArgs::new();
let late_link_args_static = LinkArgs::new();

View File

@ -1,7 +1,7 @@
use crate::spec::{LinkerFlavor, Lld, TargetOptions};
use crate::spec::{base, LinkerFlavor, Lld, TargetOptions};
pub fn opts() -> TargetOptions {
let mut opts = super::windows_msvc_base::opts();
let mut opts = base::windows_msvc::opts();
opts.abi = "uwp".into();
opts.vendor = "uwp".into();

View File

@ -1,5 +1,5 @@
use crate::spec::Target;
use crate::{abi::Endian, spec::bpf_base};
use crate::{abi::Endian, spec::base};
pub fn target() -> Target {
Target {
@ -7,6 +7,6 @@ pub fn target() -> Target {
data_layout: "E-m:e-p:64:64-i64:64-i128:128-n32:64-S128".into(),
pointer_width: 64,
arch: "bpf".into(),
options: bpf_base::opts(Endian::Big),
options: base::bpf::opts(Endian::Big),
}
}

View File

@ -1,5 +1,5 @@
use crate::spec::Target;
use crate::{abi::Endian, spec::bpf_base};
use crate::{abi::Endian, spec::base};
pub fn target() -> Target {
Target {
@ -7,6 +7,6 @@ pub fn target() -> Target {
data_layout: "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128".into(),
pointer_width: 64,
arch: "bpf".into(),
options: bpf_base::opts(Endian::Little),
options: base::bpf::opts(Endian::Little),
}
}

Some files were not shown because too many files have changed in this diff Show More