# $Id: Makefile,v 1.9 1999/08/31 05:21:51 sakamoto Exp $

CATEGORIES=	cross
DISTNAME=	cross-netbsd
PLIST_SRC=	${WRKDIR}/.PLIST_SRC
PLIST_PRE?=	${PKGDIR}/PLIST
MASTER_SITES=	# empty
DISTFILES=	# empty
EXTRACT_ONLY=	# empty

MAINTAINER=	sakamoto@netbsd.org

BUILD_DEPENDS+=	bison:../../devel/bison
BUILD_DEPENDS+=	gperf:../../devel/gperf
BUILD_DEPENDS+= pkglibtool-*:../../pkgtools/pkglibtool

TARGET?=	${GNU_ARCH.${TARGET_MACHINE_ARCH}}-netbsd
PKGNAME=	${TARGET}
CROSS_MAKE_SCRIPT=${TARGET}-make

BASEDIR=	${TARGET}
INSTALL_DIR=	${PREFIX}/${BASEDIR}
LDFLAGS+=	-Wl,-R${INSTALL_DIR}/lib -L${INSTALL_DIR}/lib

USE_GMAKE=	yes
GNU_CONFIGURE=	yes
CONFIG_ARGS=	--host=${MACHINE_GNU_PLATFORM} \
		--prefix=${INSTALL_DIR} --target=${TARGET} \
		--with-gnu-as --with-gnu-ld

WRKSRC=		${ALLSRC}/gnu/dist
GCC_CONV_SCRIPT=`${ECHO} -n 's/$${GCC_INTVERSION}/'; \
		  ${SED} -e 's|.*\"\([^ \"]*\)[ \"].*|\1/|' \
		  ${WRKSRC}/gcc/version.c`
BINUTILS_CONV_SCRIPT=`${ECHO} -n 's/$${BINUTILS_VERSION}/'; \
		  ${GREP} 'AM_INIT_AUTOMAKE(binutils,' \
			${WRKSRC}/binutils/configure.in | \
		  ${SED} -e 's|.*, \(.*\))|\1/|'`

EXCEPT_MODULES=	gdb sim

.ifdef USE_BINUTILS
BINUTILS=	binutils-${USE_BINUTILS}
MASTER_SITES=	ftp://ftp.varesearch.com/pub/support/hjl/binutils/beta/ \
		ftp://ftp.varesearch.com/pub/support/hjl/binutils/ \
		ftp://ftp.varesearch.com/pub/support/hjl/binutils/2.9.1/ \
		${MASTER_SITE_GNU}
DISTFILES=	${BINUTILS}${EXTRACT_SUFX}
EXCEPT_MODULES+=bfd binutils config etc gas gprof include ld \
		libiberty opcodes texinfo
.endif

fetch-depends:
.if !defined(TARGET_MACHINE_ARCH) || !defined(TARGET_MACHINE) || \
    !defined(ALLSRC) || !defined(TARGET_ROOT)
	@${ECHO}
	@${ECHO} "The following variables may be set to build/install this package."
	@${ECHO}
	@${ECHO} "LOCALBASE(default: ${LOCALBASE})"
	@${ECHO} "  install dir."
	@${ECHO} "USE_BINUTILS(default: source tree)"
	@${ECHO} "  using binutils version (e.g.: 2.9.1.0.15)."
	@${ECHO} "TARGET_MACHINE_ARCH"
	@${ECHO} "  e.g. alpha,arm32,i386,m68k,mipsel,mipseb,ns32k,powerpc,sparc,vax,..."
	@${ECHO} "TARGET_MACHINE"
	@${ECHO} "  e.g. alpha,amiga,arm32,atari,bebox,hp300,i386,..."
	@${ECHO} "ALLSRC"
	@${ECHO} "  NetBSD full source tree PATH."
	@${ECHO} "  It may be destroyed, it is desirable that be union mounted."
	@${ECHO} "  e.g. /a/src"
	@${ECHO} "TARGET_ROOT"
	@${ECHO} "  DESTDIR."
	@${ECHO} "  e.g. /a/target_root/"
	@${FALSE}
.endif
.if defined(TARGET_MACHINE_ARCH) && ${TARGET_MACHINE_ARCH} == "mips"
	@${ECHO} "Must set TARGET_MACHINE_ARCH to one of mipseb or mipsel"
	@${FALSE}
.endif

.ifdef EXCEPT_MODULES
build-depends:
	@(cd ${WRKSRC}; \
	 for module in ${EXCEPT_MODULES}; do \
		if [ -d $$module ]; then \
			${MV} $$module $$module.orig; \
		fi; \
	 done)
.endif

