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