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

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

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

CVSweb <webmaster@jp.NetBSD.org>