Page MenuHomeFreeBSD

D20792.id59155.diff
No OneTemporary

D20792.id59155.diff

Index: lang/rust/Makefile
===================================================================
--- lang/rust/Makefile
+++ lang/rust/Makefile
@@ -87,11 +87,16 @@
.include <bsd.port.pre.mk>
-.if ${ARCH} == powerpc64
+# XXX OSVERSION
+.if ${ARCH} == powerpc64 && ${OSVERSION} < 1300036
# The bootstrap is hardcoded to use gcc8
# but we can build with a newer or older compiler as provided by USE_GCC=yes
BUILD_DEPENDS+= gcc8:lang/gcc8
USE_GCC= yes
+EXTRA_PATCHES= ${PATCHDIR}/extra-patch-ppc64-gcc
+RUSTC_BOOTSTRAP= ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}/rustc-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${RUST_TARGET}-elfv1.tar.gz
+RUST_STD_BOOTSTRAP= ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}/rust-std-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${RUST_TARGET}-elfv1.tar.gz
+CARGO_BOOTSTRAP= ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}/cargo-${CARGO_BOOTSTRAP_VERSION_${ARCH}:U${CARGO_BOOTSTRAP_VERSION}}-${RUST_TARGET}-elfv1.tar.gz
.endif
.if ${OPSYS} == FreeBSD && ${ARCH} == aarch64 && \
@@ -142,6 +147,15 @@
@${REINPLACE_CMD} -e \
's/"files":{[^}]*}/"files":{}/' \
${CARGO_VENDOR_DIR}/*/.cargo-checksum.json
+# XXX OSVERSION
+.if ${OSVERSION} > 1300036
+ @${REINPLACE_CMD} -e \
+ 's|Endian::Big => ELFv1|Endian::Big => ELFv2|' \
+ ${WRKSRC}/src/librustc_target/abi/call/powerpc64.rs
+ @${REINPLACE_CMD} -e \
+ 's|powerpc64-unknown-freebsd|powerpc64-unknown-freebsd13.0|' \
+ ${WRKSRC}/src/librustc_target/spec/powerpc64_unknown_freebsd.rs
+.endif
post-patch-SOURCES-off:
# Mimic tools in config.toml with just src excluded
Index: lang/rust/distinfo
===================================================================
--- lang/rust/distinfo
+++ lang/rust/distinfo
@@ -37,3 +37,9 @@
SIZE (rust/2019-05-14/rust-std-1.34.0-powerpc64-unknown-freebsd.tar.gz) = 72555046
SHA256 (rust/2019-05-14/cargo-0.35.0-powerpc64-unknown-freebsd.tar.gz) = fd547c834fd8fba61513e5e4741428dac85b129ae49939fe774b45d3e38a9863
SIZE (rust/2019-05-14/cargo-0.35.0-powerpc64-unknown-freebsd.tar.gz) = 6676349
+SHA256 (rust/2019-05-14/rustc-1.34.0-powerpc64-unknown-freebsd-elfv1.tar.gz) = 3ad25cf511292383d8abf7268330f5d8d0b1d3019bd88c532c67e7898acd754c
+SIZE (rust/2019-05-14/rustc-1.34.0-powerpc64-unknown-freebsd-elfv1.tar.gz) = 69066288
+SHA256 (rust/2019-05-14/rust-std-1.34.0-powerpc64-unknown-freebsd-elfv1.tar.gz) = d14847c3aeb3bc85727b5178bb5b3bbedddec15020c19174d2f08fa97fbe9720
+SIZE (rust/2019-05-14/rust-std-1.34.0-powerpc64-unknown-freebsd-elfv1.tar.gz) = 72555046
+SHA256 (rust/2019-05-14/cargo-0.35.0-powerpc64-unknown-freebsd-elfv1.tar.gz) = fd547c834fd8fba61513e5e4741428dac85b129ae49939fe774b45d3e38a9863
+SIZE (rust/2019-05-14/cargo-0.35.0-powerpc64-unknown-freebsd-elfv1.tar.gz) = 6676349
Index: lang/rust/files/extra-patch-ppc64-gcc
===================================================================
--- lang/rust/files/extra-patch-ppc64-gcc
+++ lang/rust/files/extra-patch-ppc64-gcc
@@ -12,3 +12,17 @@
if let Some(s) = llvm_static_stdcpp {
assert!(!cxxflags.contains("stdlib=libc++"));
let path = PathBuf::from(s);
+
+--- src/bootstrap/native.rs.orig 2019-05-22 05:39:52 UTC
++++ src/bootstrap/native.rs
+@@ -218,6 +210,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 {
Index: lang/rust/files/patch-llvm
===================================================================
--- lang/rust/files/patch-llvm
+++ lang/rust/files/patch-llvm
@@ -0,0 +1,34 @@
+--- src/llvm-project/clang/lib/Basic/Targets/PPC.h 2019-04-02 21:19:15.000000000 +0200
++++ src/llvm-project/clang/lib/Basic/Targets/PPC.h 2019-06-28 09:25:10.796440000 +0200
+@@ -374,6 +374,8 @@ class LLVM_LIBRARY_VISIBILITY PPC64TargetInfo : public
+ case llvm::Triple::FreeBSD:
+ LongDoubleWidth = LongDoubleAlign = 64;
+ LongDoubleFormat = &llvm::APFloat::IEEEdouble();
++ if (Triple.getOSMajorVersion() >= 13)
++ ABI = "elfv2";
+ break;
+ default:
+ break;
+--- src/llvm-project/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp 2019-04-02 21:19:15.000000000 +0200
++++ src/llvm-project/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp 2019-06-28 09:24:21.660383000 +0200
+@@ -195,6 +195,20 @@ static PPCTargetMachine::PPCABI computeTargetABI(const
+ if (TT.isMacOSX())
+ return PPCTargetMachine::PPC_ABI_UNKNOWN;
+
++ if (TT.isOSFreeBSD()) {
++ switch (TT.getArch()) {
++ case Triple::ppc64le:
++ case Triple::ppc64:
++ if (TT.getOSMajorVersion() >= 13)
++ return PPCTargetMachine::PPC_ABI_ELFv2;
++ else
++ return PPCTargetMachine::PPC_ABI_ELFv1;
++ case Triple::ppc:
++ default:
++ return PPCTargetMachine::PPC_ABI_UNKNOWN;
++ }
++ }
++
+ switch (TT.getArch()) {
+ case Triple::ppc64le:
+ return PPCTargetMachine::PPC_ABI_ELFv2;
Index: lang/rust/files/patch-src_bootstrap_native.rs
===================================================================
--- lang/rust/files/patch-src_bootstrap_native.rs
+++ lang/rust/files/patch-src_bootstrap_native.rs
@@ -24,17 +24,6 @@
let _folder = builder.fold_output(|| "llvm");
let descriptor = if emscripten { "Emscripten " } else { "" };
-@@ -218,6 +210,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 {
@@ -283,9 +279,7 @@ impl Step for Llvm {
cfg.build();
Index: lang/rust/files/patch-src_librustc__llvm_build.rs
===================================================================
--- lang/rust/files/patch-src_librustc__llvm_build.rs
+++ lang/rust/files/patch-src_librustc__llvm_build.rs
@@ -1,14 +0,0 @@
---- src/librustc_llvm/build.rs.orig 2019-04-08 12:42:31 UTC
-+++ src/librustc_llvm/build.rs
-@@ -254,7 +254,10 @@ fn main() {
- };
-
- // C++ runtime library
-- if !target.contains("msvc") {
-+ if target == "powerpc64-unknown-freebsd" {
-+ 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);

File Metadata

Mime Type
text/plain
Expires
Sat, Feb 28, 8:33 PM (7 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29081549
Default Alt Text
D20792.id59155.diff (6 KB)

Event Timeline