pkgsrc/cross/COMMON/cross.mk

211 lines
7.1 KiB
Makefile
Raw Normal View History

# $NetBSD: cross.mk,v 1.4 1999/01/04 22:37:30 tv Exp $
1998-08-12 04:42:28 +02:00
# Shared definitions for building a cross-compile environment.
DISTNAME= cross-${TARGET_ARCH}-${DISTVERSION}
CATEGORIES+= cross lang
USE_CROSSBASE= yes
PLIST_SRC= ${WRKDIR}/.PLIST_SRC
HOMEPAGE?= http://egcs.cygnus.com/
1998-08-12 04:42:28 +02:00
TARGET_DIR= ${PREFIX}/${TARGET_ARCH}
COMMON_DIR= ${PKGSRCDIR}/cross/COMMON
PLIST_PRE?= ${PKGDIR}/PLIST
pre-install: pre-install-dirs
pre-install-dirs:
1998-08-12 04:42:28 +02:00
${INSTALL_DATA_DIR} ${PREFIX}
${INSTALL_DATA_DIR} ${PREFIX}/bin
${INSTALL_DATA_DIR} ${PREFIX}/lib
${INSTALL_DATA_DIR} ${TARGET_DIR}
${INSTALL_DATA_DIR} ${TARGET_DIR}/bin
${INSTALL_DATA_DIR} ${TARGET_DIR}/include
${INSTALL_DATA_DIR} ${TARGET_DIR}/lib
.if defined(USE_CROSS_BINUTILS)
1998-08-12 04:42:28 +02:00
BINUTILS_DISTNAME= binutils-2.9.1
BINUTILS_WRKSRC= ${WRKDIR}/${BINUTILS_DISTNAME}
1998-08-12 04:42:28 +02:00
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
1998-08-12 04:42:28 +02:00
PLIST_PRE+= ${COMMON_DIR}/PLIST-binutils
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; \
1998-08-12 04:42:28 +02:00
done
.endif
.if defined(USE_CROSS_EGCS)
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
1998-08-12 04:42:28 +02:00
USE_GMAKE= yes
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="${EGCS_LANGUAGES}" \
INSTALL="${INSTALL} -c -o ${BINOWN} -g ${BINGRP}" \
INSTALL_PROGRAM="${INSTALL_PROGRAM}"
.if defined(SYS_INCLUDE)
CFLAGS_FOR_TARGET+= -idirafter ${SYS_INCLUDE}
MAKE_FLAGS+= SYSTEM_HEADER_DIR="${SYS_INCLUDE}"
.endif
.if defined(SYS_LIB)
LDFLAGS_FOR_TARGET+= -L${SYS_LIB}
.endif
1998-08-12 04:42:28 +02:00
pre-patch: egcs-patch
pre-configure: egcs-configure
do-build: egcs-build
do-install: egcs-install
1998-08-12 04:42:28 +02:00
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
1998-08-12 04:42:28 +02:00
chown -R ${BINOWN}:${BINGRP} ${PREFIX}/lib/gcc-lib/${TARGET_ARCH}/${EGCS_INTVERSION}
@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
1998-08-12 04:42:28 +02:00
${LN} -f ${PREFIX}/bin/${TARGET_ARCH}-gcc ${PREFIX}/bin/${TARGET_ARCH}-cc
${LN} -f ${PREFIX}/bin/${TARGET_ARCH}-g77 ${PREFIX}/bin/${TARGET_ARCH}-f77
${LN} -f ${PREFIX}/bin/${TARGET_ARCH}-g77 ${PREFIX}/bin/${TARGET_ARCH}-fort77
for file in cc c++ c++filt f77 fort77 g++ g77; do \
1998-08-12 04:42:28 +02:00
${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
1998-08-12 04:42:28 +02:00
.if defined(SYS_INCLUDE)
pre-install: pre-install-includes
pre-install-includes:
1998-08-12 04:42:28 +02:00
cd ${SYS_INCLUDE} && pax -rw . ${TARGET_DIR}/include
.endif
.if defined(SYS_LIB)
pre-install: pre-install-lib
pre-install-lib:
1998-08-12 04:42:28 +02:00
cd ${SYS_LIB} && pax -rw . ${TARGET_DIR}/lib
.endif
post-install: post-install-plist
post-install-plist:
@${SED} -e 's|$${TARGET_ARCH}|${TARGET_ARCH}|' \
-e 's|$${EGCS_INTVERSION}|${EGCS_INTVERSION}|' \
${PLIST_PRE} >${PLIST_SRC}
@${ECHO} '@dirrm ${TARGET_ARCH}/bin' >>${PLIST_SRC}
@${ECHO} '@dirrm ${TARGET_ARCH}/include' >>${PLIST_SRC}
@${ECHO} '@dirrm ${TARGET_ARCH}/lib' >>${PLIST_SRC}
@${ECHO} '@dirrm ${TARGET_ARCH}' >>${PLIST_SRC}
.include "../../mk/bsd.pkg.mk"
EXTRACT_BEFORE_ARGS:= -X ${COMMON_DIR}/exclude ${EXTRACT_BEFORE_ARGS}