Annotation of pkgsrc/lang/rust/Makefile, Revision 1.83
1.83 ! he 1: # $NetBSD: Makefile,v 1.82 2019/02/14 16:24:23 he Exp $
1.1 jperkin 2:
1.83 ! he 3: DISTNAME= rustc-1.33.0-src
1.1 jperkin 4: PKGNAME= ${DISTNAME:S/rustc/rust/:S/-src//}
5: CATEGORIES= lang
6: MASTER_SITES= http://static.rust-lang.org/dist/
7:
8: MAINTAINER= pkgsrc-users@NetBSD.org
1.9 wiz 9: HOMEPAGE= https://www.rust-lang.org/
1.1 jperkin 10: COMMENT= Safe, concurrent, practical language
11: LICENSE= mit OR apache-2.0
12:
13: USE_GCC_RUNTIME= yes
1.10 ryoon 14: USE_LANGUAGES= c c++11
1.18 jperkin 15: USE_LIBTOOL= yes
1.59 jperkin 16: USE_TOOLS+= bash ggrep gmake perl:build pkg-config
1.22 ryoon 17: # For internal llvm
18: BUILD_DEPENDS+= cmake-[0-9]*:../../devel/cmake
1.6 jperkin 19:
1.74 ryoon 20: CHECK_PORTABILITY_SKIP+=vendor/openssl-src/openssl/.travis-create-release.sh
21:
1.18 jperkin 22: HAS_CONFIGURE= yes
1.72 tnn 23: PYTHON_FOR_BUILD_ONLY= yes
1.66 adam 24: CONFIG_SHELL= ${PYTHONBIN}
25: CONFIGURE_SCRIPT= src/bootstrap/configure.py
1.18 jperkin 26: CONFIGURE_ARGS+= --prefix=${PREFIX}
27: CONFIGURE_ARGS+= --mandir=${PREFIX}/${PKGMANDIR}
28: CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSCONFDIR}
29: CONFIGURE_ARGS+= --python=${PYTHONBIN}
30: CONFIGURE_ARGS+= --release-channel=stable
1.20 ryoon 31: #CONFIGURE_ARGS+= --enable-local-rust
1.18 jperkin 32: CONFIGURE_ARGS+= --local-rust-root=${RUST_BOOTSTRAP_PATH}
33: CONFIGURE_ARGS+= --enable-extended # Build and install cargo too.
34: CONFIGURE_ARGS+= --enable-rpath
35: CONFIGURE_ARGS+= --disable-codegen-tests
36: CONFIGURE_ARGS+= --disable-dist-src
37: CONFIGURE_ARGS+= --disable-llvm-static-stdcpp
38: CONFIGURE_ARGS+= --disable-ninja
1.66 adam 39: # XXX: to be enabled in the future
40: #CONFIGURE_ARGS+= --jemalloc-root=${BUILDLINK_PREFIX.jemalloc}/lib
41: #CONFIGURE_ARGS+= --enable-llvm-link-shared
42: #CONFIGURE_ARGS+= --llvm-root=${BUILDLINK_PREFIX.llvm}
1.18 jperkin 43:
1.70 he 44: # Use "dist" build target for cross compile of bootstrap
45: #BUILD_TARGET= dist
46: BUILD_TARGET= build
47:
1.55 he 48: # The gcc-wrap / c++-wrap script takes CROSS_ROOT environment variable
49: # to do a cross-build. The wrapper script assumes dest/ and tools/
50: # as a result of a cross-build as subdirectories of this root
1.58 he 51: #CROSS_ROOT= /u/evbarm-armv7hf
1.62 he 52: #CROSS_ROOT= /u/sparc64
53: #CROSS_ROOT= /u/macppc
1.78 he 54: #CROSS_ROOT= /u/evbarm64
1.55 he 55: #MAKE_ENV+= CROSS_ROOT=${CROSS_ROOT}
56:
57: # The GNU cross target designation
1.58 he 58: #GNU_CROSS_TARGET= armv7--netbsdelf-eabihf
1.62 he 59: #GNU_CROSS_TARGET= sparc64--netbsd
60: #GNU_CROSS_TARGET= powerpc--netbsd
1.78 he 61: #GNU_CROSS_TARGET= aarch64--netbsd
1.70 he 62: #MAKE_ENV+= GNU_CROSS_TARGET=${GNU_CROSS_TARGET}
1.55 he 63:
64: # To cross-build rust, you need to specify
65: # the ultimate target to built for, as well as the
66: # host the compiler is supposed to run on.
67: # Rust's target designation
1.70 he 68: #TARGET= armv7-unknown-netbsd-eabihf
69: #TARGET= sparc64-unknown-netbsd
70: #TARGET= powerpc-unknown-netbsd
1.78 he 71: #TARGET= aarch64-unknown-netbsd
1.61 he 72: #SCRIPTS= ${WRKDIR}/scripts
1.55 he 73: #CONFIGURE_ARGS+= --host=${TARGET}
74: #CONFIGURE_ARGS+= --target=${TARGET}
1.78 he 75: # for gcc as target compiler:
1.61 he 76: #CONFIGURE_ARGS+= --set=target.${TARGET}.cc=${SCRIPTS}/gcc-wrap
77: #CONFIGURE_ARGS+= --set=target.${TARGET}.cxx=${SCRIPTS}/c++-wrap
78: #CONFIGURE_ARGS+= --set=target.${TARGET}.linker=${SCRIPTS}/gcc-wrap
1.78 he 79: # for clang as target compiler:
80: #CONFIGURE_ARGS+= --set=target.${TARGET}.cc=${SCRIPTS}/clang-wrap
81: #CONFIGURE_ARGS+= --set=target.${TARGET}.cxx=${SCRIPTS}/clang++-wrap
82: #CONFIGURE_ARGS+= --set=target.${TARGET}.linker=${SCRIPTS}/clang-wrap
83: # common:
1.56 he 84: #CONFIGURE_ARGS+= --set=target.${TARGET}.ar=${CROSS_ROOT}/tools/bin/${GNU_CROSS_TARGET}-ar
1.55 he 85:
86: # May be required when cross-building on NetBSD
87: #MAKE_ENV+= OPENSSL_DIR=/usr
88:
1.66 adam 89: # Getting RPATH with $ORIGIN into bootstrap may be troublesome, so
1.55 he 90: # uncommenting the LD_LIBRARY_PATH setting may be required to run
91: # the bootstrap
1.77 tnn 92: PKGSRC_MAKE_ENV+= LD_LIBRARY_PATH=${RUST_BOOTSTRAP_PATH:Q}/lib
1.55 he 93:
94: .if !empty(MACHINE_PLATFORM:MNetBSD-*-powerpc)
95: # Bootstrapping on NetBSD/powerpc requires no debug-info from rustc
96: # (both for amd64->powerpc built and powerpc->powerpc built bootstrap bits)
97: CONFIGURE_ARGS+= --disable-debug
98: CONFIGURE_ARGS+= --disable-debuginfo-tests
99: CONFIGURE_ARGS+= --disable-debug-assertions
100: CONFIGURE_ARGS+= --disable-debuginfo
101: CONFIGURE_ARGS+= --disable-debuginfo-lines
102: CONFIGURE_ARGS+= --disable-debuginfo-only-std
103: CONFIGURE_ARGS+= --disable-debuginfo-tools
104: .endif
105:
1.18 jperkin 106: # This should allow us to perform "offline" builds (so cargo doesn't fetch
107: # dependencies during the build stage) but this isn't hooked up yet.
108: CONFIGURE_ARGS+= --enable-vendor
109:
1.41 jperkin 110: # cargo defaults to using the number of available CPUs
111: MAKE_ENV+= CARGO_BUILD_JOBS=${MAKE_JOBS:U1}
112:
1.64 jperkin 113: CFLAGS.SunOS+= -D_POSIX_PTHREAD_SEMANTICS
114:
1.1 jperkin 115: UNLIMIT_RESOURCES+= cputime
116:
117: TEST_TARGET= check
118:
1.12 wiz 119: # bin/* lib/*, but names vary
120: CHECK_RELRO_SUPPORTED= no
1.18 jperkin 121: CHECK_SSP_SUPPORTED= no
1.12 wiz 122:
1.51 jperkin 123: CHECK_PORTABILITY_SKIP+= src/vendor/openssl-src/openssl/.travis-create-release.sh
124:
1.1 jperkin 125: # Required for LLVM (-std=c++11)
126: GCC_REQD+= 4.8
127:
128: .include "../../mk/bsd.prefs.mk"
129:
130: #
1.3 ryoon 131: # Under NetBSD, do not use DT_RUNPATH
132: #
1.4 ryoon 133: BUILDLINK_TRANSFORM.NetBSD+= rm:-Wl,--enable-new-dtags
1.3 ryoon 134:
1.53 ryoon 135: .PHONY: pre-build-fix
1.3 ryoon 136: #
1.1 jperkin 137: # Rust unfortunately requires itself to build. On platforms which aren't
1.6 jperkin 138: # supported by upstream (where they offer binary bootstraps), or where we do
139: # not trust random binaries from the Internet, we need to build and provide our
140: # own bootstrap. See the stage0-bootstrap below for more details.
1.1 jperkin 141: #
1.6 jperkin 142: DISTFILES:= ${DEFAULT_DISTFILES}
1.83 ! he 143: RUST_STAGE0_VER= 1.32.0
1.1 jperkin 144: #
1.6 jperkin 145: .if !empty(MACHINE_PLATFORM:MDarwin-*-i386) || make(distinfo) || make (makesum) || make(mdi)
1.83 ! he 146: RUST_STAGE0_VER= 1.32.0
1.6 jperkin 147: RUST_ARCH:= i686-apple-darwin
148: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.10 ryoon 149: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
150: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 151: pre-build-fix:
1.6 jperkin 152: .endif
153: .if !empty(MACHINE_PLATFORM:MDarwin-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.83 ! he 154: RUST_STAGE0_VER= 1.32.0
1.6 jperkin 155: RUST_ARCH:= x86_64-apple-darwin
156: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.10 ryoon 157: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
158: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 159: pre-build-fix:
1.6 jperkin 160: .endif
161: .if !empty(MACHINE_PLATFORM:MLinux-*-i386) || make(distinfo) || make (makesum) || make(mdi)
1.83 ! he 162: RUST_STAGE0_VER= 1.32.0
1.6 jperkin 163: RUST_ARCH:= i686-unknown-linux-gnu
164: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.10 ryoon 165: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
166: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 167: pre-build-fix:
1.6 jperkin 168: .endif
169: .if !empty(MACHINE_PLATFORM:MLinux-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.83 ! he 170: RUST_STAGE0_VER= 1.32.0
1.6 jperkin 171: RUST_ARCH:= x86_64-unknown-linux-gnu
172: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.10 ryoon 173: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
174: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 175: pre-build-fix:
1.6 jperkin 176: .endif
1.69 jperkin 177: .if !empty(MACHINE_PLATFORM:MSunOS-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.83 ! he 178: RUST_STAGE0_VER= 1.32.0
1.69 jperkin 179: RUST_ARCH:= x86_64-sun-solaris
180: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
181: SITES.${RUST_STAGE0}= https://us-east.manta.joyent.com/pkgsrc/public/pkg-bootstraps/
182: DISTFILES:= ${DISTFILES} ${RUST_STAGE0}
183: RUST_BOOTSTRAP_PATH?= ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}
184: pre-build-fix:
185: .endif
1.30 triaxx 186: .if !empty(MACHINE_PLATFORM:MFreeBSD-*-i386) || make(distinfo) || make (makesum) || make(mdi)
1.83 ! he 187: RUST_STAGE0_VER= 1.32.0
1.30 triaxx 188: RUST_ARCH:= i686-unknown-freebsd
189: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
190: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
191: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 192: pre-build-fix:
1.30 triaxx 193: .endif
194: .if !empty(MACHINE_PLATFORM:MFreeBSD-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.83 ! he 195: RUST_STAGE0_VER= 1.32.0
1.30 triaxx 196: RUST_ARCH:= x86_64-unknown-freebsd
197: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
198: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
199: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 200: pre-build-fix:
1.30 triaxx 201: .endif
1.15 ryoon 202: .if !empty(MACHINE_PLATFORM:MNetBSD-*-i386) || make(distinfo) || make (makesum) || make(mdi)
1.80 he 203: RUST_STAGE0_VER= 1.32.0
1.15 ryoon 204: RUST_ARCH= i686-unknown-netbsd
205: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
206: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.78 he 207: # Do not trust he@.
208: SITES.${RUST_STAGE0}= ftp://golden-delicious.urc.uninett.no/pub/rust/
209: SITES.${RUST_STD_STAGE0}= ftp://golden-delicious.urc.uninett.no/pub/rust/
1.50 ryoon 210: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.26 jperkin 211: # Setting this changes it for every distfile, which doesn't match what is
212: # currently in distinfo.
213: #DIST_SUBDIR= ${PKGNAME}
1.15 ryoon 214: # For atomic ops
215: CFLAGS+= -march=i586
1.53 ryoon 216: pre-build-fix:
1.24 ryoon 217: ${TOOLS_PLATFORM.paxctl} +am ${WRKDIR}/rust-bootstrap/bin/cargo
1.15 ryoon 218: .endif
1.6 jperkin 219: .if !empty(MACHINE_PLATFORM:MNetBSD-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.81 he 220: RUST_STAGE0_VER= 1.32.0
1.3 ryoon 221: RUST_ARCH= x86_64-unknown-netbsd
1.6 jperkin 222: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.10 ryoon 223: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
224: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 225: pre-build-fix:
1.1 jperkin 226: .endif
1.70 he 227: .if !empty(MACHINE_PLATFORM:MNetBSD-*-powerpc) || make(distinfo) || make (makesum) || make(mdi)
1.78 he 228: RUST_STAGE0_VER= 1.32.0
1.70 he 229: RUST_ARCH= powerpc-unknown-netbsd
230: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
231: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
232: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
233: # Do not trust he@.
234: SITES.${RUST_STAGE0}= ftp://golden-delicious.urc.uninett.no/pub/rust/
235: SITES.${RUST_STD_STAGE0}= ftp://golden-delicious.urc.uninett.no/pub/rust/
236: pre-build-fix:
237: .endif
1.78 he 238: .if !empty(MACHINE_PLATFORM:MNetBSD-*-aarch64) || make(distinfo) || make (makesum) || make(mdi)
239: RUST_STAGE0_VER= 1.32.0
240: RUST_ARCH= aarch64-unknown-netbsd
241: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
242: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
243: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
244: # Do not trust he@.
245: SITES.${RUST_STAGE0}= ftp://golden-delicious.urc.uninett.no/pub/rust/
246: SITES.${RUST_STD_STAGE0}= ftp://golden-delicious.urc.uninett.no/pub/rust/
247: pre-build-fix:
248: .endif
1.70 he 249: .if !empty(MACHINE_PLATFORM:MNetBSD-*-sparc64) || make(distinfo) || make (makesum) || make(mdi)
1.79 he 250: RUST_STAGE0_VER= 1.32.0
1.70 he 251: RUST_ARCH= sparc64-unknown-netbsd
252: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
253: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
254: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.68 ryoon 255: ## Do not trust he@.
1.70 he 256: SITES.${RUST_STAGE0}= ftp://golden-delicious.urc.uninett.no/pub/rust/
257: SITES.${RUST_STD_STAGE0}= ftp://golden-delicious.urc.uninett.no/pub/rust/
258: pre-build-fix:
259: .endif
260: .if !empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf) || make(distinfo) || make (makesum) || make(mdi)
261: RUST_ARCH= armv7-unknown-netbsd-eabihf
1.82 he 262: RUST_STAGE0_VER= 1.32.0
1.70 he 263: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
264: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
265: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
266: # Do not trust he@.
267: SITES.${RUST_STAGE0}= ftp://golden-delicious.urc.uninett.no/pub/rust/
268: SITES.${RUST_STD_STAGE0}= ftp://golden-delicious.urc.uninett.no/pub/rust/
269: pre-build-fix:
270: .endif
1.1 jperkin 271:
1.17 tnn 272: # You may override RUST_BOOTSTRAP_PATH and RUST_ARCH in mk.conf if you have a local bootstrap compiler.
273: .if !defined(RUST_ARCH) && !defined(RUST_BOOTSTRAP_PATH)
1.6 jperkin 274: NOT_FOR_PLATFORM+= ${MACHINE_PLATFORM}
1.17 tnn 275: .else
276: RUST_BOOTSTRAP_PATH?= ${WRKDIR}/rust-bootstrap
1.2 jperkin 277: .endif
1.1 jperkin 278:
279: .if ${OPSYS} == "SunOS"
280: BUILD_DEPENDS+= coreutils>=0:../../sysutils/coreutils
281: TOOLS_CREATE+= md5sum
282: TOOLS_PATH.md5sum= ${PREFIX}/bin/gmd5sum
283: .endif
284:
1.10 ryoon 285: SUBST_CLASSES+= rpath
1.40 jperkin 286: SUBST_STAGE.rpath= pre-configure
1.10 ryoon 287: SUBST_FILES.rpath= src/bootstrap/bin/rustc.rs
288: SUBST_VARS.rpath= PREFIX
289:
290: post-extract:
1.17 tnn 291: set -e; \
1.51 jperkin 292: if ${TEST} -e ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}/install.sh \
1.17 tnn 293: -a ! -e ${RUST_BOOTSTRAP_PATH}/bin/rustc; then \
294: cd ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}; \
295: ${TOOLS_BASH} ./install.sh --prefix=${RUST_BOOTSTRAP_PATH}; \
296: cd ${WRKDIR}/rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}; \
297: ${TOOLS_BASH} ./install.sh --prefix=${RUST_BOOTSTRAP_PATH}; \
298: fi
1.39 ryoon 299: # patch(1) in NetBSD does not handle .cargo-checksum.json like long width file.
1.76 jperkin 300: ${CP} ${WRKSRC}/vendor/rand/.cargo-checksum.json \
301: ${WRKSRC}/vendor/rand/.cargo-checksum.json.orig
1.83 ! he 302: ${SED} -e 's/1e732c2e3b4bd1561f11e0979bf9d20669a96eae7afe0deff9dfbb980ee47bf1/55abd8100db14a076dedbf84ce0f2db08158e1bd33ff1d4978bd3c4ad978f281/' ${WRKSRC}/vendor/rand/.cargo-checksum.json.orig > ${WRKSRC}/vendor/rand/.cargo-checksum.json
! 303: ${CP} ${WRKSRC}/vendor/libc/.cargo-checksum.json \
! 304: ${WRKSRC}/vendor/libc/.cargo-checksum.json.orig
! 305: ${SED} -e 's/7950a26f3eb0b7bc8e71f524cc2e05832b759fe2ce12a58e0c1957e0ec1286dc/a188bb00f0eddf252738f830b864e3a39bf2345f05f195d5ee5ca42b101f1de5/' ${WRKSRC}/vendor/libc/.cargo-checksum.json.orig > ${WRKSRC}/vendor/libc/.cargo-checksum.json
! 306: ${CP} ${WRKSRC}/vendor/backtrace-sys/.cargo-checksum.json \
! 307: ${WRKSRC}/vendor/backtrace-sys/.cargo-checksum.json.orig
! 308: ${SED} -e 's/59763fc255248b54fba5d0761d61093a73d51fa4cb400b0df1b5f339b9c2f48a/ba66d192421fd536ceddb50616c4c4aea06f4e39450eb0bc2bbbaed0b1e684c1/' ${WRKSRC}/vendor/backtrace-sys/.cargo-checksum.json.orig > ${WRKSRC}/vendor/backtrace-sys/.cargo-checksum.json
1.74 ryoon 309:
1.55 he 310: .if ${OPSYS} == "NetBSD"
1.61 he 311: SDIR=${WRKDIR}/scripts; \
312: ${MKDIR} $${SDIR}; \
313: cd $${SDIR}; \
314: ${RM} -f c++-wrap; \
315: ${RM} -f clang++-wrap; \
316: ${RM} -f clang-wrap; \
317: ${CP} ${.CURDIR}/files/gcc-wrap .; \
318: ${CHMOD} +x gcc-wrap; \
319: ${LN} -s gcc-wrap c++-wrap; \
320: ${LN} -s gcc-wrap clang++-wrap; \
321: ${LN} -s gcc-wrap clang-wrap
1.55 he 322: .endif
1.17 tnn 323:
1.30 triaxx 324: .if ${OPSYS} == "FreeBSD"
325: MAKE_ENV+= OPENSSL_DIR=${SSLBASE}
326: .endif
327:
1.73 tnn 328: .if ${OPSYS} == "NetBSD" && !empty(PKGSRC_COMPILER:Mclang) && !exists(/lib/libgcc_s.so)
329: BUILDLINK_TRANSFORM+= rm:-lgcc_s
330: MAKE_ENV+= PKGSRC_HAVE_LIBCPP=yes
331: .endif
332:
1.53 ryoon 333: pre-build: pre-build-fix
1.73 tnn 334: .if ${OPSYS} == "NetBSD" && !empty(PKGSRC_COMPILER:Mclang) && !exists(/lib/libgcc_s.so)
335: cp ${FILESDIR}/libgcc_s.so.1 ${RUST_BOOTSTRAP_PATH}/lib/.
336: .endif
1.51 jperkin 337:
1.10 ryoon 338: do-build:
339: cd ${WRKSRC} \
1.66 adam 340: && ${SETENV} ${MAKE_ENV} \
1.70 he 341: ${PYTHONBIN} ./x.py -v ${BUILD_TARGET} -j ${MAKE_JOBS:U1}
1.10 ryoon 342:
343: do-install:
344: cd ${WRKSRC} \
1.66 adam 345: && ${SETENV} ${MAKE_ENV} ${INSTALL_ENV} \
346: ${PYTHONBIN} ./x.py -v install -j ${MAKE_JOBS:U1}
1.10 ryoon 347:
1.66 adam 348: GENERATE_PLIST+=find ${DESTDIR}${PREFIX} \( -type f -o -type l \) -print | \
349: sed 's,${DESTDIR}${PREFIX}/,,' | ${SORT} ;
1.1 jperkin 350:
1.66 adam 351: .if ${OPSYS} == "Darwin"
352: LDFLAGS+= -headerpad_max_install_names
1.11 maya 353:
1.1 jperkin 354: .PHONY: fix-darwin-install-name
355: post-install: fix-darwin-install-name
356: fix-darwin-install-name:
1.52 minskim 357: . for bin in clippy-driver rls rustc rustdoc
1.1 jperkin 358: otool -XL ${DESTDIR}${PREFIX}/bin/${bin} \
359: | ${GREP} '@rpath' | while read rpath rest; do \
360: install_name_tool -change $$rpath \
361: `${ECHO} $$rpath | ${SED} -e 's,@rpath,${PREFIX}/lib,g'` \
362: ${DESTDIR}${PREFIX}/bin/${bin}; \
363: done
364: . endfor
1.52 minskim 365: . for libdir in lib lib/rustlib/${RUST_ARCH}/lib lib/rustlib/${RUST_ARCH}/codegen-backends
1.1 jperkin 366: for f in ${DESTDIR}${PREFIX}/${libdir}/lib*.dylib; do \
367: [ ! -f $$f ] && continue; \
368: install_name_tool -id `${ECHO} $$f | ${SED} -e 's,${DESTDIR},,g'` $$f; \
369: otool -XL $$f | grep '@rpath' | while read rpath rest; do \
370: install_name_tool -change $$rpath \
1.52 minskim 371: `${ECHO} $$rpath | ${SED} -e 's,@rpath,${PREFIX}/lib,g'` \
1.1 jperkin 372: $$f; \
373: done; \
374: done
375: . endfor
376: .endif
377:
1.6 jperkin 378: #
379: # Create a relocatable stage2 bootstrap from the bits we just built that can be
380: # used to build the next version of rust. Currently only tested on SmartOS.
381: #
1.26 jperkin 382: BOOTSTRAP_TMPDIR= ${WRKDIR}/${PKGNAME_NOREV}-${RUST_ARCH}
1.6 jperkin 383: USE_TOOLS+= gtar
384:
1.55 he 385: # The NetBSD part is so far untested, because I could not convince
386: # the rust build to use the gcc wrapper when building natively,
387: # so that I could get a placeholder in the RPATH, because chrpath
388: # cannot extend the length of the RPATH...
389:
1.6 jperkin 390: stage0-bootstrap: install
1.26 jperkin 391: ${RM} -rf ${BOOTSTRAP_TMPDIR}
1.6 jperkin 392: ${MKDIR} ${BOOTSTRAP_TMPDIR}
1.55 he 393: .if ${OPSYS} == "NetBSD"
394: (cd ${BOOTSTRAP_TMPDIR}; \
395: DISTDIR=${WRKSRC}/bild/dist; \
396: VER_ARCH=${PKGVERSION}-${RUST_ARCH}; \
397: RUSTC=rustc-$${VER_ARCH}; \
398: RUSTC_FILE=$${RUSTC}.tar.gz; \
399: RUST_STD=rust-std-$${VER_ARCH}; \
400: RUST_STD_FILE=$${RUST_STD}.tar.gz; \
401: ${GTAR} -xzf $${DISTDIR}/$${RUSTC_FILE}; \
402: (cd ${RUSTC}; \
403: RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN/../lib'; \
404: for f in rls-preview/bin/rls rustc/bin/rustc rustc/bin/rustdoc; do \
405: chrpath -r $$RPATH $$f; \
406: done; \
407: RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN'; \
408: for f in rustc/lib/*.so*; do \
409: chrpath -r $$RPATH $$f; \
410: done; \
411: RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN:$$ORIGIN/../../..'; \
412: for f in rustc/lib/rustlib/*/*/*.so*; do \
413: chrpath -r $$RPATH $$f; \
414: done;); \
415: ${GTAR} -czf $${RUSTC_FILE} $${RUSTC}; \
416: ${CP} $${DISTDIR}/$${RUST_STD_FILE} .; \
1.66 adam 417: ${ECHO} "Fixed stage0 bootstrap in ${BOOTSTRAP_TMPDIR}:"; \
418: ${ECHO} "$${RUSTC_FILE}"; \
419: ${ECHO} "$${RUST_STD_FILE}"; \
1.55 he 420: )
421: .endif
422: .if ${OS_VARIANT} == "SmartOS"
1.6 jperkin 423: ${CP} -R ${DESTDIR}/${PREFIX}/bin ${BOOTSTRAP_TMPDIR}/
424: ${CP} -R ${DESTDIR}/${PREFIX}/lib ${BOOTSTRAP_TMPDIR}/
1.26 jperkin 425: ${MKDIR} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc
1.6 jperkin 426: for lib in libgcc_s.so.1 libssp.so.0 libstdc++.so.6; do \
427: ${CP} `${PKG_CC} -print-file-name=$${lib}` \
1.26 jperkin 428: ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \
429: done
430: for lib in libcrypto.so.1.0.0 libcurl.so.4 libhttp_parser.so.2 \
431: libiconv.so.2 libidn2.so.0 libintl.so.8 liblber-2.4.so.2 \
432: libldap-2.4.so.2 libnghttp2.so.14 libsasl2.so.3 \
433: libssh2.so.1 libssl.so.1.0.0 libunistring.so.2 libz.so.1; do \
434: ${CP} ${PREFIX}/lib/$${lib} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \
1.6 jperkin 435: done
1.26 jperkin 436: for f in ${BOOTSTRAP_TMPDIR}/bin/{cargo,rls,rustc,rustdoc}; do \
437: /usr/bin/elfedit -e 'dyn:runpath $$ORIGIN/../lib:$$ORIGIN/../lib/pkgsrc' $$f; \
438: done
439: for f in ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/*.so*; do \
440: /usr/bin/elfedit -e 'dyn:runpath $$ORIGIN' $$f; \
1.6 jperkin 441: done
442: for f in ${BOOTSTRAP_TMPDIR}/lib/*.so*; do \
1.26 jperkin 443: /usr/bin/elfedit -e 'dyn:runpath $$ORIGIN:$$ORIGIN/pkgsrc' $$f; \
1.6 jperkin 444: done
1.43 jperkin 445: for f in ${BOOTSTRAP_TMPDIR}/lib/rustlib/${RUST_ARCH}/*/*.so*; do \
1.26 jperkin 446: /usr/bin/elfedit -e 'dyn:runpath $$ORIGIN:$$ORIGIN/../../..:$$ORIGIN/../../../pkgsrc' $$f; \
1.6 jperkin 447: done
448: (cd ${WRKDIR}; \
1.26 jperkin 449: ${GTAR} -zcf ${PKGNAME_NOREV}-${RUST_ARCH}.tar.gz ${PKGNAME_NOREV}-${RUST_ARCH})
1.55 he 450: .endif
1.6 jperkin 451:
1.67 jperkin 452: # These dependencies currently use the bundled sources as they require
453: # development features not yet available in released versions.
454: #
455: #.include "../../devel/libgit2/buildlink3.mk"
456: #.include "../../security/libssh2/buildlink3.mk"
457: #.include "../../www/curl/buildlink3.mk"
458: #.include "../../www/http-parser/buildlink3.mk"
459:
1.1 jperkin 460: .include "../../devel/cmake/buildlink3.mk"
1.66 adam 461: #.include "../../devel/jemalloc/buildlink3.mk"
1.10 ryoon 462: .include "../../devel/zlib/buildlink3.mk"
1.66 adam 463: #.include "../../lang/llvm/buildlink3.mk"
1.1 jperkin 464: .include "../../lang/python/tool.mk"
1.10 ryoon 465: .include "../../security/openssl/buildlink3.mk"
1.1 jperkin 466: .include "../../mk/bsd.pkg.mk"
CVSweb <webmaster@jp.NetBSD.org>