Annotation of pkgsrc/lang/rust/Makefile, Revision 1.156
1.156 ! tnn 1: # $NetBSD: Makefile,v 1.155 2020/03/13 18:34:53 jperkin Exp $
1.1 jperkin 2:
1.155 jperkin 3: DISTNAME= rustc-1.42.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.6 jperkin 17:
1.91 gdt 18: # The NetBSD bootstraps are built for NetBSD 8 (because rust doesn't
1.93 gdt 19: # build on 7). Mark earlier versions as broken.
20: BROKEN_ON_PLATFORM+= NetBSD-[1-7].*-*
1.90 gdt 21:
1.123 rillig 22: HAS_CONFIGURE= yes
23: PYTHON_FOR_BUILD_ONLY= yes
24: CONFIG_SHELL= ${PYTHONBIN}
25: CONFIGURE_SCRIPT= src/bootstrap/configure.py
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
31: #CONFIGURE_ARGS+= --enable-local-rust
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
1.123 rillig 40: #CONFIGURE_ARGS+= --jemalloc-root=${BUILDLINK_PREFIX.jemalloc}/lib
1.99 jperkin 41:
1.70 he 42: # Use "dist" build target for cross compile of bootstrap
1.119 he 43: #BUILD_TARGET= dist
44: BUILD_TARGET= build
1.70 he 45:
1.55 he 46: # The gcc-wrap / c++-wrap script takes CROSS_ROOT environment variable
47: # to do a cross-build. The wrapper script assumes dest/ and tools/
48: # as a result of a cross-build as subdirectories of this root
1.58 he 49: #CROSS_ROOT= /u/evbarm-armv7hf
1.62 he 50: #CROSS_ROOT= /u/sparc64
51: #CROSS_ROOT= /u/macppc
1.78 he 52: #CROSS_ROOT= /u/evbarm64
1.55 he 53: #MAKE_ENV+= CROSS_ROOT=${CROSS_ROOT}
54:
55: # The GNU cross target designation
1.58 he 56: #GNU_CROSS_TARGET= armv7--netbsdelf-eabihf
1.62 he 57: #GNU_CROSS_TARGET= sparc64--netbsd
58: #GNU_CROSS_TARGET= powerpc--netbsd
1.78 he 59: #GNU_CROSS_TARGET= aarch64--netbsd
1.70 he 60: #MAKE_ENV+= GNU_CROSS_TARGET=${GNU_CROSS_TARGET}
1.55 he 61:
62: # To cross-build rust, you need to specify
63: # the ultimate target to built for, as well as the
64: # host the compiler is supposed to run on.
65: # Rust's target designation
1.123 rillig 66: #TARGET= armv7-unknown-netbsd-eabihf
67: #TARGET= sparc64-unknown-netbsd
68: #TARGET= powerpc-unknown-netbsd
69: #TARGET= aarch64-unknown-netbsd
1.61 he 70: #SCRIPTS= ${WRKDIR}/scripts
1.55 he 71: #CONFIGURE_ARGS+= --host=${TARGET}
72: #CONFIGURE_ARGS+= --target=${TARGET}
1.78 he 73: # for gcc as target compiler:
1.61 he 74: #CONFIGURE_ARGS+= --set=target.${TARGET}.cc=${SCRIPTS}/gcc-wrap
75: #CONFIGURE_ARGS+= --set=target.${TARGET}.cxx=${SCRIPTS}/c++-wrap
76: #CONFIGURE_ARGS+= --set=target.${TARGET}.linker=${SCRIPTS}/gcc-wrap
1.78 he 77: # for clang as target compiler:
78: #CONFIGURE_ARGS+= --set=target.${TARGET}.cc=${SCRIPTS}/clang-wrap
79: #CONFIGURE_ARGS+= --set=target.${TARGET}.cxx=${SCRIPTS}/clang++-wrap
80: #CONFIGURE_ARGS+= --set=target.${TARGET}.linker=${SCRIPTS}/clang-wrap
81: # common:
1.56 he 82: #CONFIGURE_ARGS+= --set=target.${TARGET}.ar=${CROSS_ROOT}/tools/bin/${GNU_CROSS_TARGET}-ar
1.55 he 83:
84: # May be required when cross-building on NetBSD
85: #MAKE_ENV+= OPENSSL_DIR=/usr
86:
1.66 adam 87: # Getting RPATH with $ORIGIN into bootstrap may be troublesome, so
1.55 he 88: # uncommenting the LD_LIBRARY_PATH setting may be required to run
89: # the bootstrap
1.77 tnn 90: PKGSRC_MAKE_ENV+= LD_LIBRARY_PATH=${RUST_BOOTSTRAP_PATH:Q}/lib
1.55 he 91:
1.18 jperkin 92: # This should allow us to perform "offline" builds (so cargo doesn't fetch
93: # dependencies during the build stage) but this isn't hooked up yet.
94: CONFIGURE_ARGS+= --enable-vendor
95:
1.41 jperkin 96: # cargo defaults to using the number of available CPUs
1.138 maya 97: MAKE_ENV+= CARGO_BUILD_JOBS=${_MAKE_JOBS_N}
1.41 jperkin 98:
1.64 jperkin 99: CFLAGS.SunOS+= -D_POSIX_PTHREAD_SEMANTICS
100:
1.1 jperkin 101: UNLIMIT_RESOURCES+= cputime
102:
103: TEST_TARGET= check
104:
1.12 wiz 105: # bin/* lib/*, but names vary
106: CHECK_RELRO_SUPPORTED= no
1.18 jperkin 107: CHECK_SSP_SUPPORTED= no
1.12 wiz 108:
1.1 jperkin 109: .include "../../mk/bsd.prefs.mk"
110:
1.117 he 111: .if !empty(MACHINE_PLATFORM:MNetBSD-*-powerpc) || \
112: !empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf)
113: # Bootstrapping on NetBSD/powerpc requires no debug-info from rustc
114: # (both for amd64->powerpc built and powerpc->powerpc built bootstrap bits)
115: CONFIGURE_ARGS+= --disable-debug
116: CONFIGURE_ARGS+= --disable-debug-assertions
1.122 he 117: CONFIGURE_ARGS+= --disable-llvm-release-debuginfo
118: CONFIGURE_ARGS+= --debuginfo-level=0
119: CONFIGURE_ARGS+= --debuginfo-level-rustc=0
120: CONFIGURE_ARGS+= --debuginfo-level-std=0
121: CONFIGURE_ARGS+= --debuginfo-level-tools=0
122: CONFIGURE_ARGS+= --debuginfo-level-tests=0
1.117 he 123: .endif
124:
125: # Only build the ARM target on/for this host, due to resource constraints
126: # (X86 needs to go along due to 2-stage build process)
127: .if !empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf) || \
128: !empty(TARGET:Marmv7-unknown-netbsd-eabihf)
1.123 rillig 129: CONFIGURE_ARGS+= --set llvm.targets="ARM;X86"
1.117 he 130: .endif
131:
1.138 maya 132: # toolchain/54192, induces rtld issues
1.156 ! tnn 133: .if ${OPSYS} == "NetBSD"
1.138 maya 134: MAKE_JOBS_SAFE= no
135: .endif
1.117 he 136:
1.1 jperkin 137: #
1.3 ryoon 138: # Under NetBSD, do not use DT_RUNPATH
139: #
1.4 ryoon 140: BUILDLINK_TRANSFORM.NetBSD+= rm:-Wl,--enable-new-dtags
1.3 ryoon 141:
1.53 ryoon 142: .PHONY: pre-build-fix
1.3 ryoon 143: #
1.1 jperkin 144: # Rust unfortunately requires itself to build. On platforms which aren't
1.6 jperkin 145: # supported by upstream (where they offer binary bootstraps), or where we do
146: # not trust random binaries from the Internet, we need to build and provide our
147: # own bootstrap. See the stage0-bootstrap below for more details.
1.1 jperkin 148: #
1.6 jperkin 149: DISTFILES:= ${DEFAULT_DISTFILES}
1.129 adam 150:
1.6 jperkin 151: .if !empty(MACHINE_PLATFORM:MDarwin-*-i386) || make(distinfo) || make (makesum) || make(mdi)
1.155 jperkin 152: RUST_STAGE0_VER= 1.41.1
1.6 jperkin 153: RUST_ARCH:= i686-apple-darwin
154: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.10 ryoon 155: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
156: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 157: pre-build-fix:
1.6 jperkin 158: .endif
159: .if !empty(MACHINE_PLATFORM:MDarwin-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.155 jperkin 160: RUST_STAGE0_VER= 1.41.1
1.6 jperkin 161: RUST_ARCH:= x86_64-apple-darwin
162: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.10 ryoon 163: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
164: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 165: pre-build-fix:
1.6 jperkin 166: .endif
167: .if !empty(MACHINE_PLATFORM:MLinux-*-i386) || make(distinfo) || make (makesum) || make(mdi)
1.155 jperkin 168: RUST_STAGE0_VER= 1.41.1
1.6 jperkin 169: RUST_ARCH:= i686-unknown-linux-gnu
170: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.10 ryoon 171: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
172: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 173: pre-build-fix:
1.6 jperkin 174: .endif
175: .if !empty(MACHINE_PLATFORM:MLinux-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.155 jperkin 176: RUST_STAGE0_VER= 1.41.1
1.6 jperkin 177: RUST_ARCH:= x86_64-unknown-linux-gnu
178: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.10 ryoon 179: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
180: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 181: pre-build-fix:
1.6 jperkin 182: .endif
1.69 jperkin 183: .if !empty(MACHINE_PLATFORM:MSunOS-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.155 jperkin 184: RUST_STAGE0_VER= 1.41.1
1.69 jperkin 185: RUST_ARCH:= x86_64-sun-solaris
186: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
187: SITES.${RUST_STAGE0}= https://us-east.manta.joyent.com/pkgsrc/public/pkg-bootstraps/
188: DISTFILES:= ${DISTFILES} ${RUST_STAGE0}
189: RUST_BOOTSTRAP_PATH?= ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}
190: pre-build-fix:
191: .endif
1.30 triaxx 192: .if !empty(MACHINE_PLATFORM:MFreeBSD-*-i386) || make(distinfo) || make (makesum) || make(mdi)
1.155 jperkin 193: RUST_STAGE0_VER= 1.41.1
1.30 triaxx 194: RUST_ARCH:= i686-unknown-freebsd
195: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
196: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
197: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 198: pre-build-fix:
1.30 triaxx 199: .endif
200: .if !empty(MACHINE_PLATFORM:MFreeBSD-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.155 jperkin 201: RUST_STAGE0_VER= 1.41.1
1.30 triaxx 202: RUST_ARCH:= x86_64-unknown-freebsd
203: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
204: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
205: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 206: pre-build-fix:
1.30 triaxx 207: .endif
1.15 ryoon 208: .if !empty(MACHINE_PLATFORM:MNetBSD-*-i386) || make(distinfo) || make (makesum) || make(mdi)
1.139 jperkin 209: RUST_STAGE0_VER= 1.40.0
1.15 ryoon 210: RUST_ARCH= i686-unknown-netbsd
211: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
212: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.110 he 213: SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
214: SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
1.50 ryoon 215: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.26 jperkin 216: # Setting this changes it for every distfile, which doesn't match what is
217: # currently in distinfo.
218: #DIST_SUBDIR= ${PKGNAME}
1.15 ryoon 219: # For atomic ops
220: CFLAGS+= -march=i586
1.53 ryoon 221: pre-build-fix:
1.24 ryoon 222: ${TOOLS_PLATFORM.paxctl} +am ${WRKDIR}/rust-bootstrap/bin/cargo
1.15 ryoon 223: .endif
1.6 jperkin 224: .if !empty(MACHINE_PLATFORM:MNetBSD-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.155 jperkin 225: RUST_STAGE0_VER= 1.41.1
1.3 ryoon 226: RUST_ARCH= x86_64-unknown-netbsd
1.6 jperkin 227: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.10 ryoon 228: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
229: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 230: pre-build-fix:
1.1 jperkin 231: .endif
1.70 he 232: .if !empty(MACHINE_PLATFORM:MNetBSD-*-powerpc) || make(distinfo) || make (makesum) || make(mdi)
1.155 jperkin 233: RUST_STAGE0_VER= 1.41.0
1.70 he 234: RUST_ARCH= powerpc-unknown-netbsd
235: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
236: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
237: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.110 he 238: SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
239: SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
1.70 he 240: pre-build-fix:
241: .endif
1.78 he 242: .if !empty(MACHINE_PLATFORM:MNetBSD-*-aarch64) || make(distinfo) || make (makesum) || make(mdi)
1.155 jperkin 243: RUST_STAGE0_VER= 1.41.0
1.78 he 244: RUST_ARCH= aarch64-unknown-netbsd
245: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
246: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
247: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.110 he 248: SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
249: SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
1.78 he 250: pre-build-fix:
251: .endif
1.70 he 252: .if !empty(MACHINE_PLATFORM:MNetBSD-*-sparc64) || make(distinfo) || make (makesum) || make(mdi)
1.139 jperkin 253: RUST_STAGE0_VER= 1.40.0
1.70 he 254: RUST_ARCH= sparc64-unknown-netbsd
255: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
256: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
257: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.110 he 258: SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
259: SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
1.70 he 260: pre-build-fix:
261: .endif
262: .if !empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf) || make(distinfo) || make (makesum) || make(mdi)
263: RUST_ARCH= armv7-unknown-netbsd-eabihf
1.103 he 264: RUST_STAGE0_VER= 1.35.0
1.70 he 265: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
266: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
267: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.110 he 268: SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
269: SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
1.70 he 270: pre-build-fix:
271: .endif
1.1 jperkin 272:
1.17 tnn 273: # You may override RUST_BOOTSTRAP_PATH and RUST_ARCH in mk.conf if you have a local bootstrap compiler.
274: .if !defined(RUST_ARCH) && !defined(RUST_BOOTSTRAP_PATH)
1.6 jperkin 275: NOT_FOR_PLATFORM+= ${MACHINE_PLATFORM}
1.17 tnn 276: .else
277: RUST_BOOTSTRAP_PATH?= ${WRKDIR}/rust-bootstrap
1.2 jperkin 278: .endif
1.1 jperkin 279:
280: .if ${OPSYS} == "SunOS"
281: BUILD_DEPENDS+= coreutils>=0:../../sysutils/coreutils
1.118 jperkin 282: BUILD_DEPENDS+= gzip>=0:../../archivers/gzip
1.1 jperkin 283: TOOLS_CREATE+= md5sum
284: TOOLS_PATH.md5sum= ${PREFIX}/bin/gmd5sum
1.118 jperkin 285: TOOLS_PLATFORM.gzcat= ${PREFIX}/bin/gzip -cd
1.1 jperkin 286: .endif
287:
1.10 ryoon 288: SUBST_CLASSES+= rpath
1.40 jperkin 289: SUBST_STAGE.rpath= pre-configure
1.114 adam 290: SUBST_FILES.rpath+= src/build_helper/lib.rs
291: SUBST_FILES.rpath+= src/librustc_codegen_ssa/back/linker.rs
1.127 ryoon 292: SUBST_FILES.rpath+= src/bootstrap/builder.rs
1.10 ryoon 293: SUBST_VARS.rpath= PREFIX
294:
295: post-extract:
1.17 tnn 296: set -e; \
1.51 jperkin 297: if ${TEST} -e ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}/install.sh \
1.17 tnn 298: -a ! -e ${RUST_BOOTSTRAP_PATH}/bin/rustc; then \
299: cd ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}; \
300: ${TOOLS_BASH} ./install.sh --prefix=${RUST_BOOTSTRAP_PATH}; \
301: cd ${WRKDIR}/rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}; \
302: ${TOOLS_BASH} ./install.sh --prefix=${RUST_BOOTSTRAP_PATH}; \
303: fi
1.39 ryoon 304: # patch(1) in NetBSD does not handle .cargo-checksum.json like long width file.
1.152 tnn 305: set -e; ${ECHO} \
306: vendor/libssh2-sys \
1.155 jperkin 307: 0d80edbdffcf36a165578b3cffe9bc4e9eab3b3ae94a170ec8bc18764159cabb \
308: fd601d3ea2ff745c3d73a546cc553f656924f3e985b87bc4db025c5c51ed3db5 \
1.149 tnn 309: vendor/rand \
310: 1e732c2e3b4bd1561f11e0979bf9d20669a96eae7afe0deff9dfbb980ee47bf1 \
311: bc03f2345d7cfa7000f9da817120b6afa073359789c21a9a790ebd8676c50cca \
312: vendor/rand-0.6.1 \
313: 1e732c2e3b4bd1561f11e0979bf9d20669a96eae7afe0deff9dfbb980ee47bf1 \
314: bc03f2345d7cfa7000f9da817120b6afa073359789c21a9a790ebd8676c50cca \
315: vendor/libc \
1.155 jperkin 316: cd266cee38f25fe9ed896ba88ddd3530eca352c4d260671fb63d315890bc49e6 \
317: 109a8e5a1638b09c4297e8e7ff95f35b4d16a3c0b42c8791b5fdd3f550612f8c \
1.149 tnn 318: vendor/backtrace-sys \
319: 59763fc255248b54fba5d0761d61093a73d51fa4cb400b0df1b5f339b9c2f48a \
320: ba66d192421fd536ceddb50616c4c4aea06f4e39450eb0bc2bbbaed0b1e684c1 \
321: vendor/lzma-sys \
322: 51a9ca7a4576822dc4fa01b31bc4bbed21817777abb304f605ef5951f68c3ed2 \
323: 807c3aa4b5a62a70ba790df151e9ecf19f4bb562f2858575d690908751262db3 \
324: | ${XARGS} -n 1 ${ECHO} | while read crate; do \
325: read orig_cksum; \
326: read cksum; \
327: f="${WRKSRC}/$$crate/.cargo-checksum.json"; \
328: of="$$f.orig"; \
329: ${CP} "$$f" "$$of"; \
330: ${SED} -e "s/$$orig_cksum/$$cksum/g" < "$$of" > "$$f"; \
331: done
1.55 he 332: .if ${OPSYS} == "NetBSD"
1.61 he 333: SDIR=${WRKDIR}/scripts; \
334: ${MKDIR} $${SDIR}; \
335: cd $${SDIR}; \
336: ${RM} -f c++-wrap; \
337: ${RM} -f clang++-wrap; \
338: ${RM} -f clang-wrap; \
339: ${CP} ${.CURDIR}/files/gcc-wrap .; \
340: ${CHMOD} +x gcc-wrap; \
341: ${LN} -s gcc-wrap c++-wrap; \
342: ${LN} -s gcc-wrap clang++-wrap; \
343: ${LN} -s gcc-wrap clang-wrap
1.55 he 344: .endif
1.17 tnn 345:
1.30 triaxx 346: .if ${OPSYS} == "FreeBSD"
347: MAKE_ENV+= OPENSSL_DIR=${SSLBASE}
348: .endif
349:
1.73 tnn 350: .if ${OPSYS} == "NetBSD" && !empty(PKGSRC_COMPILER:Mclang) && !exists(/lib/libgcc_s.so)
351: BUILDLINK_TRANSFORM+= rm:-lgcc_s
352: MAKE_ENV+= PKGSRC_HAVE_LIBCPP=yes
353: .endif
354:
1.53 ryoon 355: pre-build: pre-build-fix
1.73 tnn 356: .if ${OPSYS} == "NetBSD" && !empty(PKGSRC_COMPILER:Mclang) && !exists(/lib/libgcc_s.so)
357: cp ${FILESDIR}/libgcc_s.so.1 ${RUST_BOOTSTRAP_PATH}/lib/.
358: .endif
1.51 jperkin 359:
1.10 ryoon 360: do-build:
361: cd ${WRKSRC} \
1.66 adam 362: && ${SETENV} ${MAKE_ENV} \
1.138 maya 363: ${PYTHONBIN} ./x.py -v ${BUILD_TARGET} -j ${_MAKE_JOBS_N}
1.10 ryoon 364:
365: do-install:
366: cd ${WRKSRC} \
1.66 adam 367: && ${SETENV} ${MAKE_ENV} ${INSTALL_ENV} \
1.138 maya 368: ${PYTHONBIN} ./x.py -v install -j ${_MAKE_JOBS_N}
1.10 ryoon 369:
1.123 rillig 370: GENERATE_PLIST+= find ${DESTDIR}${PREFIX} \( -type f -o -type l \) -print | \
371: sed 's,${DESTDIR}${PREFIX}/,,' | ${SORT} ;
1.1 jperkin 372:
1.131 minskim 373: .if ${OPSYS} == "Darwin"
374: .PHONY: fix-darwin-install-name
375: post-install: fix-darwin-install-name
376: fix-darwin-install-name:
1.135 adam 377: for f in ${DESTDIR}${PREFIX}/lib/librustc_macros-*.dylib; do \
1.131 minskim 378: install_name_tool -id `${ECHO} $$f | ${SED} -e 's,${DESTDIR},,g'` $$f; \
379: done
380: .endif
381:
1.6 jperkin 382: # Create a relocatable stage2 bootstrap from the bits we just built that can be
383: # used to build the next version of rust. Currently only tested on SmartOS.
384: #
1.26 jperkin 385: BOOTSTRAP_TMPDIR= ${WRKDIR}/${PKGNAME_NOREV}-${RUST_ARCH}
1.6 jperkin 386: USE_TOOLS+= gtar
387:
1.55 he 388: # The NetBSD part is so far untested, because I could not convince
389: # the rust build to use the gcc wrapper when building natively,
390: # so that I could get a placeholder in the RPATH, because chrpath
391: # cannot extend the length of the RPATH...
1.121 jperkin 392: ELFEDIT?= /usr/bin/elfedit
1.55 he 393:
1.6 jperkin 394: stage0-bootstrap: install
1.26 jperkin 395: ${RM} -rf ${BOOTSTRAP_TMPDIR}
1.6 jperkin 396: ${MKDIR} ${BOOTSTRAP_TMPDIR}
1.55 he 397: .if ${OPSYS} == "NetBSD"
398: (cd ${BOOTSTRAP_TMPDIR}; \
399: DISTDIR=${WRKSRC}/bild/dist; \
400: VER_ARCH=${PKGVERSION}-${RUST_ARCH}; \
401: RUSTC=rustc-$${VER_ARCH}; \
402: RUSTC_FILE=$${RUSTC}.tar.gz; \
403: RUST_STD=rust-std-$${VER_ARCH}; \
404: RUST_STD_FILE=$${RUST_STD}.tar.gz; \
405: ${GTAR} -xzf $${DISTDIR}/$${RUSTC_FILE}; \
406: (cd ${RUSTC}; \
407: RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN/../lib'; \
408: for f in rls-preview/bin/rls rustc/bin/rustc rustc/bin/rustdoc; do \
409: chrpath -r $$RPATH $$f; \
410: done; \
411: RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN'; \
412: for f in rustc/lib/*.so*; do \
413: chrpath -r $$RPATH $$f; \
414: done; \
415: RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN:$$ORIGIN/../../..'; \
416: for f in rustc/lib/rustlib/*/*/*.so*; do \
417: chrpath -r $$RPATH $$f; \
418: done;); \
419: ${GTAR} -czf $${RUSTC_FILE} $${RUSTC}; \
420: ${CP} $${DISTDIR}/$${RUST_STD_FILE} .; \
1.66 adam 421: ${ECHO} "Fixed stage0 bootstrap in ${BOOTSTRAP_TMPDIR}:"; \
422: ${ECHO} "$${RUSTC_FILE}"; \
423: ${ECHO} "$${RUST_STD_FILE}"; \
1.55 he 424: )
425: .endif
426: .if ${OS_VARIANT} == "SmartOS"
1.6 jperkin 427: ${CP} -R ${DESTDIR}/${PREFIX}/bin ${BOOTSTRAP_TMPDIR}/
428: ${CP} -R ${DESTDIR}/${PREFIX}/lib ${BOOTSTRAP_TMPDIR}/
1.26 jperkin 429: ${MKDIR} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc
1.6 jperkin 430: for lib in libgcc_s.so.1 libssp.so.0 libstdc++.so.6; do \
431: ${CP} `${PKG_CC} -print-file-name=$${lib}` \
1.26 jperkin 432: ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \
433: done
1.121 jperkin 434: # direct dependencies
1.146 jperkin 435: for lib in libLLVM-9.so libcrypto.so.1.1 libcurl.so.4 \
436: libssl.so.1.1 libz.so.1; do \
1.26 jperkin 437: ${CP} ${PREFIX}/lib/$${lib} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \
1.6 jperkin 438: done
1.121 jperkin 439: # libcurl dependencies
440: for lib in libiconv.so.2 libidn2.so.0 libintl.so.8 liblber-2.4.so.2 \
441: libldap-2.4.so.2 libnghttp2.so.14 libsasl2.so.3 \
442: libssh2.so.1 libunistring.so.2; do \
443: ${CP} ${PREFIX}/lib/$${lib} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \
444: done
445: for f in ${BOOTSTRAP_TMPDIR}/bin/{cargo*,clippy*,miri,rls,rustc,rustdoc,rustfmt}; do \
446: ${ELFEDIT} -e 'dyn:runpath $$ORIGIN/../lib:$$ORIGIN/../lib/pkgsrc' $$f; \
1.26 jperkin 447: done
448: for f in ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/*.so*; do \
1.121 jperkin 449: ${ELFEDIT} -e 'dyn:runpath $$ORIGIN' $$f; \
1.6 jperkin 450: done
451: for f in ${BOOTSTRAP_TMPDIR}/lib/*.so*; do \
1.121 jperkin 452: ${ELFEDIT} -e 'dyn:runpath $$ORIGIN:$$ORIGIN/pkgsrc' $$f; \
1.6 jperkin 453: done
1.43 jperkin 454: for f in ${BOOTSTRAP_TMPDIR}/lib/rustlib/${RUST_ARCH}/*/*.so*; do \
1.121 jperkin 455: ${ELFEDIT} -e 'dyn:runpath $$ORIGIN:$$ORIGIN/../../..:$$ORIGIN/../../../pkgsrc' $$f; \
1.6 jperkin 456: done
457: (cd ${WRKDIR}; \
1.26 jperkin 458: ${GTAR} -zcf ${PKGNAME_NOREV}-${RUST_ARCH}.tar.gz ${PKGNAME_NOREV}-${RUST_ARCH})
1.55 he 459: .endif
1.6 jperkin 460:
1.108 nia 461: .include "options.mk"
462:
1.67 jperkin 463: # These dependencies currently use the bundled sources as they require
464: # development features not yet available in released versions.
465: #
466: #.include "../../devel/libgit2/buildlink3.mk"
467: #.include "../../security/libssh2/buildlink3.mk"
468: #.include "../../www/http-parser/buildlink3.mk"
1.142 he 469: #.include "../../devel/jemalloc/buildlink3.mk"
470:
1.143 wiz 471: # Bootstrap built on 8.0, build on later version
1.142 he 472: # requires compat80 package
473: # (I wish this worked on powerpc, but it doesn't since
474: # I can't build with the internal LLVM, ref.
475: # https://github.com/rust-lang/rust/issues/65862)
476: .if (${OPSYS} == "NetBSD") && \
477: ((${MACHINE_ARCH} == "i386") || \
478: (${MACHINE_ARCH} == "powerpc")) \
479: && (empty(OS_VERSION:M[012345678].*) || \
480: !empty(OS_VERSION:M8.99.*))
481: DEPENDS+= compat80>=0:../../emulators/compat80/
482: .endif
1.67 jperkin 483:
1.10 ryoon 484: .include "../../devel/zlib/buildlink3.mk"
1.1 jperkin 485: .include "../../lang/python/tool.mk"
1.10 ryoon 486: .include "../../security/openssl/buildlink3.mk"
1.116 adam 487: .include "../../www/curl/buildlink3.mk"
1.1 jperkin 488: .include "../../mk/bsd.pkg.mk"
CVSweb <webmaster@jp.NetBSD.org>