Changeset View
Changeset View
Standalone View
Standalone View
head/lang/rust/Makefile
# Created by: Jyun-Yan You <jyyou@cs.nctu.edu.tw> | # Created by: Jyun-Yan You <jyyou@cs.nctu.edu.tw> | ||||
# $FreeBSD$ | # $FreeBSD$ | ||||
PORTNAME= rust | PORTNAME= rust | ||||
PORTVERSION?= 1.18.0 | PORTVERSION?= 1.18.0 | ||||
CATEGORIES= lang | CATEGORIES= lang | ||||
MASTER_SITES= http://static.rust-lang.org/dist/:src \ | MASTER_SITES= http://static.rust-lang.org/dist/:src \ | ||||
https://static.rust-lang.org/dist/:rust_bootstrap \ | https://static.rust-lang.org/dist/:rust_bootstrap \ | ||||
LOCAL/dumbbell/rust:rust_bootstrap \ | |||||
https://static.rust-lang.org/dist/:cargo_bootstrap \ | https://static.rust-lang.org/dist/:cargo_bootstrap \ | ||||
https://s3.amazonaws.com/rust-lang-ci/cargo-builds/:cargo_bootstrap \ | https://s3.amazonaws.com/rust-lang-ci/cargo-builds/:cargo_bootstrap \ | ||||
LOCAL/dumbbell/rust:cargo_bootstrap \ | |||||
LOCAL/marino:bootstrap | LOCAL/marino:bootstrap | ||||
DISTNAME?= ${PORTNAME}c-${PORTVERSION}-src | DISTNAME?= ${PORTNAME}c-${PORTVERSION}-src | ||||
BOOTSTRAP_FILES=${RUSTC_BOOTSTRAP}:rust_bootstrap \ | BOOTSTRAP_FILES=${RUSTC_BOOTSTRAP}:rust_bootstrap \ | ||||
${RUST_STD_BOOTSTRAP}:rust_bootstrap \ | ${RUST_STD_BOOTSTRAP}:rust_bootstrap \ | ||||
${CARGO_BOOTSTRAP}:cargo_bootstrap | ${CARGO_BOOTSTRAP}:cargo_bootstrap | ||||
DISTFILES?= ${DISTNAME}${EXTRACT_SUFX}:src \ | DISTFILES?= ${DISTNAME}${EXTRACT_SUFX}:src \ | ||||
${BOOTSTRAP_FILES} | ${BOOTSTRAP_FILES} | ||||
.if !defined(SKIP_CARGO_REGISTRY) | .if !defined(SKIP_CARGO_REGISTRY) | ||||
Show All 10 Lines | |||||
LICENSE= APACHE20 \ | LICENSE= APACHE20 \ | ||||
MIT | MIT | ||||
LICENSE_COMB= dual | LICENSE_COMB= dual | ||||
# APACHE20 license is standard, see Templates/Licenses/APACHE20 | # APACHE20 license is standard, see Templates/Licenses/APACHE20 | ||||
LICENSE_FILE_MIT= ${WRKSRC}/LICENSE-MIT | LICENSE_FILE_MIT= ${WRKSRC}/LICENSE-MIT | ||||
BUILD_DEPENDS= cmake:devel/cmake | BUILD_DEPENDS= cmake:devel/cmake | ||||
ONLY_FOR_ARCHS?= amd64 i386 | ONLY_FOR_ARCHS?= aarch64 amd64 i386 | ||||
ONLY_FOR_ARCHS_REASON= requires prebuilt bootstrap compiler | ONLY_FOR_ARCHS_REASON= requires prebuilt bootstrap compiler | ||||
# FIXME: The bootstrapped rustc adds -L/usr/local/lib in front of | # FIXME: The bootstrapped rustc adds -L/usr/local/lib in front of | ||||
# the LDFLAGS. When stage0's rustc is linked, it picks the installed | # the LDFLAGS. When stage0's rustc is linked, it picks the installed | ||||
# librust*so and fails. | # librust*so and fails. | ||||
CONFLICTS_BUILD?= rust-nightly | CONFLICTS_BUILD?= rust-nightly | ||||
CONFLICTS_BUILD+= ${PKGBASE} | CONFLICTS_BUILD+= ${PKGBASE} | ||||
CONFLICTS_INSTALL?= rust-nightly | CONFLICTS_INSTALL?= rust-nightly | ||||
RUST_BOOTSTRAP_DIR?= 2017-04-27 | RUST_BOOTSTRAP_DIR?= 2017-04-27 | ||||
RUST_BOOTSTRAP_DIR_aarch64?= 2017-04-24 | |||||
RUST_BOOTSTRAP_VERSION?= 1.17.0 | RUST_BOOTSTRAP_VERSION?= 1.17.0 | ||||
RUST_BOOTSTRAP_HASH?= f4594d3e53dcb114 | RUST_BOOTSTRAP_VERSION_aarch64?=1.17.0 | ||||
RUSTC_BOOTSTRAP= ${RUST_BOOTSTRAP_DIR}/rustc-${RUST_BOOTSTRAP_VERSION}-${RUST_TARGET}.tar.gz | RUSTC_BOOTSTRAP= ${RUST_BOOTSTRAP_DIR_${ARCH}:U${RUST_BOOTSTRAP_DIR}}/rustc-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${RUST_TARGET}.tar.gz | ||||
RUST_STD_BOOTSTRAP= ${RUST_BOOTSTRAP_DIR}/rust-std-${RUST_BOOTSTRAP_VERSION}-${RUST_TARGET}.tar.gz | RUST_STD_BOOTSTRAP= ${RUST_BOOTSTRAP_DIR_${ARCH}:U${RUST_BOOTSTRAP_DIR}}/rust-std-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${RUST_TARGET}.tar.gz | ||||
CARGO_BOOTSTRAP_DIR?= ${RUST_BOOTSTRAP_DIR} | CARGO_BOOTSTRAP_DIR?= ${RUST_BOOTSTRAP_DIR} | ||||
CARGO_BOOTSTRAP_DIR_aarch64?= ${RUST_BOOTSTRAP_DIR} | |||||
CARGO_BOOTSTRAP_VERSION?= 0.18.0 | CARGO_BOOTSTRAP_VERSION?= 0.18.0 | ||||
CARGO_BOOTSTRAP= ${CARGO_BOOTSTRAP_DIR}/cargo-${CARGO_BOOTSTRAP_VERSION}-${RUST_TARGET}.tar.gz | CARGO_BOOTSTRAP_VERSION_aarch64?=0.18.0 | ||||
CARGO_BOOTSTRAP= ${CARGO_BOOTSTRAP_DIR_${ARCH}:U${CARGO_BOOTSTRAP_DIR}}/cargo-${CARGO_BOOTSTRAP_VERSION_${ARCH}:U${CARGO_BOOTSTRAP_VERSION}}-${RUST_TARGET}${EXTRACT_SUFX} | |||||
CARGO_REGISTRY= ${PORTNAME}-registry-${DISTVERSIONFULL}.tar.xz | CARGO_REGISTRY= ${PORTNAME}-registry-${DISTVERSIONFULL}.tar.xz | ||||
RUST_CHANNEL= ${PKGNAMESUFFIX:Ustable:S/^-//} | RUST_CHANNEL= ${PKGNAMESUFFIX:Ustable:S/^-//} | ||||
# Rust's target arch string is different from *BSD arch strings | # Rust's target arch string is different from *BSD arch strings | ||||
RUST_ARCH_x86_64= x86_64 # dragonfly | RUST_ARCH_aarch64= aarch64 | ||||
RUST_ARCH_amd64= x86_64 | RUST_ARCH_amd64= x86_64 | ||||
RUST_ARCH_i386= i686 | RUST_ARCH_i386= i686 | ||||
RUST_ARCH_x86_64= x86_64 # dragonfly | |||||
RUST_TARGET= ${RUST_ARCH_${ARCH}}-unknown-${OPSYS:tl} | RUST_TARGET= ${RUST_ARCH_${ARCH}}-unknown-${OPSYS:tl} | ||||
PLIST_SUB+= RUST_TARGET=${RUST_TARGET} | PLIST_SUB+= RUST_TARGET=${RUST_TARGET} | ||||
USES= compiler gmake libedit python:2,build | USES= compiler gmake libedit python:2.7,build | ||||
HAS_CONFIGURE= yes | HAS_CONFIGURE= yes | ||||
CONFIGURE_ARGS= --disable-valgrind \ | CONFIGURE_ARGS= --disable-valgrind \ | ||||
${CHOSEN_COMPILER_TYPE:Mclang:C/.+/--enable-&/} \ | ${CHOSEN_COMPILER_TYPE:Mclang:C/.+/--enable-&/} \ | ||||
--prefix=${PREFIX} \ | --prefix=${PREFIX} \ | ||||
--musl-root=${PREFIX} \ | --musl-root=${PREFIX} \ | ||||
--local-rust-root=${PREFIX} \ | --local-rust-root=${PREFIX} \ | ||||
--mandir=${MANPREFIX}/man \ | --mandir=${MANPREFIX}/man \ | ||||
--release-channel=${RUST_CHANNEL} | --release-channel=${RUST_CHANNEL} \ | ||||
--python="${PYTHON_CMD}" | |||||
MAKE_ARGS+= VERBOSE=1 | MAKE_ARGS+= VERBOSE=1 | ||||
OPTIONS_DEFINE= DOCS GDB LLNEXTGEN PORT_LLVM | OPTIONS_DEFINE= DOCS GDB LLNEXTGEN PORT_LLVM | ||||
GDB_DESC= Install ports gdb (necessary for debugging rust programs) | GDB_DESC= Install ports gdb (necessary for debugging rust programs) | ||||
LLNEXTGEN_DESC= Build with grammar verification | LLNEXTGEN_DESC= Build with grammar verification | ||||
DOCS_CONFIGURE_ENABLE= docs | DOCS_CONFIGURE_ENABLE= docs | ||||
▲ Show 20 Lines • Show All 47 Lines • ▼ Show 20 Lines | for entry in $${conflicts_with}; do \ | ||||
${ECHO_MSG} " $${entry}"; \ | ${ECHO_MSG} " $${entry}"; \ | ||||
done; \ | done; \ | ||||
${ECHO_MSG}; \ | ${ECHO_MSG}; \ | ||||
${ECHO_MSG} " They will not build together."; \ | ${ECHO_MSG} " They will not build together."; \ | ||||
${ECHO_MSG} " Please remove them first with pkg delete."; \ | ${ECHO_MSG} " Please remove them first with pkg delete."; \ | ||||
exit 1;\ | exit 1;\ | ||||
fi | fi | ||||
LIBSTD= rust-std-${RUST_BOOTSTRAP_VERSION}-${RUST_ARCH_${ARCH}}-unknown-freebsd/rust-std-${RUST_ARCH_${ARCH}}-unknown-freebsd/lib/rustlib/${RUST_ARCH_${ARCH}}-unknown-freebsd/lib/libstd-f4594d3e53dcb114.rlib | RUST_STD_DIR= ${RUST_STD_BOOTSTRAP:T:R:R} | ||||
STDF= std-${RUST_BOOTSTRAP_HASH}.0.o | LIBSTD_SUFFIX= f4594d3e53dcb114 | ||||
LIBSTD_SUFFIX_aarch64= b41e0ffe8c1bd541 | |||||
LIBSTD= ${RUST_STD_DIR}/rust-std-${RUST_TARGET}/lib/rustlib/${RUST_TARGET}/lib/libstd-${LIBSTD_SUFFIX_${ARCH}:U${LIBSTD_SUFFIX}}.rlib | |||||
STDF= ${LIBSTD:T:R:S/lib//}.0.o | |||||
post-extract: | post-extract: | ||||
@${MKDIR} \ | @${MKDIR} \ | ||||
${WRKSRC}/build/cache/${RUST_BOOTSTRAP_DIR} \ | ${WRKSRC}/build/cache/${RUST_BOOTSTRAP_DIR_${ARCH}:U${RUST_BOOTSTRAP_DIR}} \ | ||||
${WRKSRC}/build/cache/${CARGO_BOOTSTRAP_DIR} | ${WRKSRC}/build/cache/${CARGO_BOOTSTRAP_DIR_${ARCH}:U${CARGO_BOOTSTRAP_DIR}} | ||||
${LN} -sf ${DISTDIR}/${DIST_SUBDIR}/${RUSTC_BOOTSTRAP} \ | ${LN} -sf ${DISTDIR}/${DIST_SUBDIR}/${RUSTC_BOOTSTRAP} \ | ||||
${WRKSRC}/build/cache/${RUST_BOOTSTRAP_DIR} | ${WRKSRC}/build/cache/${RUST_BOOTSTRAP_DIR_${ARCH}:U${RUST_BOOTSTRAP_DIR}} | ||||
.if ${OPSYS} != FreeBSD || ${OSVERSION} < 1200031 | .if ${OPSYS} != FreeBSD || ${OSVERSION} < 1200031 | ||||
${LN} -sf ${DISTDIR}/${DIST_SUBDIR}/${RUST_STD_BOOTSTRAP} \ | ${LN} -sf ${DISTDIR}/${DIST_SUBDIR}/${RUST_STD_BOOTSTRAP} \ | ||||
${WRKSRC}/build/cache/${RUST_BOOTSTRAP_DIR} | ${WRKSRC}/build/cache/${RUST_BOOTSTRAP_DIR_${ARCH}:U${RUST_BOOTSTRAP_DIR}} | ||||
.endif | .endif | ||||
${LN} -sf ${DISTDIR}/${DIST_SUBDIR}/${CARGO_BOOTSTRAP} \ | ${LN} -sf ${DISTDIR}/${DIST_SUBDIR}/${CARGO_BOOTSTRAP} \ | ||||
${WRKSRC}/build/cache/${CARGO_BOOTSTRAP_DIR} | ${WRKSRC}/build/cache/${CARGO_BOOTSTRAP_DIR_${ARCH}:U${CARGO_BOOTSTRAP_DIR}} | ||||
${TAR} -x -C ${WRKSRC} -f ${DISTDIR}/${DIST_SUBDIR}/${RUST_STD_BOOTSTRAP} | |||||
.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1200031 | .if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1200031 | ||||
${TAR} -x -C ${WRKSRC} -f ${DISTDIR}/${DIST_SUBDIR}/${RUST_STD_BOOTSTRAP} | |||||
${CC} ${CFLAGS} -fPIC -c -o ${WRKSRC}/old_fstat.o ${FILESDIR}/old_fstat.c | ${CC} ${CFLAGS} -fPIC -c -o ${WRKSRC}/old_fstat.o ${FILESDIR}/old_fstat.c | ||||
(cd ${WRKSRC} && ${AR} x ${WRKSRC}/${LIBSTD} ${STDF}) | (cd ${WRKSRC} && ${AR} x ${WRKSRC}/${LIBSTD} ${STDF}) | ||||
${LD} -r -o ${WRKSRC}/std.xx.o ${WRKSRC}/${STDF} ${WRKSRC}/old_fstat.o | ${LD} -r -o ${WRKSRC}/std.xx.o ${WRKSRC}/${STDF} ${WRKSRC}/old_fstat.o | ||||
${MV} ${WRKSRC}/std.xx.o ${WRKSRC}/${STDF} | ${MV} ${WRKSRC}/std.xx.o ${WRKSRC}/${STDF} | ||||
(cd ${WRKSRC} && ${AR} r ${WRKSRC}/${LIBSTD} ${STDF}) | (cd ${WRKSRC} && ${AR} r ${WRKSRC}/${LIBSTD} ${STDF}) | ||||
${TAR} -cy -C ${WRKSRC} -f ${WRKSRC}/rustc.tbz rust-std-${RUST_BOOTSTRAP_VERSION}-${RUST_ARCH_${ARCH}}-unknown-freebsd | ${TAR} -cy --format=ustar -C ${WRKSRC} -f ${WRKSRC}/rustc.tbz ${RUST_STD_DIR} | ||||
${MV} ${WRKSRC}/rustc.tbz ${WRKSRC}/build/cache/${RUST_STD_BOOTSTRAP} | ${MV} ${WRKSRC}/rustc.tbz ${WRKSRC}/build/cache/${RUST_STD_BOOTSTRAP} | ||||
.endif | .endif | ||||
post-patch: | post-patch: | ||||
@test ! -f ${WRKSRC}/mk/main.mk || \ | @test ! -f ${WRKSRC}/mk/main.mk || \ | ||||
${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ | ${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ | ||||
${WRKSRC}/mk/main.mk | ${WRKSRC}/mk/main.mk | ||||
@${REINPLACE_CMD} -e 's|gdb|${LOCALBASE}/bin/gdb|' \ | @${REINPLACE_CMD} -e 's|gdb|${LOCALBASE}/bin/gdb|' \ | ||||
${WRKSRC}/src/etc/rust-gdb | ${WRKSRC}/src/etc/rust-gdb | ||||
@if test "${RUST_BOOTSTRAP_DIR_${ARCH}}" -o "${RUST_BOOTSTRAP_VERSION_${ARCH}}"; then \ | |||||
${REINPLACE_CMD} -e \ | |||||
's|^rustc:.*|rustc: ${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${RUST_BOOTSTRAP_DIR_${ARCH}:U${RUST_BOOTSTRAP_DIR}}|' \ | |||||
${WRKSRC}/src/stage0.txt; \ | |||||
fi | |||||
@if test "${CARGO_BOOTSTRAP_DIR_${ARCH}}"; then \ | |||||
${REINPLACE_CMD} -e \ | |||||
's|^cargo:.*|cargo: ${RUST_BOOTSTRAP_DIR_${ARCH}:U${RUST_BOOTSTRAP_DIR}}|' \ | |||||
${WRKSRC}/src/stage0.txt; \ | |||||
fi | |||||
@if test "${CARGO_BOOTSTRAP_VERSION_${ARCH}}"; then \ | |||||
${REINPLACE_CMD} -e \ | |||||
's|cargo-nightly-|cargo-${CARGO_BOOTSTRAP_VERSION_${ARCH}:U${CARGO_BOOTSTRAP_VERSION}}-|' \ | |||||
${WRKSRC}/src/bootstrap/bootstrap.py; \ | |||||
fi | |||||
# In case the previous "make stage" failed, this ensures rust's | # In case the previous "make stage" failed, this ensures rust's | ||||
# install.sh won't backup previously staged files before reinstalling | # install.sh won't backup previously staged files before reinstalling | ||||
# new ones. Otherwise, the staging directory is polluted with unneeded | # new ones. Otherwise, the staging directory is polluted with unneeded | ||||
# files. | # files. | ||||
pre-install: | pre-install: | ||||
@for f in ${RUST_MANIFESTS} ${RUST_DOCS_MANIFESTS}; do \ | @for f in ${RUST_MANIFESTS} ${RUST_DOCS_MANIFESTS}; do \ | ||||
if test -f "${STAGEDIR}${PREFIX}/$$f"; then \ | if test -f "${STAGEDIR}${PREFIX}/$$f"; then \ | ||||
▲ Show 20 Lines • Show All 71 Lines • Show Last 20 Lines |