[BACK]Return to Makefile CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / pkgsrc / lang / rust

Annotation of pkgsrc/lang/rust/Makefile, Revision 1.59

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

CVSweb <webmaster@jp.NetBSD.org>