From e84c60a2c50d951a614a414202a88fdb65ead0c3 Mon Sep 17 00:00:00 2001 From: Shiz Date: Sun, 20 Aug 2017 01:52:36 +0200 Subject: [PATCH] Add Alpine targets Add `$arch-alpine-linux-musl` targets to Rust to encode our toolchain and distribution-specific quirks instead of polluting the main musl target of `$arch-unknown-linux-musl`. Co-Authored-By: Rasmus Thomsen Co-Authored-By: Ariadne Conill Co-Authored-By: Jakub Jirutka Co-Authored-By: Hugo Osvaldo Barrera Co-Authored-By: q66 Signed-off-by: Achill Gilgenast --- compiler/rustc_target/src/spec/base/linux_musl.rs | 11 +++++++---- compiler/rustc_target/src/spec/mod.rs | 12 ++++++++++++ .../src/spec/targets/aarch64_alpine_linux_musl.rs | 11 +++++++++++ .../spec/targets/armv6_alpine_linux_musleabihf.rs | 11 +++++++++++ .../spec/targets/armv7_alpine_linux_musleabihf.rs | 12 ++++++++++++ .../src/spec/targets/i586_alpine_linux_musl.rs | 12 ++++++++++++ .../spec/targets/loongarch64_alpine_linux_musl.rs | 10 ++++++++++ .../src/spec/targets/mips64_alpine_linux_musl.rs | 10 ++++++++++ .../src/spec/targets/powerpc64_alpine_linux_musl.rs | 10 ++++++++++ .../spec/targets/powerpc64le_alpine_linux_musl.rs | 11 +++++++++++ .../src/spec/targets/powerpc_alpine_linux_musl.rs | 10 ++++++++++ .../src/spec/targets/riscv64_alpine_linux_musl.rs | 10 ++++++++++ .../src/spec/targets/s390x_alpine_linux_musl.rs | 10 ++++++++++ .../src/spec/targets/x86_64_alpine_linux_musl.rs | 11 +++++++++++ 14 files changed, 147 insertions(+), 4 deletions(-) create mode 100644 compiler/rustc_target/src/spec/targets/aarch64_alpine_linux_musl.rs create mode 100644 compiler/rustc_target/src/spec/targets/armv6_alpine_linux_musleabihf.rs create mode 100644 compiler/rustc_target/src/spec/targets/armv7_alpine_linux_musleabihf.rs create mode 100644 compiler/rustc_target/src/spec/targets/i586_alpine_linux_musl.rs create mode 100644 compiler/rustc_target/src/spec/targets/loongarch64_alpine_linux_musl.rs create mode 100644 compiler/rustc_target/src/spec/targets/mips64_alpine_linux_musl.rs create mode 100644 compiler/rustc_target/src/spec/targets/powerpc64_alpine_linux_musl.rs create mode 100644 compiler/rustc_target/src/spec/targets/powerpc64le_alpine_linux_musl.rs create mode 100644 compiler/rustc_target/src/spec/targets/powerpc_alpine_linux_musl.rs create mode 100644 compiler/rustc_target/src/spec/targets/riscv64_alpine_linux_musl.rs create mode 100644 compiler/rustc_target/src/spec/targets/s390x_alpine_linux_musl.rs create mode 100644 compiler/rustc_target/src/spec/targets/x86_64_alpine_linux_musl.rs diff --git a/compiler/rustc_target/src/spec/base/linux_musl.rs b/compiler/rustc_target/src/spec/base/linux_musl.rs index 6d3124b..0227c52 100644 --- a/compiler/rustc_target/src/spec/base/linux_musl.rs +++ b/compiler/rustc_target/src/spec/base/linux_musl.rs @@ -1,11 +1,14 @@ -use crate::spec::{Env, LinkSelfContainedDefault, TargetOptions, base, crt_objects}; +use crate::spec::{Env, TargetOptions, base}; pub(crate) fn opts() -> TargetOptions { TargetOptions { env: Env::Musl, - pre_link_objects_self_contained: crt_objects::pre_musl_self_contained(), - post_link_objects_self_contained: crt_objects::post_musl_self_contained(), - link_self_contained: LinkSelfContainedDefault::InferredForMusl, + // use static pie by default + static_position_independent_executables: true, + // we want to link to default libraries in order to reliably + // get in the builtins; this will also link in libc, which + // we likewise want (and avoid hacks in the libc module) + no_default_libraries: false, ..base::linux::opts() } } diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index 57effe3..aac1cc3 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -1439,6 +1439,18 @@ macro_rules! supported_targets { } supported_targets! { + ("i586-alpine-linux-musl", i586_alpine_linux_musl), + ("x86_64-alpine-linux-musl", x86_64_alpine_linux_musl), + ("aarch64-alpine-linux-musl", aarch64_alpine_linux_musl), + ("armv6-alpine-linux-musleabihf", armv6_alpine_linux_musleabihf), + ("armv7-alpine-linux-musleabihf", armv7_alpine_linux_musleabihf), + ("powerpc-alpine-linux-musl", powerpc_alpine_linux_musl), + ("powerpc64-alpine-linux-musl", powerpc64_alpine_linux_musl), + ("powerpc64le-alpine-linux-musl", powerpc64le_alpine_linux_musl), + ("s390x-alpine-linux-musl", s390x_alpine_linux_musl), + ("riscv64-alpine-linux-musl", riscv64_alpine_linux_musl), + ("loongarch64-alpine-linux-musl", loongarch64_alpine_linux_musl), + ("mips64-alpine-linux-musl", mips64_alpine_linux_musl), ("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu), ("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32), ("i686-unknown-linux-gnu", i686_unknown_linux_gnu), diff --git a/compiler/rustc_target/src/spec/targets/aarch64_alpine_linux_musl.rs b/compiler/rustc_target/src/spec/targets/aarch64_alpine_linux_musl.rs new file mode 100644 index 0000000..a91c546 --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/aarch64_alpine_linux_musl.rs @@ -0,0 +1,11 @@ +use crate::spec::Target; + +pub(crate) fn target() -> Target { + let mut base = super::aarch64_unknown_linux_musl::target(); + + base.llvm_target = "aarch64-alpine-linux-musl".into(); + base.options.vendor = "alpine".into(); + base.options.crt_static_default = false; + + base +} diff --git a/compiler/rustc_target/src/spec/targets/armv6_alpine_linux_musleabihf.rs b/compiler/rustc_target/src/spec/targets/armv6_alpine_linux_musleabihf.rs new file mode 100644 index 0000000..d93c689 --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/armv6_alpine_linux_musleabihf.rs @@ -0,0 +1,11 @@ +use crate::spec::Target; + +pub(crate) fn target() -> Target { + let mut base = super::arm_unknown_linux_musleabihf::target(); + + base.llvm_target = "armv6-alpine-linux-musleabihf".into(); + base.options.vendor = "alpine".into(); + base.options.crt_static_default = false; + + base +} diff --git a/compiler/rustc_target/src/spec/targets/armv7_alpine_linux_musleabihf.rs b/compiler/rustc_target/src/spec/targets/armv7_alpine_linux_musleabihf.rs new file mode 100644 index 0000000..ca18e82 --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/armv7_alpine_linux_musleabihf.rs @@ -0,0 +1,12 @@ +use crate::spec::Target; + +pub(crate) fn target() -> Target { + let mut base = super::armv7_unknown_linux_musleabihf::target(); + + base.llvm_target = "armv7-alpine-linux-musleabihf".into(); + base.options.vendor = "alpine".into(); + base.options.crt_static_default = false; + base.options.features = "+v7,+vfp3,-d32,+thumb-mode,+thumb2".into(); + + base +} diff --git a/compiler/rustc_target/src/spec/targets/i586_alpine_linux_musl.rs b/compiler/rustc_target/src/spec/targets/i586_alpine_linux_musl.rs new file mode 100644 index 0000000..62ccbf4 --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/i586_alpine_linux_musl.rs @@ -0,0 +1,12 @@ +use crate::spec::Target; + +pub(crate) fn target() -> Target { + let mut base = super::i686_unknown_linux_musl::target(); + + base.options.cpu = "pentium4".into(); + base.llvm_target = "i586-alpine-linux-musl".into(); + base.options.vendor = "alpine".into(); + base.options.crt_static_default = false; + + base +} diff --git a/compiler/rustc_target/src/spec/targets/loongarch64_alpine_linux_musl.rs b/compiler/rustc_target/src/spec/targets/loongarch64_alpine_linux_musl.rs new file mode 100644 index 0000000..b4454a4 --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/loongarch64_alpine_linux_musl.rs @@ -0,0 +1,10 @@ +use crate::spec::Target; + +pub(crate) fn target() -> Target { + let mut base = super::loongarch64_unknown_linux_musl::target(); + + base.llvm_target = "loongarch64-alpine-linux-musl".into(); + base.options.vendor = "alpine".into(); + + base +} diff --git a/compiler/rustc_target/src/spec/targets/mips64_alpine_linux_musl.rs b/compiler/rustc_target/src/spec/targets/mips64_alpine_linux_musl.rs new file mode 100644 index 0000000..cff4ab0 --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/mips64_alpine_linux_musl.rs @@ -0,0 +1,10 @@ +use crate::spec::Target; + +pub(crate) fn target() -> Target { + let mut base = super::mips64_unknown_linux_muslabi64::target(); + + base.llvm_target = "mips64-alpine-linux-musl".into(); + base.options.vendor = "alpine".into(); + + base +} diff --git a/compiler/rustc_target/src/spec/targets/powerpc64_alpine_linux_musl.rs b/compiler/rustc_target/src/spec/targets/powerpc64_alpine_linux_musl.rs new file mode 100644 index 0000000..cb34eda --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/powerpc64_alpine_linux_musl.rs @@ -0,0 +1,10 @@ +use crate::spec::Target; + +pub(crate) fn target() -> Target { + let mut base = super::powerpc64_unknown_linux_musl::target(); + + base.llvm_target = "powerpc64-alpine-linux-musl".into(); + base.options.vendor = "alpine".into(); + + base +} diff --git a/compiler/rustc_target/src/spec/targets/powerpc64le_alpine_linux_musl.rs b/compiler/rustc_target/src/spec/targets/powerpc64le_alpine_linux_musl.rs new file mode 100644 index 0000000..d510382 --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/powerpc64le_alpine_linux_musl.rs @@ -0,0 +1,11 @@ +use crate::spec::Target; + +pub(crate) fn target() -> Target { + let mut base = super::powerpc64le_unknown_linux_musl::target(); + + base.llvm_target = "powerpc64le-alpine-linux-musl".into(); + base.options.vendor = "alpine".into(); + base.options.crt_static_default = false; + + base +} diff --git a/compiler/rustc_target/src/spec/targets/powerpc_alpine_linux_musl.rs b/compiler/rustc_target/src/spec/targets/powerpc_alpine_linux_musl.rs new file mode 100644 index 0000000..cc0fec4 --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/powerpc_alpine_linux_musl.rs @@ -0,0 +1,10 @@ +use crate::spec::Target; + +pub(crate) fn target() -> Target { + let mut base = super::powerpc_unknown_linux_musl::target(); + + base.llvm_target = "powerpc-alpine-linux-musl".into(); + base.options.vendor = "alpine".into(); + + base +} diff --git a/compiler/rustc_target/src/spec/targets/riscv64_alpine_linux_musl.rs b/compiler/rustc_target/src/spec/targets/riscv64_alpine_linux_musl.rs new file mode 100644 index 0000000..3b2e8cc --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/riscv64_alpine_linux_musl.rs @@ -0,0 +1,10 @@ +use crate::spec::Target; + +pub(crate) fn target() -> Target { + let mut base = super::riscv64gc_unknown_linux_musl::target(); + + base.llvm_target = "riscv64-alpine-linux-musl".into(); + base.options.vendor = "alpine".into(); + + base +} diff --git a/compiler/rustc_target/src/spec/targets/s390x_alpine_linux_musl.rs b/compiler/rustc_target/src/spec/targets/s390x_alpine_linux_musl.rs new file mode 100644 index 0000000..acf2876 --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/s390x_alpine_linux_musl.rs @@ -0,0 +1,10 @@ +use crate::spec::Target; + +pub(crate) fn target() -> Target { + let mut base = super::s390x_unknown_linux_musl::target(); + + base.llvm_target = "s390x-alpine-linux-musl".into(); + base.options.vendor = "alpine".into(); + + base +} diff --git a/compiler/rustc_target/src/spec/targets/x86_64_alpine_linux_musl.rs b/compiler/rustc_target/src/spec/targets/x86_64_alpine_linux_musl.rs new file mode 100644 index 0000000..0492ee5 --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/x86_64_alpine_linux_musl.rs @@ -0,0 +1,11 @@ +use crate::spec::Target; + +pub(crate) fn target() -> Target { + let mut base = super::x86_64_unknown_linux_musl::target(); + + base.llvm_target = "x86_64-alpine-linux-musl".into(); + base.options.vendor = "alpine".into(); + base.options.crt_static_default = false; + + base +} -- 2.53.0