aboutsummaryrefslogtreecommitdiff
path: root/lang/rust
diff options
context:
space:
mode:
authorPiotr Kubaj <pkubaj@FreeBSD.org>2020-03-17 19:25:19 +0000
committerPiotr Kubaj <pkubaj@FreeBSD.org>2020-03-17 19:25:19 +0000
commit9f2b11f787220f3dcb1e034b3224ce9f6d22cfa1 (patch)
tree5c6067cd217eb20e11ee79e5c7f550fb30fb311c /lang/rust
parent8b63b85e196dd2fcd33eb4c14d1c7a3f1f081651 (diff)
downloadports-9f2b11f787220f3dcb1e034b3224ce9f6d22cfa1.tar.gz
ports-9f2b11f787220f3dcb1e034b3224ce9f6d22cfa1.zip
lang/rust: fix build on powerpc64 elfv2
After upgrade to LLVM 10, core in stage 1 fails to compile (no clear reason, rustc crashes): pid 26828 (rustc), jid 0, uid 0: exited on signal 11 (core dumped) Compilation with GCC works fine, so switch to GCC for the time being. PR: 244813 Approved by: mikael
Notes
Notes: svn path=/head/; revision=528599
Diffstat (limited to 'lang/rust')
-rw-r--r--lang/rust/Makefile2
-rw-r--r--lang/rust/files/powerpc64-elfv2/patch-src_bootstrap_native.rs13
-rw-r--r--lang/rust/files/powerpc64-elfv2/patch-src_librustc__llvm_build.rs18
3 files changed, 32 insertions, 1 deletions
diff --git a/lang/rust/Makefile b/lang/rust/Makefile
index 27554c6eea3b..ab6f13d1ce7a 100644
--- a/lang/rust/Makefile
+++ b/lang/rust/Makefile
@@ -92,7 +92,7 @@ EXTRA_PATCHES+= ${PATCHDIR}/libgit2
EXTRA_PATCHES+= ${PATCHDIR}/${ARCH}${BOOTSTRAPS_SUFFIX}
.endif
-.if ${ARCH} == powerpc64 && ${PPC_ABI} == ELFv1
+.if ${ARCH} == powerpc64
# The bootstrap is hardcoded to use gcc9
# but we can build with a newer or older compiler as provided by USE_GCC=yes
BUILD_DEPENDS+= gcc9:lang/gcc9
diff --git a/lang/rust/files/powerpc64-elfv2/patch-src_bootstrap_native.rs b/lang/rust/files/powerpc64-elfv2/patch-src_bootstrap_native.rs
new file mode 100644
index 000000000000..854b992fcffe
--- /dev/null
+++ b/lang/rust/files/powerpc64-elfv2/patch-src_bootstrap_native.rs
@@ -0,0 +1,13 @@
+--- src/bootstrap/native.rs.orig 2019-11-04 15:45:21 UTC
++++ src/bootstrap/native.rs
+@@ -241,6 +241,10 @@ impl Step for Llvm {
+ }
+ }
+
++ if target == "powerpc64-unknown-freebsd" {
++ cfg.define("CMAKE_EXE_LINKER_FLAGS", "-Wl,-rpath=/usr/local/lib/%CC% -L/usr/local/lib/%CC%");
++ }
++
+ // http://llvm.org/docs/HowToCrossCompileLLVM.html
+ if target != builder.config.build && !emscripten {
+ builder.ensure(Llvm {
diff --git a/lang/rust/files/powerpc64-elfv2/patch-src_librustc__llvm_build.rs b/lang/rust/files/powerpc64-elfv2/patch-src_librustc__llvm_build.rs
new file mode 100644
index 000000000000..7b71799f5eab
--- /dev/null
+++ b/lang/rust/files/powerpc64-elfv2/patch-src_librustc__llvm_build.rs
@@ -0,0 +1,18 @@
+--- src/librustc_llvm/build.rs.orig 2019-12-16 15:38:05 UTC
++++ src/librustc_llvm/build.rs
+@@ -273,7 +273,14 @@ fn main() {
+ };
+
+ // C++ runtime library
+- if !target.contains("msvc") {
++ if target == "powerpc64-unknown-freebsd" {
++ if is_crossed {
++ println!("cargo:rustc-link-search=native=%WRKDIR%/usr/local/lib/%CC%");
++ } else {
++ println!("cargo:rustc-link-search=native=/usr/local/lib/%CC%");
++ }
++ println!("cargo:rustc-link-lib=static=stdc++");
++ } else if !target.contains("msvc") {
+ if let Some(s) = llvm_static_stdcpp {
+ assert!(!cxxflags.contains("stdlib=libc++"));
+ let path = PathBuf::from(s);