From 2a651859050ef1826fd1dd15e2bb272a67c03438 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Mon, 17 Sep 2018 02:29:06 +0000 Subject: [PATCH 28/29] 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 186ef75189..9122eeb785 100644 --- a/src/bootstrap/native.rs +++ b/src/bootstrap/native.rs @@ -652,6 +652,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); @@ -666,7 +672,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" { @@ -681,7 +687,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 or the MIT license +// , 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 or the MIT license +// , 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 or the MIT license +// , 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 94aa07abb6..1187afbb60 100644 --- a/src/librustc_target/spec/mod.rs +++ b/src/librustc_target/spec/mod.rs @@ -375,6 +375,13 @@ supported_targets! { ("armv7-unknown-cloudabi-eabihf", armv7_unknown_cloudabi_eabihf), ("i686-unknown-cloudabi", i686_unknown_cloudabi), ("x86_64-unknown-cloudabi", x86_64_unknown_cloudabi), + + ("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 or the MIT license +// , 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 or the MIT license +// , 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 or the MIT license +// , 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