commit: 76042b79c4b10e7ea1c2a2c7257c7113befdfe80 Author: stefson <herrtimson <AT> yahoo <DOT> de> AuthorDate: Tue Nov 5 06:05:17 2019 +0000 Commit: Mikhail Pukhlikov <cynede <AT> gentoo <DOT> org> CommitDate: Tue Nov 5 06:18:01 2019 +0000 URL: https://gitweb.gentoo.org/repo/proj/rust.git/commit/?id=76042b79
dev-lang/rust: add thumbv7neon-unknown-linux-musleabihf target there's an additional rust-std for armv7 when there's neon and thumbv2 optimizations available. glibc based toolchain has it for a longer time now, and firefox does claim it when configured with --enbable-neon It's needed on top of the actuall armv7*-unknown-linux-musleabihf std lib, so it is not a replacement. Signed-off-by: Steffen Kuhn <nielson2 <AT> yandex.com> Closes: https://github.com/gentoo/gentoo-rust/pull/461 Signed-off-by: Mikhail Pukhlikov <cynede <AT> gentoo.org> dev-lang/rust/files/pr66103.patch | 69 +++++++++++++++++++++++++++++++++++++++ dev-lang/rust/rust-999.ebuild | 3 ++ dev-lang/rust/rust-9999.ebuild | 3 ++ 3 files changed, 75 insertions(+) diff --git a/dev-lang/rust/files/pr66103.patch b/dev-lang/rust/files/pr66103.patch new file mode 100644 index 0000000..d418043 --- /dev/null +++ b/dev-lang/rust/files/pr66103.patch @@ -0,0 +1,69 @@ +From d01ebbb34b3f64099174c404b46f1f660bebbb6f Mon Sep 17 00:00:00 2001 +From: Samuel Holland <sam...@sholland.org> +Date: Mon, 4 Nov 2019 21:48:22 -0600 +Subject: [PATCH] Add target thumbv7neon-unknown-linux-musleabihf + +This is a copy of thumbv7neon-unknown-linux-gnueabihf with musl changes +merged from armv7-unknown-linux-musleabihf. +--- + src/librustc_target/spec/mod.rs | 1 + + .../thumbv7neon_unknown_linux_musleabihf.rs | 37 +++++++++++++++++++ + 2 files changed, 38 insertions(+) + create mode 100644 src/librustc_target/spec/thumbv7neon_unknown_linux_musleabihf.rs + +diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs +index 6033d52c4411..baab7b4ca8eb 100644 +--- a/src/librustc_target/spec/mod.rs ++++ b/src/librustc_target/spec/mod.rs +@@ -362,6 +362,7 @@ supported_targets! { + ("armv7-unknown-linux-gnueabi", armv7_unknown_linux_gnueabi), + ("armv7-unknown-linux-gnueabihf", armv7_unknown_linux_gnueabihf), + ("thumbv7neon-unknown-linux-gnueabihf", thumbv7neon_unknown_linux_gnueabihf), ++ ("thumbv7neon-unknown-linux-musleabihf", thumbv7neon_unknown_linux_musleabihf), + ("armv7-unknown-linux-musleabi", armv7_unknown_linux_musleabi), + ("armv7-unknown-linux-musleabihf", armv7_unknown_linux_musleabihf), + ("aarch64-unknown-linux-gnu", aarch64_unknown_linux_gnu), +diff --git a/src/librustc_target/spec/thumbv7neon_unknown_linux_musleabihf.rs b/src/librustc_target/spec/thumbv7neon_unknown_linux_musleabihf.rs +new file mode 100644 +index 000000000000..1270f391731b +--- /dev/null ++++ b/src/librustc_target/spec/thumbv7neon_unknown_linux_musleabihf.rs +@@ -0,0 +1,37 @@ ++use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; ++ ++// This target is for musl Linux on ARMv7 with thumb mode enabled ++// (for consistency with Android and Debian-based distributions) ++// and with NEON unconditionally enabled and, therefore, with 32 FPU ++// registers enabled as well. See section A2.6.2 on page A2-56 in ++// https://static.docs.arm.com/ddi0406/cd/DDI0406C_d_armv7ar_arm.pdf ++ ++pub fn target() -> TargetResult { ++ let base = super::linux_musl_base::opts(); ++ Ok(Target { ++ // It's important we use "gnueabihf" and not "musleabihf" here. LLVM ++ // uses it to determine the calling convention and float ABI, and LLVM ++ // doesn't support the "musleabihf" value. ++ llvm_target: "armv7-unknown-linux-gnueabihf".to_string(), ++ target_endian: "little".to_string(), ++ target_pointer_width: "32".to_string(), ++ target_c_int_width: "32".to_string(), ++ data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(), ++ arch: "arm".to_string(), ++ target_os: "linux".to_string(), ++ target_env: "musl".to_string(), ++ target_vendor: "unknown".to_string(), ++ linker_flavor: LinkerFlavor::Gcc, ++ ++ // Most of these settings are copied from the thumbv7neon_unknown_linux_gnueabihf ++ // target. ++ options: TargetOptions { ++ features: "+v7,+thumb-mode,+thumb2,+vfp3,+neon".to_string(), ++ cpu: "generic".to_string(), ++ max_atomic_width: Some(64), ++ abi_blacklist: super::arm_base::abi_blacklist(), ++ target_mcount: "\u{1}mcount".to_string(), ++ .. base ++ } ++ }) ++} + diff --git a/dev-lang/rust/rust-999.ebuild b/dev-lang/rust/rust-999.ebuild index 0430773..cac209e 100644 --- a/dev-lang/rust/rust-999.ebuild +++ b/dev-lang/rust/rust-999.ebuild @@ -93,6 +93,9 @@ PATCHES=( # upstream issue: https://github.com/rust-lang/rust/issues/65757 "${FILESDIR}"/pr65932.patch + + # this adds a thumbv7neon-musl target for neon support on musl with armv7 + "${FILESDIR}"/pr66103.patch ) S="${WORKDIR}/${MY_P}-src" diff --git a/dev-lang/rust/rust-9999.ebuild b/dev-lang/rust/rust-9999.ebuild index 6b601e8..d59eba9 100644 --- a/dev-lang/rust/rust-9999.ebuild +++ b/dev-lang/rust/rust-9999.ebuild @@ -89,6 +89,9 @@ REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) PATCHES=( # upstream issue: https://github.com/rust-lang/rust/issues/65757 "${FILESDIR}"/pr65932.patch + + # this adds a thumbv7neon-musl target for neon support on musl with armv7 + "${FILESDIR}"/pr66103.patch ) S="${WORKDIR}/${MY_P}-src"