From 8b8028591efa789855b27bac0aa9a8fb03c823ac Mon Sep 17 00:00:00 2001 From: stefson Date: Sat, 27 Jul 2019 14:43:27 +0200 Subject: [PATCH 1/5] dev-lang/rust: add thumbv7neon-unknown-linux-gnueabihf target Signed-off-by: Steffen Kuhn --- dev-lang/rust/rust-1.36.0.ebuild | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/dev-lang/rust/rust-1.36.0.ebuild b/dev-lang/rust/rust-1.36.0.ebuild index 82dfe0bbb425..90e848ca09dd 100644 --- a/dev-lang/rust/rust-1.36.0.ebuild +++ b/dev-lang/rust/rust-1.36.0.ebuild @@ -36,7 +36,7 @@ LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/?} LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA" -IUSE="clippy cpu_flags_x86_sse2 debug doc libressl rls rustfmt system-llvm wasm ${ALL_LLVM_TARGETS[*]}" +IUSE="clippy cpu_flags_x86_sse2 debug doc libressl rls rustfmt system-llvm thumbv7neon wasm ${ALL_LLVM_TARGETS[*]}" # Please keep the LLVM dependency block separate. Since LLVM is slotted, # we need to *really* make sure we're not pulling one than more slot @@ -140,6 +140,11 @@ src_configure() { if use wasm; then rust_targets="${rust_targets},\"wasm32-unknown-unknown\"" fi + + if use thumbv7neon; then + rust_targets="${rust_targets},\"thumbv7neon-unknown-linux-gnueabihf\"" + fi + rust_targets="${rust_targets#,}" local extended="true" tools="\"cargo\"," @@ -222,6 +227,16 @@ src_configure() { linker = "$(usex system-llvm lld rust-lld)" EOF fi + + if use thumbv7neon; then + cat <<- EOF >> "${S}"/config.toml + [target.thumbv7neon-unknown-linux-gnueabihf] + cc = "$(tc-getBUILD_CC)" + cxx = "$(tc-getBUILD_CXX)" + linker = "$(tc-getCC)" + ar = "$(tc-getAR)" + EOF + fi } src_compile() { From 017c2e74bf2fe12098a732d9ed8a5f54d1a654c5 Mon Sep 17 00:00:00 2001 From: stefson Date: Sat, 27 Jul 2019 14:46:00 +0200 Subject: [PATCH 2/5] dev-lang/rust: add metadata entry for thumbv7neon --- dev-lang/rust/metadata.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-lang/rust/metadata.xml b/dev-lang/rust/metadata.xml index 7a1b62bcd0fc..9b8525def556 100644 --- a/dev-lang/rust/metadata.xml +++ b/dev-lang/rust/metadata.xml @@ -10,6 +10,7 @@ Use the system LLVM install Install rls component Install rustfmt component + Build support for the thumbv7-neon target Build support for the wasm32-unknown-unknown target From 324459f0d8e5c025123a5a6548627e78248170dc Mon Sep 17 00:00:00 2001 From: stefson Date: Sat, 27 Jul 2019 14:47:47 +0200 Subject: [PATCH 3/5] profiles: mask thumbv7neon for all arches Signed-off-by: Steffen Kuhn --- profiles/arch/base/package.use.mask | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/profiles/arch/base/package.use.mask b/profiles/arch/base/package.use.mask index 2215c435345f..f7de97bde9bd 100644 --- a/profiles/arch/base/package.use.mask +++ b/profiles/arch/base/package.use.mask @@ -1,6 +1,10 @@ # Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 +# Steffen Kuhn (17 May 2019) +# thumbv7neon can only be built for armv7 +dev-lang/rust thumbv7neon + # Craig Andrews (2019-07-03) # Raspberry Pi support is only available on arm. # Mask raspberry-pi USE globally, unmask on arm. From c697cb25279d2bbe85d7e15a249e3bd43657d469 Mon Sep 17 00:00:00 2001 From: stefson Date: Sat, 27 Jul 2019 14:49:04 +0200 Subject: [PATCH 4/5] profiles: unmask thumbv7neon for armv7a only Closes: https://bugs.gentoo.org/684896 Signed-off-by: Steffen Kuhn --- profiles/arch/arm/armv7a/use.mask | 2 ++ 1 file changed, 2 insertions(+) diff --git a/profiles/arch/arm/armv7a/use.mask b/profiles/arch/arm/armv7a/use.mask index 943381017df6..d513c67aff87 100644 --- a/profiles/arch/arm/armv7a/use.mask +++ b/profiles/arch/arm/armv7a/use.mask @@ -5,6 +5,8 @@ -armv6 -armv6t2 +-thumbv7neon + -cpu_flags_arm_v4 -cpu_flags_arm_v5 -cpu_flags_arm_v6 From a3c563175494535ae5188ab3fa8ef71be999925d Mon Sep 17 00:00:00 2001 From: stefson Date: Sat, 27 Jul 2019 15:00:28 +0200 Subject: [PATCH 5/5] dev-lang/rust: make thumbv7-neon conflict with softfloat Signed-off-by: Steffen Kuhn --- dev-lang/rust/rust-1.36.0.ebuild | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dev-lang/rust/rust-1.36.0.ebuild b/dev-lang/rust/rust-1.36.0.ebuild index 90e848ca09dd..23c5a140a907 100644 --- a/dev-lang/rust/rust-1.36.0.ebuild +++ b/dev-lang/rust/rust-1.36.0.ebuild @@ -112,6 +112,12 @@ pre_build_checks() { pkg_pretend() { pre_build_checks + + use arm && use thumbv7neon && if [[ "$(tc-is-softfloat)" != "no" ]]; then + die "Neon support requires hardfloat system." + else # don't do anything + :; + fi } pkg_setup() {