Changeset View
Changeset View
Standalone View
Standalone View
lang/rust/Makefile
# Created by: Jyun-Yan You <jyyou@cs.nctu.edu.tw> | # Created by: Jyun-Yan You <jyyou@cs.nctu.edu.tw> | ||||
PORTNAME= rust | PORTNAME= rust | ||||
PORTVERSION?= 1.51.0 | PORTVERSION?= 1.52.1 | ||||
PORTREVISION?= 0 | PORTREVISION?= 0 | ||||
CATEGORIES= lang | CATEGORIES= lang | ||||
MASTER_SITES= https://static.rust-lang.org/dist/:src \ | MASTER_SITES= https://static.rust-lang.org/dist/:src \ | ||||
https://dev-static.rust-lang.org/dist/:src \ | https://dev-static.rust-lang.org/dist/:src \ | ||||
LOCAL/tobik/rust:bootstrap \ | LOCAL/tobik/rust:bootstrap \ | ||||
LOCAL/mikael/rust:bootstrap \ | LOCAL/mikael/rust:bootstrap \ | ||||
https://static.rust-lang.org/dist/:bootstrap | https://static.rust-lang.org/dist/:bootstrap | ||||
DISTNAME?= ${PORTNAME}c-${PORTVERSION}-src | DISTNAME?= ${PORTNAME}c-${PORTVERSION}-src | ||||
DISTFILES?= ${NIGHTLY_DATE:D${NIGHTLY_DATE}/}${DISTNAME}${EXTRACT_SUFX}:src \ | DISTFILES?= ${NIGHTLY_DATE:D${NIGHTLY_DATE}/}${DISTNAME}${EXTRACT_SUFX}:src \ | ||||
${_RUSTC_BOOTSTRAP}${BOOTSTRAPS_SUFFIX}${EXTRACT_SUFX}:bootstrap \ | ${_RUSTC_BOOTSTRAP}${BOOTSTRAPS_SUFFIX}${EXTRACT_SUFX}:bootstrap \ | ||||
${_RUST_STD_BOOTSTRAP}${BOOTSTRAPS_SUFFIX}${EXTRACT_SUFX}:bootstrap \ | ${_RUST_STD_BOOTSTRAP}${BOOTSTRAPS_SUFFIX}${EXTRACT_SUFX}:bootstrap \ | ||||
${_CARGO_BOOTSTRAP}${BOOTSTRAPS_SUFFIX}${EXTRACT_SUFX}:bootstrap | ${_CARGO_BOOTSTRAP}${BOOTSTRAPS_SUFFIX}${EXTRACT_SUFX}:bootstrap | ||||
DIST_SUBDIR?= rust | DIST_SUBDIR?= rust | ||||
MAINTAINER= rust@FreeBSD.org | MAINTAINER= rust@FreeBSD.org | ||||
COMMENT= Language with a focus on memory safety and concurrency | COMMENT= Language with a focus on memory safety and concurrency | ||||
LICENSE= APACHE20 MIT | LICENSE= APACHE20 MIT | ||||
LICENSE_COMB= dual | LICENSE_COMB= dual | ||||
LICENSE_FILE_APACHE20= ${WRKSRC}/LICENSE-APACHE | LICENSE_FILE_APACHE20= ${WRKSRC}/LICENSE-APACHE | ||||
LICENSE_FILE_MIT= ${WRKSRC}/LICENSE-MIT | LICENSE_FILE_MIT= ${WRKSRC}/LICENSE-MIT | ||||
IGNORE_FreeBSD_11_powerpc64= is missing a bootstrap for FreeBSD 11.x powerpc64 | IGNORE_FreeBSD_11_powerpc64= is missing a bootstrap for FreeBSD 11.x powerpc64 | ||||
ONLY_FOR_ARCHS?= aarch64 amd64 armv6 armv7 i386 powerpc64 powerpc64le | IGNORE_FreeBSD_11_powerpc= is missing a bootstrap for FreeBSD 11.x powerpc | ||||
IGNORE_FreeBSD_12_powerpc= is missing a bootstrap for FreeBSD 12.x powerpc | |||||
ONLY_FOR_ARCHS?= aarch64 amd64 armv6 armv7 i386 powerpc64 powerpc64le \ | |||||
powerpc | |||||
ONLY_FOR_ARCHS_REASON?= requires prebuilt bootstrap compiler | ONLY_FOR_ARCHS_REASON?= requires prebuilt bootstrap compiler | ||||
BUILD_DEPENDS= cmake:devel/cmake | BUILD_DEPENDS= cmake:devel/cmake | ||||
LIB_DEPENDS= libcurl.so:ftp/curl | LIB_DEPENDS= libcurl.so:ftp/curl | ||||
USES= ninja:build pkgconfig python:3.6+,build ssl tar:xz | USES= ninja:build pkgconfig python:3.6+,build ssl tar:xz | ||||
MAKE_ENV= DESTDIR=${STAGEDIR} \ | MAKE_ENV= DESTDIR=${STAGEDIR} \ | ||||
Show All 15 Lines | |||||
DOCS_VARS_OFF= _RUST_BUILD_DOCS=false | DOCS_VARS_OFF= _RUST_BUILD_DOCS=false | ||||
GDB_RUN_DEPENDS= ${LOCALBASE}/bin/gdb:devel/gdb | GDB_RUN_DEPENDS= ${LOCALBASE}/bin/gdb:devel/gdb | ||||
SOURCES_VARS= _RUST_TOOLS+=src | SOURCES_VARS= _RUST_TOOLS+=src | ||||
WASM_VARS= _RUST_BUILD_WASM=true \ | WASM_VARS= _RUST_BUILD_WASM=true \ | ||||
_RUST_TARGETS+=wasm32-unknown-unknown | _RUST_TARGETS+=wasm32-unknown-unknown | ||||
WASM_VARS_OFF= _RUST_BUILD_WASM=false | WASM_VARS_OFF= _RUST_BUILD_WASM=false | ||||
# See WRKSRC/src/stage0.txt for the date and version values. | # See WRKSRC/src/stage0.txt for the date and version values. | ||||
BOOTSTRAPS_DATE?= 2021-02-11 | BOOTSTRAPS_DATE?= 2021-03-25 | ||||
RUST_BOOTSTRAP_VERSION?= 1.50.0 | RUST_BOOTSTRAP_VERSION?= 1.51.0 | ||||
BOOTSTRAPS_SUFFIX?= ${BOOTSTRAPS_SUFFIX_${ARCH}} | BOOTSTRAPS_SUFFIX?= ${BOOTSTRAPS_SUFFIX_${ARCH}} | ||||
BOOTSTRAPS_SUFFIX_powerpc64?= -${PPC_ABI:tl} | BOOTSTRAPS_SUFFIX_powerpc64?= -${PPC_ABI:tl} | ||||
CARGO_VENDOR_DIR?= ${WRKSRC}/vendor | CARGO_VENDOR_DIR?= ${WRKSRC}/vendor | ||||
# Rust's target arch string might be different from *BSD arch strings | # Rust's target arch string might be different from *BSD arch strings | ||||
_RUST_ARCH_amd64= x86_64 | _RUST_ARCH_amd64= x86_64 | ||||
_RUST_ARCH_i386= i686 | _RUST_ARCH_i386= i686 | ||||
_RUST_TARGET= ${_RUST_ARCH_${ARCH}:U${ARCH}}-unknown-${OPSYS:tl} | _RUST_TARGET= ${_RUST_ARCH_${ARCH}:U${ARCH}}-unknown-${OPSYS:tl} | ||||
_RUST_TARGETS= ${_RUST_TARGET} | _RUST_TARGETS= ${_RUST_TARGET} | ||||
_RUST_TOOLS= analysis cargo clippy rls rustfmt | _RUST_TOOLS= analysis cargo clippy rustfmt | ||||
_RUSTC_BOOTSTRAP= ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}/rustc-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${_RUST_TARGET} | _RUSTC_BOOTSTRAP= ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}/rustc-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${_RUST_TARGET} | ||||
_RUST_STD_BOOTSTRAP= ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}/rust-std-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${_RUST_TARGET} | _RUST_STD_BOOTSTRAP= ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}/rust-std-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${_RUST_TARGET} | ||||
_CARGO_BOOTSTRAP= ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}/cargo-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${_RUST_TARGET} | _CARGO_BOOTSTRAP= ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}/cargo-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${_RUST_TARGET} | ||||
.include <bsd.port.pre.mk> | .include <bsd.port.pre.mk> | ||||
.if ${ARCH} == powerpc | |||||
# bfd to link rustc_driver; lld currently can't | |||||
BUILD_DEPENDS+= ld.bfd:devel/binutils | |||||
.else | |||||
# rls needs 64-bit atomics | |||||
_RUST_TOOLS+= rls | |||||
.endif | |||||
.if exists(${PATCHDIR}/${ARCH}${BOOTSTRAPS_SUFFIX}) | .if exists(${PATCHDIR}/${ARCH}${BOOTSTRAPS_SUFFIX}) | ||||
EXTRA_PATCHES+= ${PATCHDIR}/${ARCH}${BOOTSTRAPS_SUFFIX} | EXTRA_PATCHES+= ${PATCHDIR}/${ARCH}${BOOTSTRAPS_SUFFIX} | ||||
.endif | .endif | ||||
.if defined(PPC_ABI) && ${PPC_ABI} == ELFv1 | .if defined(PPC_ABI) && ${PPC_ABI} == ELFv1 | ||||
# The bootstrap is hardcoded to use gcc9 | # The bootstrap is hardcoded to use gcc9 | ||||
# but we can build with a newer or older compiler as provided by USE_GCC=yes | # but we can build with a newer or older compiler as provided by USE_GCC=yes | ||||
BUILD_DEPENDS+= gcc9:lang/gcc9 | BUILD_DEPENDS+= gcc9:lang/gcc9 | ||||
USE_GCC= yes | USE_GCC= yes | ||||
STRIP_CMD= ${LOCALBASE}/bin/strip # unsupported e_type with base strip | |||||
.endif | .endif | ||||
# remove when 11.4 is EOL | # remove when 11.4 is EOL | ||||
.if ${ARCH} == aarch64 && ${OSVERSION} < 1202000 | .if ${ARCH} == aarch64 && ${OSVERSION} < 1202000 | ||||
IGNORE= fails to run due to a bug in rtld, update to 12.2-RELEASE or newer | IGNORE= fails to run due to a bug in rtld, update to 12.2-RELEASE or newer | ||||
.endif | .endif | ||||
.ifdef QEMU_EMULATING | .ifdef QEMU_EMULATING | ||||
▲ Show 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | |||||
.else | .else | ||||
@${ECHO_CMD} 'ccache=false' >> ${WRKSRC}/config.toml | @${ECHO_CMD} 'ccache=false' >> ${WRKSRC}/config.toml | ||||
.endif | .endif | ||||
@${ECHO_CMD} 'ninja=true' >> ${WRKSRC}/config.toml | @${ECHO_CMD} 'ninja=true' >> ${WRKSRC}/config.toml | ||||
.if ${ARCH} == armv6 | .if ${ARCH} == armv6 | ||||
# fails to link with base ld.bfd: rustc_codegen_llvm.e2557spx-cgu.11:(.text._ZN89_$LT$rustc_target..abi..call..CastTarget$u20$as$u20$rustc_codegen_llvm..abi..LlvmType$GT$9llvm_type17h1296210ab461fc57E+0x54): relocation truncated to fit: R_ARM_CALL against symbol `__aeabi_uldivmod' defined in .text.__aeabi_uldivmod section in /tmp/rustcdnGbao/libcompiler_builtins-ee65b414e4115a8f.rlib(compiler_builtins-ee65b414e4115a8f.compiler_builtins.ay8p39ey-cgu.13.rcgu.o) | # fails to link with base ld.bfd: rustc_codegen_llvm.e2557spx-cgu.11:(.text._ZN89_$LT$rustc_target..abi..call..CastTarget$u20$as$u20$rustc_codegen_llvm..abi..LlvmType$GT$9llvm_type17h1296210ab461fc57E+0x54): relocation truncated to fit: R_ARM_CALL against symbol `__aeabi_uldivmod' defined in .text.__aeabi_uldivmod section in /tmp/rustcdnGbao/libcompiler_builtins-ee65b414e4115a8f.rlib(compiler_builtins-ee65b414e4115a8f.compiler_builtins.ay8p39ey-cgu.13.rcgu.o) | ||||
@${PRINTF} '#!/bin/sh\nexec ${CC} -fuse-ld=lld "$$@"' > ${WRKDIR}/cc-wrapper | @${PRINTF} '#!/bin/sh\nexec ${CC} -fuse-ld=lld "$$@"' > ${WRKDIR}/cc-wrapper | ||||
@${CHMOD} +x ${WRKDIR}/cc-wrapper | @${CHMOD} +x ${WRKDIR}/cc-wrapper | ||||
.elif ${ARCH} == powerpc | |||||
# Rust doesn't call the system compiler with the full version of the target. | |||||
# This makes powerpc miscompile due to the secure-plt ABI change. | |||||
# Additionally, force using ld.bfd to work around a linking problem in rustc_mir | |||||
@${PRINTF} '#!/bin/sh\nexec ${CC} "$$@" --target=powerpc-unknown-freebsd13.0' > ${WRKDIR}/cc-wrapper | |||||
@${CHMOD} +x ${WRKDIR}/cc-wrapper | |||||
@${PRINTF} '#!/bin/sh\nexec ${CXX} "$$@" --target=powerpc-unknown-freebsd13.0' > ${WRKDIR}/cxx-wrapper | |||||
@${CHMOD} +x ${WRKDIR}/cxx-wrapper | |||||
@${PRINTF} '#!/bin/sh\nexec ${CC} -fuse-ld=bfd "$$@" --target=powerpc-unknown-freebsd13.0' > ${WRKDIR}/ld-wrapper | |||||
@${CHMOD} +x ${WRKDIR}/ld-wrapper | |||||
.endif | .endif | ||||
.for _target in ${_RUST_TARGETS} | .for _target in ${_RUST_TARGETS} | ||||
@${ECHO_CMD} '[target.${_target}]' >> ${WRKSRC}/config.toml | @${ECHO_CMD} '[target.${_target}]' >> ${WRKSRC}/config.toml | ||||
@${ECHO_CMD} 'ar="${AR}"' >> ${WRKSRC}/config.toml | @${ECHO_CMD} 'ar="${AR}"' >> ${WRKSRC}/config.toml | ||||
.if ${ARCH} == powerpc | |||||
@${ECHO_CMD} 'cc="${WRKDIR}/cc-wrapper"' >> ${WRKSRC}/config.toml | |||||
@${ECHO_CMD} 'cxx="${WRKDIR}/cxx-wrapper"' >> ${WRKSRC}/config.toml | |||||
.else | |||||
@${ECHO_CMD} 'cc="${CC}"' >> ${WRKSRC}/config.toml | @${ECHO_CMD} 'cc="${CC}"' >> ${WRKSRC}/config.toml | ||||
@${ECHO_CMD} 'cxx="${CXX}"' >> ${WRKSRC}/config.toml | @${ECHO_CMD} 'cxx="${CXX}"' >> ${WRKSRC}/config.toml | ||||
.endif | |||||
.if ${ARCH} == armv6 | .if ${ARCH} == armv6 | ||||
@${ECHO_CMD} 'linker="${WRKDIR}/cc-wrapper"' >> ${WRKSRC}/config.toml | @${ECHO_CMD} 'linker="${WRKDIR}/cc-wrapper"' >> ${WRKSRC}/config.toml | ||||
.elif ${ARCH} == powerpc | |||||
@${ECHO_CMD} 'linker="${WRKDIR}/ld-wrapper"' >> ${WRKSRC}/config.toml | |||||
.else | .else | ||||
@${ECHO_CMD} 'linker="${CC}"' >> ${WRKSRC}/config.toml | @${ECHO_CMD} 'linker="${CC}"' >> ${WRKSRC}/config.toml | ||||
.endif | .endif | ||||
.endfor | .endfor | ||||
@${ECHO_CMD} '[dist]' >> ${WRKSRC}/config.toml | @${ECHO_CMD} '[dist]' >> ${WRKSRC}/config.toml | ||||
@${ECHO_CMD} 'src-tarball=false' >> ${WRKSRC}/config.toml | @${ECHO_CMD} 'src-tarball=false' >> ${WRKSRC}/config.toml | ||||
.if defined(NIGHTLY_DATE) | .if defined(NIGHTLY_DATE) | ||||
# Don't abort if optional tools fail to build | # Don't abort if optional tools fail to build | ||||
▲ Show 20 Lines • Show All 67 Lines • Show Last 20 Lines |