From 0a6fb2cbb5ca1a9a07bcd426e0ec81975fe16682 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 17 Sep 2018 02:29:06 +0000
Subject: [PATCH 24/24] Add foxkit target specs
---
src/bootstrap/native.rs | 10 ++++++--
.../spec/aarch64_foxkit_linux_musl.rs | 21 +++++++++++++++++
.../spec/armv7_foxkit_linux_musleabihf.rs | 21 +++++++++++++++++
.../spec/i586_foxkit_linux_musl.rs | 23 +++++++++++++++++++
src/librustc_target/spec/mod.rs | 7 ++++++
.../spec/powerpc64_foxkit_linux_musl.rs | 21 +++++++++++++++++
.../spec/powerpc_foxkit_linux_musl.rs | 23 +++++++++++++++++++
.../spec/x86_64_foxkit_linux_musl.rs | 21 +++++++++++++++++
8 files changed, 145 insertions(+), 2 deletions(-)
create mode 100644 src/librustc_target/spec/aarch64_foxkit_linux_musl.rs
create mode 100644 src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs
create mode 100644 src/librustc_target/spec/i586_foxkit_linux_musl.rs
create mode 100644 src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs
create mode 100644 src/librustc_target/spec/powerpc_foxkit_linux_musl.rs
create mode 100644 src/librustc_target/spec/x86_64_foxkit_linux_musl.rs
diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs
index a0329910be..f1ee4ed882 100644
--- a/src/bootstrap/native.rs
+++ b/src/bootstrap/native.rs
@@ -685,6 +685,12 @@ impl Step for Openssl {
"x86_64-unknown-linux-gnux32" => "linux-x32",
"x86_64-unknown-linux-musl" => "linux-x86_64",
"x86_64-unknown-netbsd" => "BSD-x86_64",
+ "aarch64-foxkit-linux-musl" => "linux-aarch64",
+ "armv7-foxkit-linux-musleabihf" => "linux-armv4",
+ "i586-foxkit-linux-musl" => "linux-elf",
+ "powerpc-foxkit-linux-musl" => "linux-ppc",
+ "powerpc64-foxkit-linux-musl" => "linux-ppc64",
+ "x86_64-foxkit-linux-musl" => "linux-x86_64",
_ => panic!("don't know how to configure OpenSSL for {}", target),
};
configure.arg(os);
@@ -699,7 +705,7 @@ impl Step for Openssl {
configure.arg("-fomit-frame-pointer");
}
// OpenSSL ships incompatible ELFv1 ABI assembly code
- if target == "powerpc64-unknown-linux-musl" {
+ if target == "powerpc64-unknown-linux-musl" || target == "powerpc64-foxkit-linux-musl" {
configure.arg("no-asm");
}
if target == "sparc64-unknown-netbsd" {
@@ -714,7 +720,7 @@ impl Step for Openssl {
// Make PIE binaries
// Non-PIE linker support was removed in Lollipop
// https://source.android.com/security/enhancements/enhancements50
- if target == "i686-linux-android" {
+ if target == "i686-linux-android" || target == "i586-foxkit-linux-musl" {
configure.arg("no-asm");
}
configure.current_dir(&obj);
diff --git a/src/librustc_target/spec/aarch64_foxkit_linux_musl.rs b/src/librustc_target/spec/aarch64_foxkit_linux_musl.rs
new file mode 100644
index 0000000000..18ad2c2f31
--- /dev/null
+++ b/src/librustc_target/spec/aarch64_foxkit_linux_musl.rs
@@ -0,0 +1,21 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use spec::TargetResult;
+
+pub fn target() -> TargetResult {
+ let mut base = super::aarch64_unknown_linux_musl::target()?;
+
+ base.llvm_target = "aarch64-foxkit-linux-musl".to_string();
+ base.target_vendor = "foxkit".to_string();
+ base.options.crt_static_default = false;
+
+ Ok(base)
+}
diff --git a/src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs b/src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs
new file mode 100644
index 0000000000..facfd5d363
--- /dev/null
+++ b/src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs
@@ -0,0 +1,21 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use spec::TargetResult;
+
+pub fn target() -> TargetResult {
+ let mut base = super::armv7_unknown_linux_musleabihf::target()?;
+
+ base.llvm_target = "armv7-foxkit-linux-musleabihf".to_string();
+ base.target_vendor = "foxkit".to_string();
+ base.options.crt_static_default = false;
+
+ Ok(base)
+}
diff --git a/src/librustc_target/spec/i586_foxkit_linux_musl.rs b/src/librustc_target/spec/i586_foxkit_linux_musl.rs
new file mode 100644
index 0000000000..e0284d96e6
--- /dev/null
+++ b/src/librustc_target/spec/i586_foxkit_linux_musl.rs
@@ -0,0 +1,23 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use spec::{LinkerFlavor, TargetResult};
+
+pub fn target() -> TargetResult {
+ let mut base = super::i586_unknown_linux_musl::target()?;
+
+ base.llvm_target = "i586-foxkit-linux-musl".to_string();
+ base.target_vendor = "foxkit".to_string();
+ base.options.crt_static_default = false;
+ base.options.post_link_args.insert(LinkerFlavor::Gcc,
+ vec!["-Wl,--as-needed".to_string(), "-lssp_nonshared".to_string()]);
+
+ Ok(base)
+}
diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs
index 9ee761fd51..0ee10e3d33 100644
--- a/src/librustc_target/spec/mod.rs
+++ b/src/librustc_target/spec/mod.rs
@@ -414,6 +414,13 @@ supported_targets! {
("riscv32imac-unknown-none-elf", riscv32imac_unknown_none_elf),
("aarch64-unknown-none", aarch64_unknown_none),
+
+ ("aarch64-foxkit-linux-musl", aarch64_foxkit_linux_musl),
+ ("armv7-foxkit-linux-musleabihf", armv7_foxkit_linux_musleabihf),
+ ("i586-foxkit-linux-musl", i586_foxkit_linux_musl),
+ ("powerpc-foxkit-linux-musl", powerpc_foxkit_linux_musl),
+ ("powerpc64-foxkit-linux-musl", powerpc64_foxkit_linux_musl),
+ ("x86_64-foxkit-linux-musl", x86_64_foxkit_linux_musl),
}
/// Everything `rustc` knows about how to compile for a specific target.
diff --git a/src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs b/src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs
new file mode 100644
index 0000000000..b7202ee0fc
--- /dev/null
+++ b/src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs
@@ -0,0 +1,21 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use spec::TargetResult;
+
+pub fn target() -> TargetResult {
+ let mut base = super::powerpc64_unknown_linux_musl::target()?;
+
+ base.llvm_target = "powerpc64-foxkit-linux-musl".to_string();
+ base.target_vendor = "foxkit".to_string();
+ base.options.crt_static_default = false;
+
+ Ok(base)
+}
diff --git a/src/librustc_target/spec/powerpc_foxkit_linux_musl.rs b/src/librustc_target/spec/powerpc_foxkit_linux_musl.rs
new file mode 100644
index 0000000000..34246a7e28
--- /dev/null
+++ b/src/librustc_target/spec/powerpc_foxkit_linux_musl.rs
@@ -0,0 +1,23 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use spec::{LinkerFlavor, TargetResult};
+
+pub fn target() -> TargetResult {
+ let mut base = super::powerpc_unknown_linux_musl::target()?;
+
+ base.llvm_target = "powerpc-foxkit-linux-musl".to_string();
+ base.target_vendor = "foxkit".to_string();
+ base.options.crt_static_default = false;
+ base.options.post_link_args.insert(LinkerFlavor::Gcc,
+ vec!["-Wl,--as-needed".to_string(), "-lssp_nonshared".to_string()]);
+
+ Ok(base)
+}
diff --git a/src/librustc_target/spec/x86_64_foxkit_linux_musl.rs b/src/librustc_target/spec/x86_64_foxkit_linux_musl.rs
new file mode 100644
index 0000000000..801dd8d6f4
--- /dev/null
+++ b/src/librustc_target/spec/x86_64_foxkit_linux_musl.rs
@@ -0,0 +1,21 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use spec::TargetResult;
+
+pub fn target() -> TargetResult {
+ let mut base = super::x86_64_unknown_linux_musl::target()?;
+
+ base.llvm_target = "x86_64-foxkit-linux-musl".to_string();
+ base.target_vendor = "foxkit".to_string();
+ base.options.crt_static_default = false;
+
+ Ok(base)
+}
--
2.18.0