2017-03-27 12:35:31 +00:00
|
|
|
# $OpenBSD: Makefile,v 1.39 2017/03/27 12:35:31 danj Exp $
|
2015-04-06 16:01:05 +00:00
|
|
|
|
2016-12-06 22:39:49 +00:00
|
|
|
# snapshots are only available for amd64 and i386, for now
|
|
|
|
ONLY_FOR_ARCHS = amd64 i386
|
2015-04-06 16:01:05 +00:00
|
|
|
|
|
|
|
COMMENT-main = compiler for Rust Language
|
|
|
|
COMMENT-doc = html documentation for rustc
|
|
|
|
|
2017-03-27 12:35:31 +00:00
|
|
|
V = 1.16.0
|
2015-05-19 23:42:38 +00:00
|
|
|
DISTNAME = rustc-${V}-src
|
2015-04-06 16:01:05 +00:00
|
|
|
|
2017-02-15 12:52:35 +00:00
|
|
|
# rustc bootstrap version
|
2017-03-27 12:35:31 +00:00
|
|
|
RBV-amd64 = 1.16.0-20160315
|
|
|
|
RBV-i386 = 1.16.0-20170312
|
2017-02-15 12:52:35 +00:00
|
|
|
RBV = ${RBV-${MACHINE_ARCH}}
|
|
|
|
|
|
|
|
# cargo bootstrap version
|
|
|
|
CBV-amd64 = 0.16.0-20170213
|
|
|
|
CBV-i386 = 0.16.0-20170213
|
|
|
|
CBV = ${CBV-${MACHINE_ARCH}}
|
2015-06-27 15:37:32 +00:00
|
|
|
|
2015-04-06 16:01:05 +00:00
|
|
|
PKGNAME = rust-${V}
|
|
|
|
PKGNAME-main = rust-${V}
|
|
|
|
PKGNAME-doc = rust-doc-${V}
|
|
|
|
|
|
|
|
MULTI_PACKAGES = -main -doc
|
|
|
|
|
|
|
|
CATEGORIES = lang
|
|
|
|
|
|
|
|
HOMEPAGE = http://www.rust-lang.org/
|
2016-11-12 16:42:24 +00:00
|
|
|
MAINTAINER = Sebastien Marie <semarie@online.fr>
|
2015-04-06 16:01:05 +00:00
|
|
|
|
|
|
|
# both MIT and Apache2.0
|
|
|
|
# with portions covered by various BSD-like licenses
|
|
|
|
PERMIT_PACKAGE_CDROM = Yes
|
|
|
|
|
2016-03-11 05:30:45 +00:00
|
|
|
WANTLIB-main = ${WANTLIB} c m pthread z
|
2015-04-06 16:01:05 +00:00
|
|
|
WANTLIB-doc =
|
|
|
|
|
|
|
|
MASTER_SITES = https://static.rust-lang.org/dist/
|
2016-11-12 16:42:24 +00:00
|
|
|
MASTER_SITES0 = http://kapouay.odns.fr/pub/rust/
|
2015-04-06 16:01:05 +00:00
|
|
|
|
|
|
|
DIST_SUBDIR = rust
|
2016-12-06 22:39:49 +00:00
|
|
|
DISTFILES = ${DISTNAME}${EXTRACT_SUFX} \
|
2017-02-15 12:52:35 +00:00
|
|
|
${RBOOTSTRAP} \
|
|
|
|
${CBOOTSTRAP}
|
|
|
|
|
|
|
|
RBOOTSTRAP = ${RBOOTSTRAP-${MACHINE_ARCH}}
|
|
|
|
CBOOTSTRAP = ${CBOOTSTRAP-${MACHINE_ARCH}}
|
|
|
|
.for m in ${ONLY_FOR_ARCHS}
|
|
|
|
RBOOTSTRAP-$m = rustc-bootstrap-${m}-${RBV-$m}.tar.gz:0
|
|
|
|
CBOOTSTRAP-$m = ../cargo/cargo-bootstrap-${m}-${CBV-$m}.tar.gz:0
|
|
|
|
SUPDISTFILES += ${RBOOTSTRAP-$m} \
|
|
|
|
${CBOOTSTRAP-$m}
|
2017-01-06 17:32:22 +00:00
|
|
|
.endfor
|
2015-04-06 16:01:05 +00:00
|
|
|
|
2017-02-15 12:52:35 +00:00
|
|
|
# per MACHINE_ARCH configuration
|
2015-04-06 16:01:05 +00:00
|
|
|
.if "${MACHINE_ARCH}" == "amd64"
|
|
|
|
TRIPLE_ARCH = x86_64-unknown-openbsd
|
2017-02-15 12:52:35 +00:00
|
|
|
PKG_ARGS += -Damd64=1 -Di386=0
|
2016-12-06 22:39:49 +00:00
|
|
|
.elif "${MACHINE_ARCH}" == "i386"
|
|
|
|
TRIPLE_ARCH = i686-unknown-openbsd
|
2017-02-15 12:52:35 +00:00
|
|
|
PKG_ARGS += -Damd64=0 -Di386=1
|
2016-12-06 22:39:49 +00:00
|
|
|
.endif
|
|
|
|
|
2015-04-06 16:01:05 +00:00
|
|
|
MODULES += gcc4 \
|
|
|
|
lang/python
|
2016-01-25 05:36:05 +00:00
|
|
|
MODPY_RUNDEP = No
|
2015-04-06 16:01:05 +00:00
|
|
|
|
2017-02-15 12:52:35 +00:00
|
|
|
# use embedded or ports version of LLVM
|
|
|
|
PORTS_LLVM ?= No
|
|
|
|
.if ${PORTS_LLVM:L:Myes}
|
|
|
|
BUILD_DEPENDS += devel/llvm<4
|
|
|
|
.else
|
2017-02-18 13:15:48 +00:00
|
|
|
BUILD_DEPENDS += devel/cmake \
|
|
|
|
devel/ninja
|
2017-02-15 12:52:35 +00:00
|
|
|
.endif
|
|
|
|
|
2015-04-06 16:01:05 +00:00
|
|
|
# rustllvm need c++11
|
|
|
|
MODGCC4_LANGS = c++
|
|
|
|
MODGCC4_ARCHS = *
|
|
|
|
|
2015-04-18 12:19:09 +00:00
|
|
|
# need to be keep in sync
|
2015-05-28 10:29:44 +00:00
|
|
|
LIBESTDC_VERSION = 17.0
|
2015-04-06 16:01:05 +00:00
|
|
|
|
2017-02-15 12:52:35 +00:00
|
|
|
# note: RUSTFLAGS extra flags passed to rust
|
2015-04-18 12:19:09 +00:00
|
|
|
# -L modgcc-libs : disambiguate libestdc++.so
|
2017-02-15 12:52:35 +00:00
|
|
|
MAKE_ENV = RUSTFLAGS="-L ${WRKDIR}/modgcc-libs"
|
2015-04-06 16:01:05 +00:00
|
|
|
|
|
|
|
# build/configuration variables
|
|
|
|
SEPARATE_BUILD = Yes
|
|
|
|
USE_GMAKE = Yes
|
|
|
|
|
|
|
|
# need for libbacktrace
|
|
|
|
USE_LIBTOOL = gnu
|
|
|
|
|
2017-02-15 12:52:35 +00:00
|
|
|
TEST_DEPENDS += ${FULLPKGNAME-main}:${BUILD_PKGPATH} \
|
|
|
|
devel/git
|
2015-04-06 16:01:05 +00:00
|
|
|
|
2017-03-27 12:35:31 +00:00
|
|
|
TEST_TARGET ?= src/test/run-pass \
|
|
|
|
src/test/compile-fail \
|
|
|
|
src/test/parse-fail \
|
|
|
|
src/test/run-fail \
|
|
|
|
src/test/mir-opt \
|
|
|
|
src/test/incremental \
|
|
|
|
src/test/ui \
|
|
|
|
src/test/compile-fail-fulldeps \
|
|
|
|
src/test/run-make \
|
|
|
|
src/test/rustdoc \
|
|
|
|
src/test/pretty \
|
|
|
|
src/test/run-pass/pretty \
|
|
|
|
src/test/run-fail/pretty \
|
|
|
|
path/to/nowhere
|
|
|
|
|
2015-04-06 16:01:05 +00:00
|
|
|
# - check datasize limit before configuring (and building)
|
|
|
|
pre-configure:
|
|
|
|
@if [ `ulimit -d` -lt 1572864 ]; then \
|
|
|
|
echo datasize limit is too low - amd64 build takes approx 1.5GB; \
|
|
|
|
exit 1; fi
|
|
|
|
|
2017-02-15 12:52:35 +00:00
|
|
|
# - generate config.toml file
|
2015-04-18 12:19:09 +00:00
|
|
|
# - copy libestdc++ from MODGCC4 to specific directory
|
|
|
|
# in order to disambiguate version linking (having multiple libestdc++
|
|
|
|
# at build time)
|
2017-02-15 12:52:35 +00:00
|
|
|
do-configure:
|
|
|
|
echo '[build]' >${WRKBUILD}/config.toml
|
|
|
|
echo 'rustc = "${WRKDIR}/rustc-bootstrap-${MACHINE_ARCH}-${RBV}/bin/rustc"' \
|
|
|
|
>>${WRKBUILD}/config.toml
|
|
|
|
echo 'cargo = "${WRKDIR}/cargo-bootstrap-${MACHINE_ARCH}-${CBV}/cargo"' \
|
|
|
|
>>${WRKBUILD}/config.toml
|
|
|
|
echo 'prefix = "${LOCALBASE}"' >>${WRKBUILD}/config.toml
|
|
|
|
echo 'vendor = true' >>${WRKBUILD}/config.toml
|
|
|
|
|
|
|
|
echo '[rust]' >>${WRKBUILD}/config.toml
|
|
|
|
echo 'channel = "stable"' >>${WRKBUILD}/config.toml
|
|
|
|
echo 'codegen-tests = false' >>${WRKBUILD}/config.toml
|
|
|
|
|
2017-03-27 12:35:31 +00:00
|
|
|
echo '[dist]' >>${WRKBUILD}/config.toml
|
|
|
|
echo 'src-tarball = false' >>${WRKBUILD}/config.toml
|
|
|
|
|
2017-02-15 12:52:35 +00:00
|
|
|
.if ${PORTS_LLVM:L:Myes}
|
|
|
|
echo '[target.${TRIPLE_ARCH}]' >>${WRKBUILD}/config.toml
|
|
|
|
echo 'llvm-config = "${LOCALBASE}/bin/llvm-config"' \
|
|
|
|
>>${WRKBUILD}/config.toml
|
|
|
|
.else
|
|
|
|
echo '[llvm]' >>${WRKBUILD}/config.toml
|
|
|
|
echo 'static-libstdcpp = false' >>${WRKBUILD}/config.toml
|
|
|
|
echo 'ninja = true' >>${WRKBUILD}/config.toml
|
|
|
|
.endif
|
|
|
|
|
2015-06-27 15:37:32 +00:00
|
|
|
rm -rf ${WRKDIR}/modgcc-libs
|
2017-02-15 12:52:35 +00:00
|
|
|
mkdir -p ${WRKDIR}/modgcc-libs
|
|
|
|
cp ${LOCALBASE}/lib/libestdc++.so.${LIBESTDC_VERSION} \
|
|
|
|
${WRKDIR}/modgcc-libs
|
|
|
|
|
2017-03-27 12:35:31 +00:00
|
|
|
# hack to build doc using generated stage2 instead of with stage0
|
|
|
|
# (rustdoc isn't included in our bootstrap)
|
|
|
|
post-configure:
|
|
|
|
ln -fs ${WRKBUILD}/build/${TRIPLE_ARCH}/stage2/bin/rustdoc \
|
|
|
|
${WRKDIR}/rustc-bootstrap-${MACHINE_ARCH}-${RBV}/bin/rustdoc
|
|
|
|
|
2017-02-15 12:52:35 +00:00
|
|
|
BUILD_BIN = cd ${WRKBUILD} && exec ${SETENV} ${MAKE_ENV} \
|
|
|
|
${MODPY_BIN} ${WRKSRC}/src/bootstrap/bootstrap.py
|
|
|
|
|
|
|
|
do-build:
|
|
|
|
${BUILD_BIN} dist --verbose --jobs=${MAKE_JOBS}
|
|
|
|
|
|
|
|
COMPONENTS ?= rustc rust-std rust-docs
|
|
|
|
do-install:
|
|
|
|
rm -rf ${WRKBUILD}/_extractdist
|
|
|
|
.for _c in ${COMPONENTS}
|
|
|
|
mkdir ${WRKBUILD}/_extractdist
|
|
|
|
cd ${WRKBUILD}/_extractdist && tar zxf \
|
|
|
|
${WRKBUILD}/build/dist/${_c}-${V}-${TRIPLE_ARCH}.tar.gz
|
|
|
|
cd ${WRKBUILD}/_extractdist/${_c}-${V}-${TRIPLE_ARCH} && ./install.sh \
|
|
|
|
--prefix="${PREFIX}" \
|
|
|
|
--mandir="${PREFIX}/man"
|
|
|
|
rm -rf ${WRKBUILD}/_extractdist
|
|
|
|
.endfor
|
|
|
|
for lib in ${PREFIX}/lib/lib*.* ; do \
|
|
|
|
libname=$${lib##*/} ; \
|
|
|
|
test -e ${PREFIX}/lib/rustlib/${TRIPLE_ARCH}/lib/$${libname} && \
|
|
|
|
ln -fs rustlib/${TRIPLE_ARCH}/lib/$${libname} \
|
|
|
|
${PREFIX}/lib/$${libname} ; \
|
|
|
|
done
|
2015-04-06 16:01:05 +00:00
|
|
|
|
2016-01-13 07:39:07 +00:00
|
|
|
post-install:
|
|
|
|
# cleanup
|
2017-02-15 12:52:35 +00:00
|
|
|
rm ${PREFIX}/bin/rust-lldb \
|
|
|
|
${PREFIX}/lib/rustlib/{install.log,uninstall.sh,rust-installer-version} \
|
|
|
|
${PREFIX}/lib/rustlib/components \
|
|
|
|
${PREFIX}/lib/rustlib/manifest-*
|
2016-06-09 04:20:10 +00:00
|
|
|
|
2017-02-15 12:52:35 +00:00
|
|
|
do-test:
|
2017-03-27 12:35:31 +00:00
|
|
|
${BUILD_BIN} test --verbose --jobs=${MAKE_JOBS} ${TEST_TARGET}
|
2016-06-09 04:20:10 +00:00
|
|
|
|
|
|
|
# bootstrap target permits to regenerate the bootstrap archive
|
|
|
|
BOOTSTRAPDIR=${WRKDIR}/rustc-bootstrap-${MACHINE_ARCH}-${V}-new
|
2017-02-15 12:52:35 +00:00
|
|
|
bootstrap: build
|
2016-06-09 04:20:10 +00:00
|
|
|
rm -rf ${BOOTSTRAPDIR}
|
|
|
|
mkdir -p ${BOOTSTRAPDIR}/{bin,lib}
|
2017-02-15 12:52:35 +00:00
|
|
|
${MAKE} clean=fake
|
|
|
|
${MAKE} fake \
|
|
|
|
PREFIX="${BOOTSTRAPDIR}" \
|
|
|
|
COMPONENTS="rustc rust-std" \
|
|
|
|
FAKE_SETUP=""
|
|
|
|
rm -rf ${BOOTSTRAPDIR}/{man,share} \
|
|
|
|
${BOOTSTRAPDIR}/bin/{rust-gdb,rustdoc}
|
|
|
|
mv ${BOOTSTRAPDIR}/bin/rustc{,.bin}
|
|
|
|
strip ${BOOTSTRAPDIR}/bin/rustc.bin \
|
|
|
|
${BOOTSTRAPDIR}/lib/lib*.so \
|
|
|
|
${BOOTSTRAPDIR}/lib/rustlib/${TRIPLE_ARCH}/lib/lib*.so
|
|
|
|
cp ${WRKDIR}/rustc-bootstrap-${MACHINE_ARCH}-${RBV}/bin/rustc \
|
|
|
|
${BOOTSTRAPDIR}/bin/rustc
|
|
|
|
LD_LIBRARY_PATH="${BOOTSTRAPDIR}/lib" \
|
|
|
|
ldd ${BOOTSTRAPDIR}/bin/rustc.bin \
|
2016-06-09 04:20:10 +00:00
|
|
|
| sed -ne 's,.* \(/.*/lib/lib.*\.so.[.0-9]*\)$$,\1,p' \
|
|
|
|
| xargs -r -J % cp % \
|
|
|
|
${BOOTSTRAPDIR}/lib
|
|
|
|
|
2015-04-06 16:01:05 +00:00
|
|
|
.include <bsd.port.mk>
|