Annotation of pkgsrc/lang/rust/Makefile, Revision 1.6
1.6 ! jperkin 1: # $NetBSD: Makefile,v 1.5 2016/11/14 20:56:10 ryoon Exp $
1.1 jperkin 2:
1.6 ! jperkin 3: DISTNAME= rustc-1.15.1-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
9: HOMEPAGE= http://www.rust-lang.org/
10: COMMENT= Safe, concurrent, practical language
11: LICENSE= mit OR apache-2.0
12:
13: USE_GCC_RUNTIME= yes
14: USE_LANGUAGES= c c++
15: USE_TOOLS+= bash gmake
16:
17: HAS_CONFIGURE= yes
18: CONFIGURE_ARGS+= --prefix=${PREFIX}
19: CONFIGURE_ARGS+= --build=${RUST_ARCH}
20: CONFIGURE_ARGS+= --mandir=${PREFIX}/${PKGMANDIR}
21: CONFIGURE_ARGS+= --release-channel=stable
22: CONFIGURE_ENV+= CFG_DISABLE_CODEGEN_TESTS=1
23:
1.6 ! jperkin 24: #
! 25: # Use the Makefile-based build system. Unfortunately this will be going away,
! 26: # likely in the next release, forcing us to use a cargo-based system which will
! 27: # require further binary bootstraps. Hold out as long as we can.
! 28: #
! 29: CONFIGURE_ARGS+= --disable-rustbuild
! 30:
1.1 jperkin 31: UNLIMIT_RESOURCES+= cputime
32:
33: REPLACE_BASH+= src/rust-installer/gen-install-script.sh
34: REPLACE_BASH+= src/rust-installer/gen-installer.sh
35:
36: #
37: # Lots of per-platform specific documentation, e.g. for each system call,
38: # making it difficult to PLIST. If it ends up being important we'll just have
39: # to go with lots of PLIST.${OPSYS}
40: #
41: CONFIGURE_ARGS+= --disable-docs
42:
43: TEST_TARGET= check
44:
45: # Required for LLVM (-std=c++11)
46: GCC_REQD+= 4.8
47:
48: .include "../../mk/bsd.prefs.mk"
49:
50: #
51: # Use jemalloc on systems where rust does by default too.
52: #
53: PLIST_VARS+= jemalloc
54: .if ${OPSYS} == "Linux" || ${OPSYS} == "Darwin"
55: . include "../../devel/jemalloc/buildlink3.mk"
56: CONFIGURE_ARGS+= --jemalloc-root=${BUILDLINK_PREFIX.jemalloc}/lib
57: PLIST.jemalloc= yes
58: .else
59: CONFIGURE_ARGS+= --disable-jemalloc
60: .endif
61:
62: #
1.3 ryoon 63: # Under NetBSD, do not use DT_RUNPATH
64: #
1.4 ryoon 65: BUILDLINK_TRANSFORM.NetBSD+= rm:-Wl,--enable-new-dtags
1.3 ryoon 66:
67: #
1.1 jperkin 68: # Can't use pkgsrc llvm on SunOS at the moment due to a relocation error.
69: #
70: .if ${OPSYS} != "SunOS"
71: . include "../../lang/llvm/buildlink3.mk"
72: CONFIGURE_ARGS+= --llvm-root=${BUILDLINK_PREFIX.llvm}
73: .endif
74:
75: #
76: # Rust unfortunately requires itself to build. On platforms which aren't
1.6 ! jperkin 77: # supported by upstream (where they offer binary bootstraps), or where we do
! 78: # not trust random binaries from the Internet, we need to build and provide our
! 79: # own bootstrap. See the stage0-bootstrap below for more details.
1.1 jperkin 80: #
1.6 ! jperkin 81: CONFIGURE_ARGS+= --enable-local-rust
! 82: CONFIGURE_ARGS+= --local-rust-root=${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}/rustc
1.1 jperkin 83: #
1.6 ! jperkin 84: DISTFILES:= ${DEFAULT_DISTFILES}
! 85: RUST_STAGE0_VER= 1.14.0
1.1 jperkin 86: #
1.6 ! jperkin 87: .if !empty(MACHINE_PLATFORM:MDarwin-*-i386) || make(distinfo) || make (makesum) || make(mdi)
! 88: RUST_ARCH:= i686-apple-darwin
! 89: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
! 90: DISTFILES:= ${DISTFILES} ${RUST_STAGE0}
! 91: .endif
! 92: .if !empty(MACHINE_PLATFORM:MDarwin-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
! 93: RUST_ARCH:= x86_64-apple-darwin
! 94: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
! 95: DISTFILES:= ${DISTFILES} ${RUST_STAGE0}
! 96: .endif
! 97: .if !empty(MACHINE_PLATFORM:MLinux-*-i386) || make(distinfo) || make (makesum) || make(mdi)
! 98: RUST_ARCH:= i686-unknown-linux-gnu
! 99: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
! 100: DISTFILES:= ${DISTFILES} ${RUST_STAGE0}
! 101: .endif
! 102: .if !empty(MACHINE_PLATFORM:MLinux-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
! 103: RUST_ARCH:= x86_64-unknown-linux-gnu
! 104: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
! 105: DISTFILES:= ${DISTFILES} ${RUST_STAGE0}
! 106: .endif
! 107: .if !empty(MACHINE_PLATFORM:MSunOS-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
! 108: RUST_ARCH:= x86_64-sun-solaris
! 109: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
! 110: SITES.${RUST_STAGE0}= https://us-east.manta.joyent.com/pkgsrc/public/pkg-bootstraps/
! 111: DISTFILES:= ${DISTFILES} ${RUST_STAGE0}
! 112: .endif
! 113: .if !empty(MACHINE_PLATFORM:MNetBSD-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
1.3 ryoon 114: RUST_ARCH= x86_64-unknown-netbsd
1.6 ! jperkin 115: RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
! 116: DISTFILES:= ${DISTFILES} ${RUST_STAGE0}
1.1 jperkin 117: .endif
118:
1.6 ! jperkin 119: .if !defined(RUST_ARCH)
! 120: NOT_FOR_PLATFORM+= ${MACHINE_PLATFORM}
1.2 jperkin 121: .endif
1.1 jperkin 122:
123: PLIST_SRC= PLIST
124: .if ${OPSYS} == "Darwin"
125: PLIST_SRC+= PLIST.lldb
126: .else
127: PLIST_SRC+= PLIST.gdb
128: .endif
129:
130: OPSYSVARS+= SOEXT
131: SOEXT.Darwin= dylib
132: SOEXT.*= so
133:
1.6 ! jperkin 134: RUST_VERHASH= 570da8f8
1.1 jperkin 135: PLIST_SUBST+= RUST_ARCH=${RUST_ARCH:Q}
136: PLIST_SUBST+= RUST_VERHASH=${RUST_VERHASH:Q}
137: PLIST_SUBST+= SOEXT=${SOEXT:Q}
138: PRINT_PLIST_AWK+= { gsub(/${RUST_ARCH}/, "$${RUST_ARCH}") }
139: PRINT_PLIST_AWK+= { gsub(/${RUST_VERHASH}/, "$${RUST_VERHASH}") }
140: PRINT_PLIST_AWK+= { gsub(/\.${SOEXT}/, ".$${SOEXT}") }
141:
142: .if ${OPSYS} == "SunOS"
143: BUILD_DEPENDS+= grep>=0:../../textproc/grep
144: BUILD_DEPENDS+= coreutils>=0:../../sysutils/coreutils
145: TOOLS_PATH.grep= ${PREFIX}/bin/ggrep
146: TOOLS_CREATE+= md5sum
147: TOOLS_PATH.md5sum= ${PREFIX}/bin/gmd5sum
148:
149: SUBST_CLASSES+= ranlib
150: SUBST_STAGE.ranlib= pre-configure
151: SUBST_FILES.ranlib= mk/rt.mk
152: SUBST_SED.ranlib= -e 's,RANLIB=.* \\,RANLIB="true" \\,g'
153: .endif
154:
155: post-install:
156: ${RM} -f ${DESTDIR}${PREFIX}/lib/rustlib/install.log
157:
158: .if ${OPSYS} == "Darwin"
159: .PHONY: fix-darwin-install-name
160: post-install: fix-darwin-install-name
161: fix-darwin-install-name:
162: . for bin in rustc rustdoc
163: otool -XL ${DESTDIR}${PREFIX}/bin/${bin} \
164: | ${GREP} '@rpath' | while read rpath rest; do \
165: install_name_tool -change $$rpath \
166: `${ECHO} $$rpath | ${SED} -e 's,@rpath,${PREFIX}/lib,g'` \
167: ${DESTDIR}${PREFIX}/bin/${bin}; \
168: done
169: . endfor
170: . for libdir in lib lib/rustlib/${RUST_ARCH}/lib
171: for f in ${DESTDIR}${PREFIX}/${libdir}/lib*.dylib; do \
172: [ ! -f $$f ] && continue; \
173: install_name_tool -id `${ECHO} $$f | ${SED} -e 's,${DESTDIR},,g'` $$f; \
174: otool -XL $$f | grep '@rpath' | while read rpath rest; do \
175: install_name_tool -change $$rpath \
176: `${ECHO} $$rpath | ${SED} -e 's,@rpath,${PREFIX}/${libdir},g'` \
177: $$f; \
178: done; \
179: done
180: . endfor
181: .endif
182:
1.6 ! jperkin 183: #
! 184: # Create a relocatable stage2 bootstrap from the bits we just built that can be
! 185: # used to build the next version of rust. Currently only tested on SmartOS.
! 186: #
! 187: BOOTSTRAP_TMPDIR= ${WRKDIR}/${PKGNAME}-${RUST_ARCH}/rustc
! 188: USE_TOOLS+= gtar
! 189:
! 190: stage0-bootstrap: install
! 191: ${MKDIR} ${BOOTSTRAP_TMPDIR}
! 192: ${CP} -R ${DESTDIR}/${PREFIX}/bin ${BOOTSTRAP_TMPDIR}/
! 193: ${CP} -R ${DESTDIR}/${PREFIX}/lib ${BOOTSTRAP_TMPDIR}/
! 194: .if ${OS_VARIANT} == "SmartOS"
! 195: for lib in libgcc_s.so.1 libssp.so.0 libstdc++.so.6; do \
! 196: ${CP} `${PKG_CC} -print-file-name=$${lib}` \
! 197: ${BOOTSTRAP_TMPDIR}/lib/; \
! 198: done
! 199: for f in ${BOOTSTRAP_TMPDIR}/bin/rust{c,doc}; do \
! 200: /usr/bin/elfedit -e 'dyn:runpath $$ORIGIN/../lib' $$f; \
! 201: done
! 202: for f in ${BOOTSTRAP_TMPDIR}/lib/*.so*; do \
! 203: /usr/bin/elfedit -e 'dyn:runpath $$ORIGIN' $$f; \
! 204: done
! 205: for f in ${BOOTSTRAP_TMPDIR}/lib/rustlib/${RUST_ARCH}/lib/*.so*; do \
! 206: /usr/bin/elfedit -e 'dyn:runpath $$ORIGIN:$$ORIGIN/../../..' $$f; \
! 207: done
! 208: .endif
! 209: (cd ${WRKDIR}; \
! 210: ${GTAR} -zcf ${PKGNAME}-${RUST_ARCH}.tar.gz ${PKGNAME}-${RUST_ARCH})
! 211:
1.1 jperkin 212: .include "../../devel/cmake/buildlink3.mk"
213: .include "../../lang/python/tool.mk"
214: .include "../../mk/bsd.pkg.mk"
CVSweb <webmaster@jp.NetBSD.org>