summaryrefslogtreecommitdiff
path: root/cross/COMMON/cross.mk
diff options
context:
space:
mode:
Diffstat (limited to 'cross/COMMON/cross.mk')
-rw-r--r--cross/COMMON/cross.mk216
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}