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

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

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

CVSweb <webmaster@jp.NetBSD.org>