post-extract:
.ifdef USE_BINUTILS
	@(cd ${WRKDIR}/${BINUTILS}; \
	 for i in *; do \
		if [ -d $$i ]; then \
			${MKDIR} ${WRKSRC}/$$i; \
			${MV} $$i/* ${WRKSRC}/$$i; \
		else \
			${MV} $$i ${WRKSRC}; \
		fi; \
	 done)
.endif
	@${CP} ${FILESDIR}/ylwrap ${WRKSRC}
	@${CP} ${FILESDIR}/mkinstalldirs ${WRKSRC}
	@(for d in `${ECHO} $$PATH | tr ':' ' '`; do	\
		if [ -x $$d/pkglibtool-* ]; then	\
			found="$$d/pkglibtool-*";	\
			break;				\
		fi					\
	 done;						\
	 (cd ${WRKSRC};					\
	 for i in bfd binutils gas ld libiberty opcodes; do \
		${LN} -s $$found $$i/libtool;		\
	 done))
	@(mipselnetbsd_vec=`${GREP} ' mipselnetbsd_vec\"' ${WRKSRC}/bfd/config.bfd`; \
	 if [ $$? = 0 ]; then		\
		${MV} ${WRKSRC}/bfd/config.bfd ${WRKSRC}/bfd/config.bfd.orig; \
		${SED} -e 's| mipselnetbsd_vec\"|\"|'	\
			${WRKSRC}/bfd/config.bfd.orig	\
			> ${WRKSRC}/bfd/config.bfd;	\
	 fi)

pre-configure:
	@(cd ${ALLSRC} && ${MAKE} DESTDIR=${TARGET_ROOT} beforeinstall)
	@(cd ${ALLSRC}/share/mk && ${MAKE} DESTDIR=${TARGET_ROOT} install)
	@(cd ${ALLSRC} && \
		${MAKE} -I ${TARGET_ROOT}/usr/share/mk \
			DESTDIR=${TARGET_ROOT} MACHINE=${TARGET_MACHINE} \
			MACHINE_ARCH=${TARGET_MACHINE_ARCH} includes)
	@${RM} -rf ${INSTALL_DIR}/${TARGET}/include
	@${MKDIR} ${INSTALL_DIR}/${TARGET}/include
	@${LN} -s ${TARGET_ROOT}/usr/include/* ${INSTALL_DIR}/${TARGET}/include

do-configure:
	@(cd ${WRKSRC} && ./configure ${CONFIG_ARGS})

post-configure:
	@${ECHO} timestamp > ${WRKSRC}/gcc/cstamp-h.in
	@${TOUCH} ${WRKSRC}/readline/configure
	@${SED} -e 's|^TARGET_CONFIGDIRS.*|TARGET_CONFIGDIRS =|' \
		${WRKSRC}/Makefile > ${WRKDIR}/Makefile
	@${MV} ${WRKDIR}/Makefile ${WRKSRC}/Makefile

post-install: post-install-plist
	@${SED} -e 's|/usr/libexec/cpp|${INSTALL_DIR}/lib/gcc-lib/${TARGET}/$${GCC_INTVERSION}/cpp|' \
		-e ${GCC_CONV_SCRIPT} \
		-e 's|\(CC-\)gcc|\1${INSTALL_DIR}/bin/${TARGET}-gcc|'	\
		${ALLSRC}/gnu/usr.bin/egcs/cpp/usr.bin.cpp.sh > ${WRKDIR}/cpp
	@${INSTALL_SCRIPT} ${WRKDIR}/cpp ${INSTALL_DIR}/bin/${TARGET}-cpp
	@${SED} -e 's|$${INSTALL_DIR}|${INSTALL_DIR}|' \
		-e 's|$${TARGET_ROOT}|${TARGET_ROOT}|' \
		-e 's|$${TARGET}|${TARGET}|' \
		-e ${GCC_CONV_SCRIPT} \
		-e 's|$${TARGET_MACHINE}|${TARGET_MACHINE}|' \
		-e 's|$${TARGET_MACHINE_ARCH}|${TARGET_MACHINE_ARCH}|g' \
		${FILESDIR}/cross-make > ${WRKDIR}/${CROSS_MAKE_SCRIPT}
	@${INSTALL_SCRIPT} ${WRKDIR}/${CROSS_MAKE_SCRIPT} ${INSTALL_DIR}/bin

post-install-plist:
	@${SED} -e 's|$${BASEDIR}|${BASEDIR}|g'		\
		-e 's|$${TARGET}|${TARGET}|g'		\
		-e ${GCC_CONV_SCRIPT} 			\
		-e ${BINUTILS_CONV_SCRIPT}		\
		${PLIST_PRE} >${PLIST_SRC}

.include "../../mk/bsd.pkg.mk"
