1 |
commit: 76042b79c4b10e7ea1c2a2c7257c7113befdfe80 |
2 |
Author: stefson <herrtimson <AT> yahoo <DOT> de> |
3 |
AuthorDate: Tue Nov 5 06:05:17 2019 +0000 |
4 |
Commit: Mikhail Pukhlikov <cynede <AT> gentoo <DOT> org> |
5 |
CommitDate: Tue Nov 5 06:18:01 2019 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/proj/rust.git/commit/?id=76042b79 |
7 |
|
8 |
dev-lang/rust: add thumbv7neon-unknown-linux-musleabihf target |
9 |
|
10 |
there's an additional rust-std for armv7 when there's neon and thumbv2 |
11 |
optimizations available. glibc based toolchain has it for a longer time |
12 |
now, and firefox does claim it when configured with --enbable-neon |
13 |
|
14 |
It's needed on top of the actuall armv7*-unknown-linux-musleabihf std lib, |
15 |
so it is not a replacement. |
16 |
|
17 |
Signed-off-by: Steffen Kuhn <nielson2 <AT> yandex.com> |
18 |
Closes: https://github.com/gentoo/gentoo-rust/pull/461 |
19 |
Signed-off-by: Mikhail Pukhlikov <cynede <AT> gentoo.org> |
20 |
|
21 |
dev-lang/rust/files/pr66103.patch | 69 +++++++++++++++++++++++++++++++++++++++ |
22 |
dev-lang/rust/rust-999.ebuild | 3 ++ |
23 |
dev-lang/rust/rust-9999.ebuild | 3 ++ |
24 |
3 files changed, 75 insertions(+) |
25 |
|
26 |
diff --git a/dev-lang/rust/files/pr66103.patch b/dev-lang/rust/files/pr66103.patch |
27 |
new file mode 100644 |
28 |
index 0000000..d418043 |
29 |
--- /dev/null |
30 |
+++ b/dev-lang/rust/files/pr66103.patch |
31 |
@@ -0,0 +1,69 @@ |
32 |
+From d01ebbb34b3f64099174c404b46f1f660bebbb6f Mon Sep 17 00:00:00 2001 |
33 |
+From: Samuel Holland <samuel@××××××××.org> |
34 |
+Date: Mon, 4 Nov 2019 21:48:22 -0600 |
35 |
+Subject: [PATCH] Add target thumbv7neon-unknown-linux-musleabihf |
36 |
+ |
37 |
+This is a copy of thumbv7neon-unknown-linux-gnueabihf with musl changes |
38 |
+merged from armv7-unknown-linux-musleabihf. |
39 |
+--- |
40 |
+ src/librustc_target/spec/mod.rs | 1 + |
41 |
+ .../thumbv7neon_unknown_linux_musleabihf.rs | 37 +++++++++++++++++++ |
42 |
+ 2 files changed, 38 insertions(+) |
43 |
+ create mode 100644 src/librustc_target/spec/thumbv7neon_unknown_linux_musleabihf.rs |
44 |
+ |
45 |
+diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs |
46 |
+index 6033d52c4411..baab7b4ca8eb 100644 |
47 |
+--- a/src/librustc_target/spec/mod.rs |
48 |
++++ b/src/librustc_target/spec/mod.rs |
49 |
+@@ -362,6 +362,7 @@ supported_targets! { |
50 |
+ ("armv7-unknown-linux-gnueabi", armv7_unknown_linux_gnueabi), |
51 |
+ ("armv7-unknown-linux-gnueabihf", armv7_unknown_linux_gnueabihf), |
52 |
+ ("thumbv7neon-unknown-linux-gnueabihf", thumbv7neon_unknown_linux_gnueabihf), |
53 |
++ ("thumbv7neon-unknown-linux-musleabihf", thumbv7neon_unknown_linux_musleabihf), |
54 |
+ ("armv7-unknown-linux-musleabi", armv7_unknown_linux_musleabi), |
55 |
+ ("armv7-unknown-linux-musleabihf", armv7_unknown_linux_musleabihf), |
56 |
+ ("aarch64-unknown-linux-gnu", aarch64_unknown_linux_gnu), |
57 |
+diff --git a/src/librustc_target/spec/thumbv7neon_unknown_linux_musleabihf.rs b/src/librustc_target/spec/thumbv7neon_unknown_linux_musleabihf.rs |
58 |
+new file mode 100644 |
59 |
+index 000000000000..1270f391731b |
60 |
+--- /dev/null |
61 |
++++ b/src/librustc_target/spec/thumbv7neon_unknown_linux_musleabihf.rs |
62 |
+@@ -0,0 +1,37 @@ |
63 |
++use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; |
64 |
++ |
65 |
++// This target is for musl Linux on ARMv7 with thumb mode enabled |
66 |
++// (for consistency with Android and Debian-based distributions) |
67 |
++// and with NEON unconditionally enabled and, therefore, with 32 FPU |
68 |
++// registers enabled as well. See section A2.6.2 on page A2-56 in |
69 |
++// https://static.docs.arm.com/ddi0406/cd/DDI0406C_d_armv7ar_arm.pdf |
70 |
++ |
71 |
++pub fn target() -> TargetResult { |
72 |
++ let base = super::linux_musl_base::opts(); |
73 |
++ Ok(Target { |
74 |
++ // It's important we use "gnueabihf" and not "musleabihf" here. LLVM |
75 |
++ // uses it to determine the calling convention and float ABI, and LLVM |
76 |
++ // doesn't support the "musleabihf" value. |
77 |
++ llvm_target: "armv7-unknown-linux-gnueabihf".to_string(), |
78 |
++ target_endian: "little".to_string(), |
79 |
++ target_pointer_width: "32".to_string(), |
80 |
++ target_c_int_width: "32".to_string(), |
81 |
++ data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(), |
82 |
++ arch: "arm".to_string(), |
83 |
++ target_os: "linux".to_string(), |
84 |
++ target_env: "musl".to_string(), |
85 |
++ target_vendor: "unknown".to_string(), |
86 |
++ linker_flavor: LinkerFlavor::Gcc, |
87 |
++ |
88 |
++ // Most of these settings are copied from the thumbv7neon_unknown_linux_gnueabihf |
89 |
++ // target. |
90 |
++ options: TargetOptions { |
91 |
++ features: "+v7,+thumb-mode,+thumb2,+vfp3,+neon".to_string(), |
92 |
++ cpu: "generic".to_string(), |
93 |
++ max_atomic_width: Some(64), |
94 |
++ abi_blacklist: super::arm_base::abi_blacklist(), |
95 |
++ target_mcount: "\u{1}mcount".to_string(), |
96 |
++ .. base |
97 |
++ } |
98 |
++ }) |
99 |
++} |
100 |
+ |
101 |
|
102 |
diff --git a/dev-lang/rust/rust-999.ebuild b/dev-lang/rust/rust-999.ebuild |
103 |
index 0430773..cac209e 100644 |
104 |
--- a/dev-lang/rust/rust-999.ebuild |
105 |
+++ b/dev-lang/rust/rust-999.ebuild |
106 |
@@ -93,6 +93,9 @@ PATCHES=( |
107 |
|
108 |
# upstream issue: https://github.com/rust-lang/rust/issues/65757 |
109 |
"${FILESDIR}"/pr65932.patch |
110 |
+ |
111 |
+ # this adds a thumbv7neon-musl target for neon support on musl with armv7 |
112 |
+ "${FILESDIR}"/pr66103.patch |
113 |
) |
114 |
|
115 |
S="${WORKDIR}/${MY_P}-src" |
116 |
|
117 |
diff --git a/dev-lang/rust/rust-9999.ebuild b/dev-lang/rust/rust-9999.ebuild |
118 |
index 6b601e8..d59eba9 100644 |
119 |
--- a/dev-lang/rust/rust-9999.ebuild |
120 |
+++ b/dev-lang/rust/rust-9999.ebuild |
121 |
@@ -89,6 +89,9 @@ REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) |
122 |
PATCHES=( |
123 |
# upstream issue: https://github.com/rust-lang/rust/issues/65757 |
124 |
"${FILESDIR}"/pr65932.patch |
125 |
+ |
126 |
+ # this adds a thumbv7neon-musl target for neon support on musl with armv7 |
127 |
+ "${FILESDIR}"/pr66103.patch |
128 |
) |
129 |
|
130 |
S="${WORKDIR}/${MY_P}-src" |