Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F146103269
D20792.id59155.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
D20792.id59155.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D20792: lang/rust: add powerpc64 ELFv2 support
Attached
Detach File
Event Timeline
Log In to Comment