Index: lang/rust-bootstrap/Makefile =================================================================== --- lang/rust-bootstrap/Makefile +++ lang/rust-bootstrap/Makefile @@ -6,6 +6,7 @@ MASTER_SITES= https://static.rust-lang.org/dist/:rust \ LOCAL/tobik:armbase \ LOCAL/tobik:base \ + LOCAL/bdragon:ppc64lebase \ https://download.freebsd.org/ftp/${_RUST_FBSD_SUBDIR_${FLAVOR}}/:base \ LOCAL/tobik:powerpc64_gcc # http://pkg.freebsd.org/FreeBSD:12:powerpc64/quarterly/All/gcc9-9.2.0.txz?dummy=/:powerpc64_gcc @@ -29,7 +30,7 @@ gmake:devel/gmake \ rust>=${PORTVERSION}:lang/rust -FLAVORS= aarch64 amd64 armv6 armv7 i386 powerpc64_elfv1 powerpc64_elfv2 +FLAVORS= aarch64 amd64 armv6 armv7 i386 powerpc64_elfv1 powerpc64_elfv2 powerpc64le FLAVOR?= ${FLAVORS:[1]} aarch64_PKGNAMEPREFIX= aarch64- @@ -40,6 +41,7 @@ powerpc64_elfv1_PKGNAMEPREFIX= powerpc64-elfv1- powerpc64_elfv1_BUILD_DEPENDS= powerpc64-gcc9>0:devel/freebsd-gcc9@powerpc64 powerpc64_elfv2_PKGNAMEPREFIX= powerpc64-elfv2- +powerpc64le_PKGNAMEPREFIX= powerpc64le- USES= perl5 python:3.3+,build tar:xz .if ${FLAVOR} == powerpc64_elfv1 @@ -61,21 +63,25 @@ _RUST_FBSD_DIST_powerpc64_elfv1= FreeBSD-${_RUST_FBSD_VER}-powerpc64-elfv1${EXTRACT_SUFX}:base \ FreeBSD-${_RUST_FBSD_VER}-powerpc64-elfv1-gcc9-9.2.0${EXTRACT_SUFX}:powerpc64_gcc _RUST_FBSD_DIST_powerpc64_elfv2= FreeBSD-${_RUST_FBSD_VER}-powerpc64-elfv2-r356261${EXTRACT_SUFX}:base +_RUST_FBSD_DIST_powerpc64le= FreeBSD-${_RUST_FBSD_VER}-powerpc64le-r366300${EXTRACT_SUFX}:ppc64lebase _RUST_FBSD_VER= ${_RUST_FBSD_VER_${FLAVOR}:U11.3-RELEASE} _RUST_FBSD_VER_armv7= 12.1-RELEASE _RUST_FBSD_VER_powerpc64_elfv1= 12.1-RELEASE _RUST_FBSD_VER_powerpc64_elfv2= 13.0-CURRENT +_RUST_FBSD_VER_powerpc64le= 13.0-CURRENT _RUST_FBSD_SUBDIR_aarch64= releases/arm64/${_RUST_FBSD_VER}/base.txz?dummy= _RUST_FBSD_SUBDIR_amd64= releases/amd64/${_RUST_FBSD_VER}/base.txz?dummy= _RUST_FBSD_SUBDIR_i386= releases/i386/${_RUST_FBSD_VER}/base.txz?dummy= _RUST_FBSD_SUBDIR_powerpc64_elfv1= releases/powerpc/powerpc64/${_RUST_FBSD_VER}/base.txz?dummy= _RUST_FBSD_SUBDIR_powerpc64_elfv2= snapshots/powerpc/powerpc64/${_RUST_FBSD_VER}/base.txz?dummy= +_RUST_FBSD_SUBDIR_powerpc64le= snapshots/powerpc/powerpc64le/${_RUST_FBSD_VER}/base.txz?dummy= _CARGO_VENDOR_DIR= ${WRKSRC}/vendor _RUST_ARCH_amd64= x86_64 _RUST_ARCH_i386= i686 _RUST_ARCH_powerpc64_elfv1= powerpc64 _RUST_ARCH_powerpc64_elfv2= powerpc64 +_RUST_ARCH_powerpc64le= powerpc64le _RUST_HOST= ${_RUST_ARCH_${ARCH}:U${ARCH}}-unknown-${OPSYS:tl} _RUST_TARGET= ${_RUST_ARCH_${FLAVOR}:U${FLAVOR}}-unknown-${OPSYS:tl} _RUST_LLVM_TARGET= ${_RUST_LLVM_TARGET_${FLAVOR}} @@ -86,6 +92,7 @@ _RUST_LLVM_TARGET_i386= X86 _RUST_LLVM_TARGET_powerpc64_elfv1= PowerPC _RUST_LLVM_TARGET_powerpc64_elfv2= PowerPC +_RUST_LLVM_TARGET_powerpc64le= PowerPC _RUST_LLVM_TRIPLE= ${_RUST_LLVM_TRIPLE_${FLAVOR}:U${_RUST_TARGET}} _RUST_LLVM_TRIPLE_armv6= armv6-gnueabihf-freebsd _RUST_LLVM_TRIPLE_armv7= armv7-gnueabihf-freebsd Index: lang/rust-bootstrap/distinfo =================================================================== --- lang/rust-bootstrap/distinfo +++ lang/rust-bootstrap/distinfo @@ -17,3 +17,5 @@ SIZE (FreeBSD-12.1-RELEASE-powerpc64-elfv1-gcc9-9.2.0.tar.xz) = 38150240 SHA256 (FreeBSD-13.0-CURRENT-powerpc64-elfv2-r356261.tar.xz) = db762f136e41dd3c6676d6dc104282be6d6d6684afb348506fc44ceccd43ce17 SIZE (FreeBSD-13.0-CURRENT-powerpc64-elfv2-r356261.tar.xz) = 150455928 +SHA256 (FreeBSD-13.0-CURRENT-powerpc64le-r366300.tar.xz) = a828a3a968c9911655148fa080587ecd7673aa3d58588ed3dafa55a5c2e12dd3 +SIZE (FreeBSD-13.0-CURRENT-powerpc64le-r366300.tar.xz) = 167748612 Index: lang/rust/Makefile =================================================================== --- lang/rust/Makefile +++ lang/rust/Makefile @@ -8,6 +8,7 @@ MASTER_SITES= https://static.rust-lang.org/dist/:src \ https://dev-static.rust-lang.org/dist/:src \ LOCAL/tobik/rust:bootstrap \ + LOCAL/bdragon/rust:bootstrap \ https://static.rust-lang.org/dist/:bootstrap DISTNAME?= ${PORTNAME}c-${PORTVERSION}-src DISTFILES?= ${NIGHTLY_DATE:D${NIGHTLY_DATE}/}${DISTNAME}${EXTRACT_SUFX}:src \ @@ -25,7 +26,9 @@ LICENSE_FILE_MIT= ${WRKSRC}/LICENSE-MIT IGNORE_FreeBSD_11_powerpc64= is missing a bootstrap for FreeBSD 11.x powerpc64 -ONLY_FOR_ARCHS?= aarch64 amd64 armv6 armv7 i386 powerpc64 +IGNORE_FreeBSD_11_powerpc64le= is nonsensical due to platform nonexistence + +ONLY_FOR_ARCHS?= aarch64 amd64 armv6 armv7 i386 powerpc64 powerpc64le ONLY_FOR_ARCHS_REASON?= requires prebuilt bootstrap compiler BUILD_DEPENDS= cmake:devel/cmake \ @@ -67,6 +70,11 @@ RUST_BOOTSTRAP_VERSION?= 1.45.2 CARGO_BOOTSTRAP_VERSION?= 0.46.1 +# Temporary out-of-cycle bootstrap for 1.46.0. +# Remove this after the next cycle. +RUST_BOOTSTRAP_VERSION_powerpc64le?= 1.46.0 +CARGO_BOOTSTRAP_VERSION_powerpc64le?= 0.47.0 + BOOTSTRAPS_SUFFIX?= ${BOOTSTRAPS_SUFFIX_${ARCH}} BOOTSTRAPS_SUFFIX_powerpc64?= -${PPC_ABI:tl} Index: lang/rust/distinfo =================================================================== --- lang/rust/distinfo +++ lang/rust/distinfo @@ -43,3 +43,9 @@ SIZE (rust/2020-08-03/rust-std-1.45.2-powerpc64-unknown-freebsd-elfv2.tar.xz) = 12223976 SHA256 (rust/2020-08-03/cargo-0.46.1-powerpc64-unknown-freebsd-elfv2.tar.xz) = afb179eb04eb06f946f875aa243c2f3723ea5bc8a7cd2a027cc33ea97808d87f SIZE (rust/2020-08-03/cargo-0.46.1-powerpc64-unknown-freebsd-elfv2.tar.xz) = 4213368 +SHA256 (rust/2020-08-03/cargo-0.47.0-powerpc64le-unknown-freebsd.tar.xz) = 5391388fce390adaa10bb2ab7de9cbdeda8307ab95a64d53d501ced257f99ff2 +SIZE (rust/2020-08-03/cargo-0.47.0-powerpc64le-unknown-freebsd.tar.xz) = 4493584 +SHA256 (rust/2020-08-03/rust-std-1.46.0-powerpc64le-unknown-freebsd.tar.xz) = aa207e73c88f12d512aaa42c704145eb84ce04e48d027dffb0363965e74a8820 +SIZE (rust/2020-08-03/rust-std-1.46.0-powerpc64le-unknown-freebsd.tar.xz) = 12494160 +SHA256 (rust/2020-08-03/rustc-1.46.0-powerpc64le-unknown-freebsd.tar.xz) = 559ee2c55f3614351ca5618166a3bbe8ebcda7bddf0074c5e2c5917734c1d279 +SIZE (rust/2020-08-03/rustc-1.46.0-powerpc64le-unknown-freebsd.tar.xz) = 33672276 Index: lang/rust/files/powerpc64le/patch-src_librustc__target_spec_mod.rs =================================================================== --- lang/rust/files/powerpc64le/patch-src_librustc__target_spec_mod.rs +++ lang/rust/files/powerpc64le/patch-src_librustc__target_spec_mod.rs @@ -0,0 +1,10 @@ +--- src/librustc_target/spec/mod.rs.orig 2020-09-30 18:06:16.613040000 -0500 ++++ src/librustc_target/spec/mod.rs 2020-09-30 18:06:47.040460000 -0500 +@@ -553,6 +553,7 @@ supported_targets! { + ("armv7-unknown-freebsd", armv7_unknown_freebsd), + ("i686-unknown-freebsd", i686_unknown_freebsd), + ("powerpc64-unknown-freebsd", powerpc64_unknown_freebsd), ++ ("powerpc64le-unknown-freebsd", powerpc64le_unknown_freebsd), + ("x86_64-unknown-freebsd", x86_64_unknown_freebsd), + + ("x86_64-unknown-dragonfly", x86_64_unknown_dragonfly), Index: lang/rust/files/powerpc64le/patch-src_librustc__target_spec_powerpc64le__unknown__freebsd.rs =================================================================== --- lang/rust/files/powerpc64le/patch-src_librustc__target_spec_powerpc64le__unknown__freebsd.rs +++ lang/rust/files/powerpc64le/patch-src_librustc__target_spec_powerpc64le__unknown__freebsd.rs @@ -0,0 +1,25 @@ +--- /dev/null 2020-09-30 18:09:21.093949000 -0500 ++++ src/librustc_target/spec/powerpc64le_unknown_freebsd.rs 2020-09-30 18:08:47.737833000 -0500 +@@ -0,0 +1,22 @@ ++use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::freebsd_base::opts(); ++ base.cpu = "ppc64le".to_string(); ++ base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m64".to_string()); ++ base.max_atomic_width = Some(64); ++ ++ Ok(Target { ++ llvm_target: "powerpc64le-unknown-freebsd".to_string(), ++ target_endian: "little".to_string(), ++ target_pointer_width: "64".to_string(), ++ target_c_int_width: "32".to_string(), ++ data_layout: "e-m:e-i64:64-n32:64".to_string(), ++ arch: "powerpc64".to_string(), ++ target_os: "freebsd".to_string(), ++ target_env: String::new(), ++ target_vendor: "unknown".to_string(), ++ linker_flavor: LinkerFlavor::Gcc, ++ options: TargetOptions { target_mcount: "_mcount".to_string(), ..base }, ++ }) ++} Index: lang/rust/files/powerpc64le/patch-src_llvm-project_clang_lib_Basic_Targets.cpp =================================================================== --- lang/rust/files/powerpc64le/patch-src_llvm-project_clang_lib_Basic_Targets.cpp +++ lang/rust/files/powerpc64le/patch-src_llvm-project_clang_lib_Basic_Targets.cpp @@ -0,0 +1,11 @@ +--- src/llvm-project/clang/lib/Basic/Targets.cpp.orig 2020-07-07 01:39:17.000000000 -0500 ++++ src/llvm-project/clang/lib/Basic/Targets.cpp 2020-09-30 18:13:54.521751000 -0500 +@@ -352,6 +352,8 @@ TargetInfo *AllocateTarget(const llvm::Triple &Triple, + switch (os) { + case llvm::Triple::Linux: + return new LinuxTargetInfo(Triple, Opts); ++ case llvm::Triple::FreeBSD: ++ return new FreeBSDTargetInfo(Triple, Opts); + case llvm::Triple::NetBSD: + return new NetBSDTargetInfo(Triple, Opts); + default: Index: lang/rust/files/powerpc64le/patch-vendor_openssl-src_src_lib.rs =================================================================== --- lang/rust/files/powerpc64le/patch-vendor_openssl-src_src_lib.rs +++ lang/rust/files/powerpc64le/patch-vendor_openssl-src_src_lib.rs @@ -0,0 +1,10 @@ +--- vendor/openssl-src/src/lib.rs.orig 2020-09-30 18:01:13.855023000 -0500 ++++ vendor/openssl-src/src/lib.rs 2020-09-30 18:02:06.365292000 -0500 +@@ -173,6 +173,7 @@ impl Build { + "powerpc-unknown-linux-gnu" => "linux-ppc", + "powerpc64-unknown-freebsd" => "BSD-generic64", + "powerpc64-unknown-linux-gnu" => "linux-ppc64", ++ "powerpc64le-unknown-freebsd" => "BSD-generic64", + "powerpc64le-unknown-linux-gnu" => "linux-ppc64le", + "riscv64gc-unknown-linux-gnu" => "linux-generic64", + "s390x-unknown-linux-gnu" => "linux64-s390x",