Annotation of pkgsrc/lang/rust/Makefile, Revision 1.221
1.221 ! nia 1: # $NetBSD: Makefile,v 1.220 2021/03/29 08:45:34 he Exp $
1.1 jperkin 2:
1.217 he 3: DISTNAME= rustc-1.49.0-src
1.1 jperkin 4: PKGNAME= ${DISTNAME:S/rustc/rust/:S/-src//}
5: CATEGORIES= lang
1.190 tnn 6: MASTER_SITES= https://static.rust-lang.org/dist/
1.1 jperkin 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:
1.180 nia 13: CONFLICTS+= rust-bin-[0-9]*
14:
1.181 nia 15: # uses -std=c++14
16: GCC_REQD+= 5
17:
1.1 jperkin 18: USE_GCC_RUNTIME= yes
1.10 ryoon 19: USE_LANGUAGES= c c++11
1.18 jperkin 20: USE_LIBTOOL= yes
1.207 he 21: USE_TOOLS+= bash ggrep gmake perl:build pkg-config
1.6 jperkin 22:
1.91 gdt 23: # The NetBSD bootstraps are built for NetBSD 8 (because rust doesn't
1.93 gdt 24: # build on 7). Mark earlier versions as broken.
25: BROKEN_ON_PLATFORM+= NetBSD-[1-7].*-*
1.213 he 26: # Bootstrap is built for NetBSD 9.x on these platforms:
27: BROKEN_ON_PLATFORM+= NetBSD-8.*-*arm*
28: BROKEN_ON_PLATFORM+= NetBSD-8.*-aarch64
29: BROKEN_ON_PLATFORM+= NetBSD-8.*-sparc64
1.90 gdt 30:
1.123 rillig 31: HAS_CONFIGURE= yes
32: PYTHON_FOR_BUILD_ONLY= yes
33: CONFIG_SHELL= ${PYTHONBIN}
34: CONFIGURE_SCRIPT= src/bootstrap/configure.py
35: CONFIGURE_ARGS+= --prefix=${PREFIX}
36: CONFIGURE_ARGS+= --mandir=${PREFIX}/${PKGMANDIR}
37: CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSCONFDIR}
38: CONFIGURE_ARGS+= --python=${PYTHONBIN}
39: CONFIGURE_ARGS+= --release-channel=stable
40: CONFIGURE_ARGS+= --local-rust-root=${RUST_BOOTSTRAP_PATH}
41: CONFIGURE_ARGS+= --enable-extended # Build and install cargo too.
42: CONFIGURE_ARGS+= --enable-rpath
43: CONFIGURE_ARGS+= --disable-codegen-tests
44: CONFIGURE_ARGS+= --disable-dist-src
45: CONFIGURE_ARGS+= --disable-llvm-static-stdcpp
46: CONFIGURE_ARGS+= --disable-ninja
1.99 jperkin 47:
1.209 he 48: # Include (optional) settings to cross-build rust
49: .include "cross.mk"
50:
51: .if !empty(TARGET)
1.70 he 52: # Use "dist" build target for cross compile of bootstrap
1.209 he 53: BUILD_TARGET= dist
54: .else
1.119 he 55: BUILD_TARGET= build
1.209 he 56: .endif
1.70 he 57:
1.66 adam 58: # Getting RPATH with $ORIGIN into bootstrap may be troublesome, so
1.55 he 59: # uncommenting the LD_LIBRARY_PATH setting may be required to run
60: # the bootstrap
1.77 tnn 61: PKGSRC_MAKE_ENV+= LD_LIBRARY_PATH=${RUST_BOOTSTRAP_PATH:Q}/lib
1.55 he 62:
1.18 jperkin 63: # This should allow us to perform "offline" builds (so cargo doesn't fetch
64: # dependencies during the build stage) but this isn't hooked up yet.
65: CONFIGURE_ARGS+= --enable-vendor
66:
1.41 jperkin 67: # cargo defaults to using the number of available CPUs
1.138 maya 68: MAKE_ENV+= CARGO_BUILD_JOBS=${_MAKE_JOBS_N}
1.41 jperkin 69:
1.64 jperkin 70: CFLAGS.SunOS+= -D_POSIX_PTHREAD_SEMANTICS
71:
1.158 joerg 72: UNLIMIT_RESOURCES+= cputime datasize virtualsize
1.1 jperkin 73:
74: TEST_TARGET= check
75:
1.12 wiz 76: # bin/* lib/*, but names vary
77: CHECK_RELRO_SUPPORTED= no
1.18 jperkin 78: CHECK_SSP_SUPPORTED= no
1.12 wiz 79:
1.1 jperkin 80: .include "../../mk/bsd.prefs.mk"
81:
1.184 he 82: .if !empty(MACHINE_PLATFORM:MNetBSD-*-powerpc) || \
1.199 he 83: !empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf) || \
84: !empty(TARGET:Marmv7-unknown-netbsd-eabihf)
1.184 he 85: # Bootstrapping on NetBSD/powerpc requires no debug-info from rustc
86: # (both for amd64->powerpc built and powerpc->powerpc built bootstrap bits)
1.199 he 87: # Also try to downsize the armv7 build.
1.184 he 88: CONFIGURE_ARGS+= --disable-debug
89: CONFIGURE_ARGS+= --disable-debug-assertions
90: CONFIGURE_ARGS+= --disable-llvm-release-debuginfo
91: CONFIGURE_ARGS+= --debuginfo-level=0
92: CONFIGURE_ARGS+= --debuginfo-level-rustc=0
93: CONFIGURE_ARGS+= --debuginfo-level-std=0
94: CONFIGURE_ARGS+= --debuginfo-level-tools=0
95: CONFIGURE_ARGS+= --debuginfo-level-tests=0
96: .endif
97:
98: # Only build the ARM target on/for this host, due to resource constraints
1.199 he 99: .if !empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf)
100: CONFIGURE_ARGS+= --set llvm.targets="ARM"
101: .endif
102: # When cross-building for ARM on X86, X86 needs to go along due
103: # to 2-stage build process
104: .if !empty(TARGET:Marmv7-unknown-netbsd-eabihf)
1.184 he 105: CONFIGURE_ARGS+= --set llvm.targets="ARM;X86"
106: .endif
107:
1.175 gdt 108: .if ${OPSYS} == "NetBSD"
1.179 gdt 109: # This block contains information about known trouble on NetBSD and workarounds.
110:
1.176 gdt 111: # Parallel builds failed on NetBSD due to dynamic linker locking bugs.
1.175 gdt 112: # \todo Explain if the build is believed to be sound if not parallel,
113: # or if a non-parallel build is merely more likely to work.
1.176 gdt 114: #
1.175 gdt 115: # See toolchain/54192 at
1.176 gdt 116: # http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=54192
117: # which was fixed in -current on 2020-04-19:
118: # http://mail-index.netbsd.org/source-changes/2020/04/16/msg116256.html
119: # http://mail-index.netbsd.org/source-changes/2020/04/19/msg116337.html
120: # These were pulled up to netbsd-9 on 2020-05-13:
121: # http://releng.netbsd.org/cgi-bin/req-9.cgi?show=907
122: # This has not been pulled up to netbsd-8
123: # \todo Explain if it's not applicable, shouldn't be pulled up, should be
124: # but hasn't, is too hard, etc.
1.177 gdt 125: #
126: # On pkgbuild for 2020Q1 9.0_RELEASE amd64, rust did not build despite
127: # MAKE_JOBS_SAFE=no, but setting MAKE_JOBS=1 resulted in success. (No
128: # PR is open for this.) \todo Understand and fix.
129: #
1.175 gdt 130: # If we aren't on 9-current, and are on 8.x or 9.x, avoid parallel.
1.176 gdt 131: # \todo Consider avoiding setting this on netbsd-9 past the fix.
1.178 rillig 132: . if ${MACHINE_PLATFORM:MNetBSD-[1-9].*} && !${MACHINE_PLATFORM:MNetBSD-9.99.*}
1.138 maya 133: MAKE_JOBS_SAFE= no
1.178 rillig 134: . endif
1.179 gdt 135:
136: # Open PRs
1.187 jperkin 137: #
1.179 gdt 138: # Broken package with PREFIX not /usr/pkg:
139: # http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=54453
140: #
141:
1.175 gdt 142: .endif
1.117 he 143:
1.1 jperkin 144: #
1.3 ryoon 145: # Under NetBSD, do not use DT_RUNPATH
146: #
1.4 ryoon 147: BUILDLINK_TRANSFORM.NetBSD+= rm:-Wl,--enable-new-dtags
1.3 ryoon 148:
1.53 ryoon 149: .PHONY: pre-build-fix
1.3 ryoon 150: #
1.1 jperkin 151: # Rust unfortunately requires itself to build. On platforms which aren't
1.6 jperkin 152: # supported by upstream (where they offer binary bootstraps), or where we do
153: # not trust random binaries from the Internet, we need to build and provide our
154: # own bootstrap. See the stage0-bootstrap below for more details.
1.1 jperkin 155: #
1.6 jperkin 156: DISTFILES:= ${DEFAULT_DISTFILES}
1.129 adam 157:
1.6 jperkin 158: .if !empty(MACHINE_PLATFORM:MDarwin-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.217 he 159: RUST_STAGE0_VER= 1.48.0
1.6 jperkin 160: RUST_ARCH:= x86_64-apple-darwin
161: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.10 ryoon 162: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
163: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 164: pre-build-fix:
1.6 jperkin 165: .endif
166: .if !empty(MACHINE_PLATFORM:MLinux-*-i386) || make(distinfo) || make (makesum) || make(mdi)
1.217 he 167: RUST_STAGE0_VER= 1.48.0
1.6 jperkin 168: RUST_ARCH:= i686-unknown-linux-gnu
169: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.10 ryoon 170: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
171: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 172: pre-build-fix:
1.6 jperkin 173: .endif
174: .if !empty(MACHINE_PLATFORM:MLinux-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.217 he 175: RUST_STAGE0_VER= 1.48.0
1.6 jperkin 176: RUST_ARCH:= x86_64-unknown-linux-gnu
177: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.10 ryoon 178: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
179: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 180: pre-build-fix:
1.6 jperkin 181: .endif
1.212 jperkin 182: #
183: # The SunOS target defaults to illumos as that's what the current bootstraps
184: # are built on. If you wish to target Oracle Solaris you'll need to create an
185: # x86_64-sun-solaris bootstrap and comment out the overrides.
186: #
1.69 jperkin 187: .if !empty(MACHINE_PLATFORM:MSunOS-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.212 jperkin 188: RUST_STAGE0_VER= 1.48.0
189: RUST_ARCH:= x86_64-unknown-illumos
1.69 jperkin 190: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
191: SITES.${RUST_STAGE0}= https://us-east.manta.joyent.com/pkgsrc/public/pkg-bootstraps/
192: DISTFILES:= ${DISTFILES} ${RUST_STAGE0}
193: RUST_BOOTSTRAP_PATH?= ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}
1.212 jperkin 194: # Override default "x86_64-sun-solaris" selection
195: CONFIGURE_ARGS+= --set=target.${RUST_ARCH}.llvm-config=${LLVM_CONFIG_PATH}
196: CONFIGURE_ARGS+= --build=${RUST_ARCH}
197: CONFIGURE_ARGS+= --host=${RUST_ARCH}
198: CONFIGURE_ARGS+= --target=${RUST_ARCH}
1.69 jperkin 199: pre-build-fix:
200: .endif
1.30 triaxx 201: .if !empty(MACHINE_PLATFORM:MFreeBSD-*-i386) || make(distinfo) || make (makesum) || make(mdi)
1.217 he 202: RUST_STAGE0_VER= 1.48.0
1.30 triaxx 203: RUST_ARCH:= i686-unknown-freebsd
204: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
205: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
206: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 207: pre-build-fix:
1.30 triaxx 208: .endif
209: .if !empty(MACHINE_PLATFORM:MFreeBSD-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.217 he 210: RUST_STAGE0_VER= 1.48.0
1.30 triaxx 211: RUST_ARCH:= x86_64-unknown-freebsd
212: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
213: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
214: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 215: pre-build-fix:
1.30 triaxx 216: .endif
1.15 ryoon 217: .if !empty(MACHINE_PLATFORM:MNetBSD-*-i386) || make(distinfo) || make (makesum) || make(mdi)
1.217 he 218: RUST_STAGE0_VER= 1.48.0
1.15 ryoon 219: RUST_ARCH= i686-unknown-netbsd
220: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
221: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.110 he 222: SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
223: SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
1.50 ryoon 224: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.26 jperkin 225: # Setting this changes it for every distfile, which doesn't match what is
226: # currently in distinfo.
227: #DIST_SUBDIR= ${PKGNAME}
1.15 ryoon 228: # For atomic ops
229: CFLAGS+= -march=i586
1.53 ryoon 230: pre-build-fix:
1.24 ryoon 231: ${TOOLS_PLATFORM.paxctl} +am ${WRKDIR}/rust-bootstrap/bin/cargo
1.161 maya 232: ${TOOLS_PLATFORM.paxctl} +am ${WRKDIR}/rust-bootstrap/bin/rustc
1.15 ryoon 233: .endif
1.6 jperkin 234: .if !empty(MACHINE_PLATFORM:MNetBSD-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.217 he 235: RUST_STAGE0_VER= 1.48.0
1.3 ryoon 236: RUST_ARCH= x86_64-unknown-netbsd
1.6 jperkin 237: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
1.10 ryoon 238: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
239: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.53 ryoon 240: pre-build-fix:
1.1 jperkin 241: .endif
1.70 he 242: .if !empty(MACHINE_PLATFORM:MNetBSD-*-powerpc) || make(distinfo) || make (makesum) || make(mdi)
1.217 he 243: RUST_STAGE0_VER= 1.48.0
1.70 he 244: RUST_ARCH= powerpc-unknown-netbsd
1.203 he 245:
246: # Cross-built against NetBSD 9.0
247: . if empty(OS_VERSION:M8.*) || make(distinfo) || make(makesum) || make(mdi)
248: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}90.tar.gz
249: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}90.tar.gz
250: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
251: SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
252: SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
253: . endif
254:
255: # Cross-built against NetBSD 8.0
256: . if !empty(OS_VERSION:M8.*) || make(distinfo) || make(makesum) || make(mdi)
257: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
258: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
259: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
260: SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
1.110 he 261: SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
1.203 he 262: . endif
263:
1.70 he 264: pre-build-fix:
265: .endif
1.78 he 266: .if !empty(MACHINE_PLATFORM:MNetBSD-*-aarch64) || make(distinfo) || make (makesum) || make(mdi)
1.217 he 267: RUST_STAGE0_VER= 1.48.0
1.78 he 268: RUST_ARCH= aarch64-unknown-netbsd
269: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
270: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
271: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.110 he 272: SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
273: SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
1.78 he 274: pre-build-fix:
275: .endif
1.70 he 276: .if !empty(MACHINE_PLATFORM:MNetBSD-*-sparc64) || make(distinfo) || make (makesum) || make(mdi)
1.220 he 277: RUST_STAGE0_VER= 1.49.0
1.70 he 278: RUST_ARCH= sparc64-unknown-netbsd
279: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
280: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
281: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.110 he 282: SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
283: SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
1.70 he 284: pre-build-fix:
285: .endif
286: .if !empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf) || make(distinfo) || make (makesum) || make(mdi)
287: RUST_ARCH= armv7-unknown-netbsd-eabihf
1.217 he 288: RUST_STAGE0_VER= 1.48.0
1.70 he 289: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
290: RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
291: DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
1.110 he 292: SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
293: SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
1.70 he 294: pre-build-fix:
295: .endif
1.1 jperkin 296:
1.209 he 297: # You may override RUST_BOOTSTRAP_PATH and RUST_ARCH in mk.conf
298: # if you have a local bootstrap compiler.
1.17 tnn 299: .if !defined(RUST_ARCH) && !defined(RUST_BOOTSTRAP_PATH)
1.6 jperkin 300: NOT_FOR_PLATFORM+= ${MACHINE_PLATFORM}
1.17 tnn 301: .else
302: RUST_BOOTSTRAP_PATH?= ${WRKDIR}/rust-bootstrap
1.2 jperkin 303: .endif
1.1 jperkin 304:
305: .if ${OPSYS} == "SunOS"
306: BUILD_DEPENDS+= coreutils>=0:../../sysutils/coreutils
1.118 jperkin 307: BUILD_DEPENDS+= gzip>=0:../../archivers/gzip
1.1 jperkin 308: TOOLS_CREATE+= md5sum
309: TOOLS_PATH.md5sum= ${PREFIX}/bin/gmd5sum
1.118 jperkin 310: TOOLS_PLATFORM.gzcat= ${PREFIX}/bin/gzip -cd
1.1 jperkin 311: .endif
312:
1.10 ryoon 313: SUBST_CLASSES+= rpath
1.40 jperkin 314: SUBST_STAGE.rpath= pre-configure
1.209 he 315: SUBST_FILES.rpath+= compiler/rustc_codegen_ssa/src/back/linker.rs
1.214 he 316: SUBST_FILES.rpath+= compiler/rustc_target/src/spec/netbsd_base.rs
1.127 ryoon 317: SUBST_FILES.rpath+= src/bootstrap/builder.rs
1.209 he 318: SUBST_FILES.rpath+= src/bootstrap/compile.rs
1.10 ryoon 319: SUBST_VARS.rpath= PREFIX
320:
1.174 jperkin 321: #
322: # Generate list of subst entries for various .cargo-checksum.json files. These
323: # are all handled together in one big substitution to simplify things rather
324: # than one substitution entry per file, but are kept separate below to ease
325: # updating and verification.
326: #
327: CKSUM_CRATES+= vendor/libc
1.217 he 328: CKSUMS+= 0134ce769d06b1b1f50ad15d1aa7bd8d44bcd2f66c6318dd906de8bc4a4044c7
329: CKSUMS+= 1107d18986be8af262f7a7c14761a9faf0228dc8a773379b9d7e8d2f711b3f37
1.174 jperkin 330:
331: CKSUM_CRATES+= vendor/lzma-sys
1.204 adam 332: CKSUMS+= 6fd5e9245db34c6f557b8bfcaf03db82fc88c3b06dbfbb5f03b2bcd138983ef9
333: CKSUMS+= 5e252578b5d266f6a4c8dc9f71ca7a91536ccb8c5c7d7753b82f12ec886459ef
1.188 jperkin 334:
1.205 ryoon 335: CKSUM_CRATES+= vendor/stacker
1.209 he 336: CKSUMS+= cee329550bad2ed1182abb71db9c24558a91b12e1eab8d9a48e23b997bb8f04e
337: CKSUMS+= 79915b243d02df1dc698f5c2de3a9356c6c296d2dedb06d9035dbcc2f8972cf4
338:
339: CKSUM_CRATES+= vendor/net2
1.210 ryoon 340: CKSUMS+= fd072307ebbaa01cfe1fd7553d7f42d27093b2bd32dd81d419d2e1c9423495a0
341: CKSUMS+= 9e146a847e1f726fa7d7eae224aaa925030287f99770f950a012cb398e088d12
1.209 he 342:
343: CKSUM_CRATES+= vendor/openssl-src
1.217 he 344: CKSUMS+= 03dcdaac7de880b860ecfe859ba2ac3e46c8f46a7bf948aa674147eebee421b0
345: CKSUMS+= 41ab6811d4ffde68f245e5097081ba8052a07a4b86df69a356ba11205e7e2210
1.209 he 346:
1.174 jperkin 347: SUBST_CLASSES+= cksum
348: SUBST_STAGE.cksum= pre-configure
349: .for crate in ${CKSUM_CRATES}
350: SUBST_FILES.cksum+= ${crate}/.cargo-checksum.json
351: .endfor
352: .for from to in ${CKSUMS}
353: SUBST_SED.cksum+= -e 's,${from},${to},g'
354: .endfor
355:
1.10 ryoon 356: post-extract:
1.17 tnn 357: set -e; \
1.51 jperkin 358: if ${TEST} -e ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}/install.sh \
1.17 tnn 359: -a ! -e ${RUST_BOOTSTRAP_PATH}/bin/rustc; then \
360: cd ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}; \
361: ${TOOLS_BASH} ./install.sh --prefix=${RUST_BOOTSTRAP_PATH}; \
362: cd ${WRKDIR}/rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}; \
363: ${TOOLS_BASH} ./install.sh --prefix=${RUST_BOOTSTRAP_PATH}; \
364: fi
1.55 he 365: .if ${OPSYS} == "NetBSD"
1.61 he 366: SDIR=${WRKDIR}/scripts; \
367: ${MKDIR} $${SDIR}; \
368: cd $${SDIR}; \
369: ${RM} -f c++-wrap; \
370: ${RM} -f clang++-wrap; \
371: ${RM} -f clang-wrap; \
372: ${CP} ${.CURDIR}/files/gcc-wrap .; \
373: ${CHMOD} +x gcc-wrap; \
374: ${LN} -s gcc-wrap c++-wrap; \
375: ${LN} -s gcc-wrap clang++-wrap; \
376: ${LN} -s gcc-wrap clang-wrap
1.55 he 377: .endif
1.17 tnn 378:
1.30 triaxx 379: .if ${OPSYS} == "FreeBSD"
380: MAKE_ENV+= OPENSSL_DIR=${SSLBASE}
381: .endif
382:
1.73 tnn 383: .if ${OPSYS} == "NetBSD" && !empty(PKGSRC_COMPILER:Mclang) && !exists(/lib/libgcc_s.so)
384: BUILDLINK_TRANSFORM+= rm:-lgcc_s
385: MAKE_ENV+= PKGSRC_HAVE_LIBCPP=yes
386: .endif
387:
1.53 ryoon 388: pre-build: pre-build-fix
1.73 tnn 389: .if ${OPSYS} == "NetBSD" && !empty(PKGSRC_COMPILER:Mclang) && !exists(/lib/libgcc_s.so)
390: cp ${FILESDIR}/libgcc_s.so.1 ${RUST_BOOTSTRAP_PATH}/lib/.
391: .endif
1.51 jperkin 392:
1.216 he 393: #
394: # These are essentially copies of the "all", "test", and "install" Makefile
395: # targets, but are duplicated here so that we can specify -j.
396: #
1.10 ryoon 397: do-build:
1.216 he 398: ${RUN}${_ULIMIT_CMD} \
399: cd ${WRKSRC} && \
400: ${SETENV} ${MAKE_ENV} \
401: sh -c "if [ \"${BUILD_TARGET}\" = \"dist\" ]; then \
402: unset DESTDIR; \
403: ${PYTHONBIN} ./x.py -v \
404: ${BUILD_TARGET} -j ${_MAKE_JOBS_N}; \
405: else \
406: ${PYTHONBIN} ./x.py -v \
407: ${BUILD_TARGET} --stage 2 -j ${_MAKE_JOBS_N} && \
408: ${PYTHONBIN} ./x.py -v \
409: doc --stage 2 -j ${_MAKE_JOBS_N}; \
410: fi"
411:
412: do-test:
413: ${RUN}${_ULIMIT_CMD} \
414: cd ${WRKSRC} && \
415: ${SETENV} ${MAKE_ENV} \
416: ${PYTHONBIN} ./x.py -v test -j ${_MAKE_JOBS_N}
1.10 ryoon 417:
418: do-install:
1.216 he 419: ${RUN}${_ULIMIT_CMD} \
420: cd ${WRKSRC} && \
421: ${SETENV} ${MAKE_ENV} ${INSTALL_ENV} \
1.138 maya 422: ${PYTHONBIN} ./x.py -v install -j ${_MAKE_JOBS_N}
1.10 ryoon 423:
1.131 minskim 424: .if ${OPSYS} == "Darwin"
425: .PHONY: fix-darwin-install-name
426: post-install: fix-darwin-install-name
427: fix-darwin-install-name:
1.189 schmonz 428: for f in ${DESTDIR}${PREFIX}/lib/librustc_macros-*.dylib \
1.202 schmonz 429: ${DESTDIR}${PREFIX}/lib/libtracing_attributes-*.dylib \
1.189 schmonz 430: ${DESTDIR}${PREFIX}/lib/libchalk_derive-*.dylib; do \
1.131 minskim 431: install_name_tool -id `${ECHO} $$f | ${SED} -e 's,${DESTDIR},,g'` $$f; \
432: done
433: .endif
434:
1.188 jperkin 435: GENERATE_PLIST+= ${FIND} ${DESTDIR}${PREFIX} \( -type f -o -type l \) -print | \
436: ${SED} -e 's,${DESTDIR}${PREFIX}/,,' | ${SORT} ;
437:
1.6 jperkin 438: # Create a relocatable stage2 bootstrap from the bits we just built that can be
439: # used to build the next version of rust. Currently only tested on SmartOS.
440: #
1.216 he 441: # Use the alternate BOOTSTRAP_NAME when creating a nightly release.
442: #
443: #BOOTSTRAP_NAME= ${PKGNAME_NOREV:C/rust/rust-nightly/}-${RUST_ARCH}
444: BOOTSTRAP_NAME= ${PKGNAME_NOREV}-${RUST_ARCH}
445: BOOTSTRAP_TMPDIR= ${WRKDIR}/${BOOTSTRAP_NAME}
1.219 wiz 446: USE_TOOLS+= bsdtar
1.6 jperkin 447:
1.55 he 448: # The NetBSD part is so far untested, because I could not convince
449: # the rust build to use the gcc wrapper when building natively,
450: # so that I could get a placeholder in the RPATH, because chrpath
451: # cannot extend the length of the RPATH...
1.121 jperkin 452: ELFEDIT?= /usr/bin/elfedit
1.55 he 453:
1.188 jperkin 454: .PHONY: stage0-bootstrap
1.6 jperkin 455: stage0-bootstrap: install
1.26 jperkin 456: ${RM} -rf ${BOOTSTRAP_TMPDIR}
1.6 jperkin 457: ${MKDIR} ${BOOTSTRAP_TMPDIR}
1.55 he 458: .if ${OPSYS} == "NetBSD"
459: (cd ${BOOTSTRAP_TMPDIR}; \
460: DISTDIR=${WRKSRC}/bild/dist; \
461: VER_ARCH=${PKGVERSION}-${RUST_ARCH}; \
462: RUSTC=rustc-$${VER_ARCH}; \
463: RUSTC_FILE=$${RUSTC}.tar.gz; \
464: RUST_STD=rust-std-$${VER_ARCH}; \
465: RUST_STD_FILE=$${RUST_STD}.tar.gz; \
466: ${GTAR} -xzf $${DISTDIR}/$${RUSTC_FILE}; \
467: (cd ${RUSTC}; \
468: RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN/../lib'; \
469: for f in rls-preview/bin/rls rustc/bin/rustc rustc/bin/rustdoc; do \
470: chrpath -r $$RPATH $$f; \
471: done; \
472: RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN'; \
473: for f in rustc/lib/*.so*; do \
474: chrpath -r $$RPATH $$f; \
475: done; \
476: RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN:$$ORIGIN/../../..'; \
477: for f in rustc/lib/rustlib/*/*/*.so*; do \
478: chrpath -r $$RPATH $$f; \
479: done;); \
480: ${GTAR} -czf $${RUSTC_FILE} $${RUSTC}; \
481: ${CP} $${DISTDIR}/$${RUST_STD_FILE} .; \
1.66 adam 482: ${ECHO} "Fixed stage0 bootstrap in ${BOOTSTRAP_TMPDIR}:"; \
483: ${ECHO} "$${RUSTC_FILE}"; \
484: ${ECHO} "$${RUST_STD_FILE}"; \
1.55 he 485: )
486: .endif
487: .if ${OS_VARIANT} == "SmartOS"
1.6 jperkin 488: ${CP} -R ${DESTDIR}/${PREFIX}/bin ${BOOTSTRAP_TMPDIR}/
489: ${CP} -R ${DESTDIR}/${PREFIX}/lib ${BOOTSTRAP_TMPDIR}/
1.26 jperkin 490: ${MKDIR} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc
1.6 jperkin 491: for lib in libgcc_s.so.1 libssp.so.0 libstdc++.so.6; do \
492: ${CP} `${PKG_CC} -print-file-name=$${lib}` \
1.26 jperkin 493: ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \
494: done
1.216 he 495: # direct dependencies
1.166 jperkin 496: for lib in libLLVM-10.so libcrypto.so.1.1 libcurl.so.4 \
1.146 jperkin 497: libssl.so.1.1 libz.so.1; do \
1.26 jperkin 498: ${CP} ${PREFIX}/lib/$${lib} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \
1.6 jperkin 499: done
1.216 he 500: # libcurl dependencies
1.121 jperkin 501: for lib in libiconv.so.2 libidn2.so.0 libintl.so.8 liblber-2.4.so.2 \
502: libldap-2.4.so.2 libnghttp2.so.14 libsasl2.so.3 \
503: libssh2.so.1 libunistring.so.2; do \
504: ${CP} ${PREFIX}/lib/$${lib} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \
505: done
1.188 jperkin 506: for f in ${BOOTSTRAP_TMPDIR}/bin/*; do \
507: /bin/file -b "$$f" | grep ^ELF >/dev/null || continue; \
1.121 jperkin 508: ${ELFEDIT} -e 'dyn:runpath $$ORIGIN/../lib:$$ORIGIN/../lib/pkgsrc' $$f; \
1.26 jperkin 509: done
510: for f in ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/*.so*; do \
1.121 jperkin 511: ${ELFEDIT} -e 'dyn:runpath $$ORIGIN' $$f; \
1.6 jperkin 512: done
513: for f in ${BOOTSTRAP_TMPDIR}/lib/*.so*; do \
1.121 jperkin 514: ${ELFEDIT} -e 'dyn:runpath $$ORIGIN:$$ORIGIN/pkgsrc' $$f; \
1.6 jperkin 515: done
1.187 jperkin 516: for f in ${BOOTSTRAP_TMPDIR}/lib/rustlib/*/*/*.so*; do \
1.121 jperkin 517: ${ELFEDIT} -e 'dyn:runpath $$ORIGIN:$$ORIGIN/../../..:$$ORIGIN/../../../pkgsrc' $$f; \
1.6 jperkin 518: done
519: (cd ${WRKDIR}; \
1.216 he 520: ${GTAR} -zcf ${BOOTSTRAP_NAME}.tar.gz ${BOOTSTRAP_NAME})
1.55 he 521: .endif
1.6 jperkin 522:
1.108 nia 523: .include "options.mk"
524:
1.67 jperkin 525: # These dependencies currently use the bundled sources as they require
526: # development features not yet available in released versions.
527: #
528: #.include "../../devel/libgit2/buildlink3.mk"
529: #.include "../../security/libssh2/buildlink3.mk"
530: #.include "../../www/http-parser/buildlink3.mk"
1.142 he 531: #.include "../../devel/jemalloc/buildlink3.mk"
532:
1.193 gdt 533: ## Issues specific to: bootstrap AND NetBSD follow
534:
1.221 ! nia 535: # rust-1.48.0 i386 bootstraps are built for 8.0 and still depend on
! 536: # base OpenSSL for cargo. Pull in compat80 on 9.x and newer.
! 537: .if !empty(MACHINE_PLATFORM:MNetBSD-*-i386) && empty(OS_VERSION:M8.*)
1.159 rillig 538: DEPENDS+= compat80>=0:../../emulators/compat80
1.196 gdt 539: .endif
540:
1.221 ! nia 541: # As of 2021-02-25 cargo is only a static binary in x86_64,
! 542: # powerpc, and sparc64 bootstraps.
! 543: # he@ says this should be fixed after the bootstraps are updated
! 544: # to 1.49.
! 545: .if !empty(MACHINE_PLATFORM:MNetBSD-*-i386) || \
! 546: !empty(MACHINE_PLATFORM:MNetBSD-*-aarch64) || \
! 547: !empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf)
! 548: BUILDLINK_API_DEPENDS.nghttp2+= nghttp2>=1.41.0
! 549: BUILDLINK_API_DEPENDS.curl+= curl>=7.67.0
! 550: . include "../../www/curl/buildlink3.mk"
! 551: . include "../../security/openssl/buildlink3.mk"
1.142 he 552: .endif
1.67 jperkin 553:
1.209 he 554: # This is for when we build natively:
1.221 ! nia 555: .if !empty(MACHINE_PLATFORM:MNetBSD-*-powerpc) || \
! 556: !empty(MACHINE_PLATFORM:MNetBSD-*-i386)
1.216 he 557: # LLVM needs libatomic for 64-bit atomics on powerpc and i386
1.209 he 558: .include "../../devel/libatomic/buildlink3.mk"
1.216 he 559: # Make those libraries available via a unique directory:
560: DEPENDS+= libatomic-links>=0:../../devel/libatomic-links
1.209 he 561: .endif
562:
1.10 ryoon 563: .include "../../devel/zlib/buildlink3.mk"
1.1 jperkin 564: .include "../../lang/python/tool.mk"
565: .include "../../mk/bsd.pkg.mk"
CVSweb <webmaster@jp.NetBSD.org>