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

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>