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

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

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

CVSweb <webmaster@jp.NetBSD.org>