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);