Gentoo Archives: gentoo-commits

From: Mikhail Pukhlikov <cynede@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/proj/rust:master commit in: dev-lang/rust/, dev-lang/rust/files/
Date: Tue, 05 Nov 2019 06:18:19
Message-Id: 1572934681.76042b79c4b10e7ea1c2a2c7257c7113befdfe80.cynede@gentoo
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"