diff options
Diffstat (limited to 'cross/COMMON/cross.mk')
-rw-r--r-- | cross/COMMON/cross.mk | 216 |
1 files changed, 139 insertions, 77 deletions
diff --git a/cross/COMMON/cross.mk b/cross/COMMON/cross.mk index 9a3cd147d17..b618c5e05a9 100644 --- a/cross/COMMON/cross.mk +++ b/cross/COMMON/cross.mk @@ -1,4 +1,4 @@ -# $NetBSD: cross.mk,v 1.3 1998/08/20 15:16:44 tsarna Exp $ +# $NetBSD: cross.mk,v 1.4 1999/01/04 22:37:30 tv Exp $ # Shared definitions for building a cross-compile environment. @@ -13,8 +13,8 @@ TARGET_DIR= ${PREFIX}/${TARGET_ARCH} COMMON_DIR= ${PKGSRCDIR}/cross/COMMON PLIST_PRE?= ${PKGDIR}/PLIST -do-install: do-install-dirs -do-install-dirs: +pre-install: pre-install-dirs +pre-install-dirs: ${INSTALL_DATA_DIR} ${PREFIX} ${INSTALL_DATA_DIR} ${PREFIX}/bin ${INSTALL_DATA_DIR} ${PREFIX}/lib @@ -23,67 +23,100 @@ do-install-dirs: ${INSTALL_DATA_DIR} ${TARGET_DIR}/include ${INSTALL_DATA_DIR} ${TARGET_DIR}/lib -.if defined(USE_CROSS_GNU) +.if defined(USE_CROSS_BINUTILS) BINUTILS_DISTNAME= binutils-2.9.1 +BINUTILS_WRKSRC= ${WRKDIR}/${BINUTILS_DISTNAME} + CROSS_DISTFILES+= ${BINUTILS_DISTNAME}.tar.gz MASTER_SITES+= ${MASTER_SITE_GNU} CONFIGURE_ARGS+= --with-gnu-as --with-gnu-ld +DEPENDS+= cross-binutils-2.9.1.0:../../cross/binutils PLIST_PRE+= ${COMMON_DIR}/PLIST-binutils -#CROSS_PATCHFILES+= ${COMMON_DIR}/patches-binutils/patch-* -USE_CROSS_EGCS= yes - -post-extract: post-extract-binutils -post-extract-binutils: - @cd ${WRKSRC} && \ - ${LN} -sf ../${BINUTILS_DISTNAME}/bfd && \ - ${LN} -sf ../${BINUTILS_DISTNAME}/binutils && \ - ${LN} -sf ../${BINUTILS_DISTNAME}/gas && \ - ${LN} -sf ../${BINUTILS_DISTNAME}/ld && \ - ${LN} -sf ../${BINUTILS_DISTNAME}/opcodes && \ - ${LN} -sf ../gas/as-new gcc/as && \ - ${LN} -sf ../ld/ld-new gcc/ld - @cd ${WRKDIR}/${BINUTILS_DISTNAME} && \ - ${RM} -rf libiberty texinfo && \ - ${LN} -sf ../${EGCS_DISTNAME}/libiberty - -do-install: do-install-binutils -do-install-binutils: - @cd ${WRKSRC}/binutils && ${GMAKE} install-exec - @cd ${WRKSRC}/gas && ${GMAKE} install-exec - @cd ${WRKSRC}/ld && ${GMAKE} install-exec - for file in addr2line c++filt gasp objcopy objdump size strings; do \ - ${LN} -f ${PREFIX}/bin/${TARGET_ARCH}-$$file ${TARGET_DIR}/bin/$$file; \ + +AS_FOR_TARGET= ${BINUTILS_WRKSRC}/gas/as-new +AR_FOR_TARGET= ${WRKDIR}/ar +NM_FOR_TARGET= ${WRKDIR}/nm +RANLIB_FOR_TARGET= ${WRKDIR}/ranlib +LD_FOR_TARGET= ${WRKDIR}/ld + +pre-patch: binutils-patch +pre-configure: binutils-configure +do-build: binutils-build +do-install: binutils-install + +binutils-patch: + @for i in ${COMMON_DIR}/patches-binutils/patch-*; do \ + ${PATCH} -d ${BINUTILS_WRKSRC} --forward --quiet -E < $$i; \ + done + +binutils-configure: + @cd ${BINUTILS_WRKSRC} && ${SETENV} CC="${CC}" ac_cv_path_CC="${CC}" \ + CFLAGS="${CFLAGS}" ${CONFIGURE_ENV} ./configure \ + --prefix=${PREFIX} --host=${MACHINE_GNU_ARCH}--netbsd \ + --target=${TARGET_ARCH} + +binutils-build: + @cd ${BINUTILS_WRKSRC}/bfd && ${SETENV} ${MAKE_ENV} \ + ${MAKE_PROGRAM} ${MAKE_FLAGS} bfd.h + @cd ${BINUTILS_WRKSRC}/libiberty && ${SETENV} ${MAKE_ENV} \ + ${MAKE_PROGRAM} ${MAKE_FLAGS} all + @cd ${BINUTILS_WRKSRC}/gas && ${SETENV} ${MAKE_ENV} \ + ${MAKE_PROGRAM} ${MAKE_FLAGS} as-new + ${LINK.c} -o ${WRKDIR}/ar \ + -DPREFIX=\"${PREFIX}\" \ + -DGNUTARGET=\"${BINUTILS_GNUTARGET}\" \ + ${COMMON_DIR}/buwrapper.c + @cd ${WRKDIR} && \ + ${LN} -f ar nm && \ + ${LN} -f ar ranlib + ${LINK.c} -o ${WRKDIR}/ld \ + -DPREFIX=\"${PREFIX}\" \ + -DGNUTARGET=\"${BINUTILS_GNUTARGET}\" \ + -DLDEMULATION=\"${BINUTILS_LDEMULATION}\" \ + -DLD_RPATH_LINK=\"${TARGET_DIR}/lib\" \ + ${COMMON_DIR}/buwrapper.c + +binutils-install: + ${INSTALL_PROGRAM} ${BINUTILS_WRKSRC}/gas/as-new ${TARGET_DIR}/bin/as + ${INSTALL_PROGRAM} ${WRKDIR}/ar ${TARGET_DIR}/bin/ar + ${INSTALL_PROGRAM} ${WRKDIR}/ld ${TARGET_DIR}/bin/ld + for i in addr2line nm objcopy objdump ranlib size strings strip ${BINUTILS_EXTRAS}; do \ + ${LN} -f ${TARGET_DIR}/bin/ar ${TARGET_DIR}/bin/$$i; \ + done + for i in addr2line ar as ld nm objcopy objdump ranlib size strings strip ${BINUTILS_EXTRAS}; do \ + ${LN} -f ${TARGET_DIR}/bin/$$i ${PREFIX}/bin/${TARGET_ARCH}-$$i; \ done .endif .if defined(USE_CROSS_EGCS) -#.if defined(USE_CROSS_EGCS_SNAPSHOT) -EGCS_DISTNAME= egcs-19980803 -EGCS_DISTDIR= snapshots/1998-08-03 -EGCS_INTVERSION= egcs-2.91.53 -EGCS_PLIST_PRE= ${COMMON_DIR}/PLIST-egcs-ss -CROSS_PATCHFILES+= ${COMMON_DIR}/patches-egcs-ss/patch-* -#.else -#EGCS_DISTNAME= egcs-1.1 -#EGCS_DISTDIR= releases/egcs-1.1 -#EGCS_INTVERSION= egcs-2.??.?? -#.endif - -CROSS_DISTFILES+= ${EGCS_DISTNAME}.tar.gz -MASTER_SITES+= ftp://egcs.cygnus.com/pub/egcs/${EGCS_DISTDIR}/ -WRKSRC= ${WRKDIR}/${EGCS_DISTNAME} -PLIST_PRE+= ${EGCS_PLIST_PRE} - -GNU_CONFIGURE= yes -CONFIGURE_ARGS+= --target=${TARGET_ARCH} \ - --enable-version-specific-runtime-libs -CONFIGURE_ENV+= CXXFLAGS="${CXXFLAGS}" +EGCS_DISTNAME= egcs-1.1.1 +EGCS_DISTDIR= releases/${EGCS_DISTNAME} +EGCS_INTVERSION= egcs-2.91.60 +EGCS_PATCHBUNDLE= ${EGCS_DISTNAME}-NetBSD-19980104.diff.gz +EGCS_WRKSRC= ${WRKDIR}/${EGCS_DISTNAME} +# XXX PLIST support for fewer languages not yet complete +EGCS_LANGUAGES?= c c++ f77 objc + +CROSS_DISTFILES+= ${EGCS_DISTNAME}.tar.gz ${EGCS_PATCHBUNDLE} +MASTER_SITES+= ftp://egcs.cygnus.com/pub/egcs/${EGCS_DISTDIR}/ \ + ${MASTER_SITE_LOCAL} +PLIST_PRE+= ${COMMON_DIR}/PLIST-egcs USE_GMAKE= yes -MAKE_FLAGS+= CC_FOR_TARGET="${WRKSRC}/gcc/xgcc -B${WRKSRC}/gcc/ ${CFLAGS_FOR_TARGET}" \ - GCC_FOR_TARGET='$${CC_FOR_TARGET}' \ - CXX_FOR_TARGET='$${CC_FOR_TARGET}' \ + +CC_FOR_TARGET= ${EGCS_WRKSRC}/gcc/xgcc -B${EGCS_WRKSRC}/gcc/ ${CFLAGS_FOR_TARGET} +CXX_FOR_TARGET= ${CC_FOR_TARGET} + +EGCS_MAKE_FLAGS= CC_FOR_TARGET="${CC_FOR_TARGET}" \ + GCC_FOR_TARGET="${CC_FOR_TARGET}" \ + CXX_FOR_TARGET="${CXX_FOR_TARGET}" \ + AS_FOR_TARGET="${AS_FOR_TARGET}" \ + AR_FOR_TARGET="${AR_FOR_TARGET}" \ + NM_FOR_TARGET="${NM_FOR_TARGET}" \ + RANLIB_FOR_TARGET="${RANLIB_FOR_TARGET}" \ LDFLAGS_FOR_TARGET="${LDFLAGS_FOR_TARGET}" \ - LANGUAGES="c c++ f77 objc" + LANGUAGES="${EGCS_LANGUAGES}" \ + INSTALL="${INSTALL} -c -o ${BINOWN} -g ${BINGRP}" \ + INSTALL_PROGRAM="${INSTALL_PROGRAM}" .if defined(SYS_INCLUDE) CFLAGS_FOR_TARGET+= -idirafter ${SYS_INCLUDE} @@ -93,33 +126,72 @@ MAKE_FLAGS+= SYSTEM_HEADER_DIR="${SYS_INCLUDE}" LDFLAGS_FOR_TARGET+= -L${SYS_LIB} .endif -post-extract: post-extract-egcs -post-extract-egcs: - @cd ${WRKSRC} && ${RM} -rf texinfo +pre-patch: egcs-patch +pre-configure: egcs-configure +do-build: egcs-build +do-install: egcs-install -do-install: do-install-egcs -do-install-egcs: - @cd ${WRKSRC}/gcc && ${GMAKE} ${MAKE_FLAGS} install-common install-headers install-libgcc install-driver +egcs-patch: + @${GZCAT} ${_DISTDIR}/${EGCS_PATCHBUNDLE} | \ + ${PATCH} -d ${EGCS_WRKSRC} --forward --quiet -E + @for i in ${COMMON_DIR}/patches-egcs/patch-*; do \ + ${PATCH} -d ${EGCS_WRKSRC} --forward --quiet -E < $$i; \ + done + +egcs-configure: + @cd ${EGCS_WRKSRC} && ${SETENV} CC="${CC}" ac_cv_path_CC="${CC}" \ + CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS}" \ + INSTALL="${INSTALL} -c -o ${BINOWN} -g ${BINGRP}" \ + INSTALL_PROGRAM="${INSTALL_PROGRAM}" \ + ./configure --prefix=${PREFIX} \ + --host=${MACHINE_GNU_ARCH}--netbsd --target=${TARGET_ARCH} \ + --enable-version-specific-runtime-libs + +egcs-build: + @${LN} -sf ${AS_FOR_TARGET} ${EGCS_WRKSRC}/gcc/as + @${LN} -sf ${LD_FOR_TARGET} ${EGCS_WRKSRC}/gcc/ld + @cd ${EGCS_WRKSRC} && ${SETENV} ${MAKE_ENV} \ + ${MAKE_PROGRAM} ${MAKE_FLAGS} ${EGCS_MAKE_FLAGS} all + +egcs-install: + @cd ${EGCS_WRKSRC}/gcc && ${SETENV} ${MAKE_ENV} \ + ${MAKE_PROGRAM} ${MAKE_FLAGS} ${EGCS_MAKE_FLAGS} \ + install-common install-headers install-libgcc install-driver chown -R ${BINOWN}:${BINGRP} ${PREFIX}/lib/gcc-lib/${TARGET_ARCH}/${EGCS_INTVERSION} - @cd ${WRKSRC} && ${GMAKE} ${MAKE_FLAGS} install-target-libf2c install-target-libstdc++ + @cd ${EGCS_WRKSRC} && ${SETENV} ${MAKE_ENV} \ + ${MAKE_PROGRAM} ${MAKE_FLAGS} ${EGCS_MAKE_FLAGS} install-target-libf2c + @${MKDIR} ${PREFIX}/lib/gcc-lib/${TARGET_ARCH}/${EGCS_INTVERSION}/include/g++/std + @cd ${EGCS_WRKSRC} && ${SETENV} ${MAKE_ENV} \ + ${MAKE_PROGRAM} ${MAKE_FLAGS} ${EGCS_MAKE_FLAGS} install-target-libstdc++ + ${LN} -f ${TARGET_DIR}/bin/gcc ${TARGET_DIR}/bin/cc ${LN} -f ${PREFIX}/bin/${TARGET_ARCH}-gcc ${PREFIX}/bin/${TARGET_ARCH}-cc ${LN} -f ${PREFIX}/bin/${TARGET_ARCH}-g77 ${PREFIX}/bin/${TARGET_ARCH}-f77 - for file in cc c++ f77 g++ g77; do \ + ${LN} -f ${PREFIX}/bin/${TARGET_ARCH}-g77 ${PREFIX}/bin/${TARGET_ARCH}-fort77 + for file in cc c++ c++filt f77 fort77 g++ g77; do \ ${LN} -f ${PREFIX}/bin/${TARGET_ARCH}-$$file ${TARGET_DIR}/bin/$$file; \ done @${RMDIR} -p ${PREFIX}/info 2>/dev/null || ${TRUE} @${RMDIR} -p ${PREFIX}/man/man1 2>/dev/null || ${TRUE} .endif +.if defined(CROSS_DISTFILES) +DISTFILES+= ${CROSS_DISTFILES} +.if defined(EXTRACT_ONLY) +EXTRACT_ONLY+= ${CROSS_DISTFILES:N*.diff.gz} +.else +EXTRACT_ONLY= ${DISTFILES:N*.diff.gz} +.endif +.endif + .if defined(SYS_INCLUDE) -do-install: do-install-includes -do-install-includes: +pre-install: pre-install-includes +pre-install-includes: cd ${SYS_INCLUDE} && pax -rw . ${TARGET_DIR}/include .endif .if defined(SYS_LIB) -do-install: do-install-lib -do-install-lib: +pre-install: pre-install-lib +pre-install-lib: cd ${SYS_LIB} && pax -rw . ${TARGET_DIR}/lib .endif @@ -133,16 +205,6 @@ post-install-plist: @${ECHO} '@dirrm ${TARGET_ARCH}/lib' >>${PLIST_SRC} @${ECHO} '@dirrm ${TARGET_ARCH}' >>${PLIST_SRC} -.if defined(CROSS_PATCHFILES) -PATCHFILES+= ${CROSS_PATCHFILES} -ALLFILES= ${DISTFILES} # don't checksum shared patches -.endif - -.if defined(CROSS_DISTFILES) -DISTFILES+= ${CROSS_DISTFILES} -.if defined(EXTRACT_ONLY) -EXTRACT_ONLY+= ${CROSS_DISTFILES} -.endif -.endif - .include "../../mk/bsd.pkg.mk" + +EXTRACT_BEFORE_ARGS:= -X ${COMMON_DIR}/exclude ${EXTRACT_BEFORE_ARGS} |