svn commit: r189760 - head

Warner Losh imp at FreeBSD.org
Fri Mar 13 00:23:59 PDT 2009


Author: imp
Date: Fri Mar 13 07:23:58 2009
New Revision: 189760
URL: http://svn.freebsd.org/changeset/base/189760

Log:
  Implement the xdev target.  When you define XDEV=arch XDEV_ARCH=arch,
  you can build the cross development tools and install them as
  $XDEV-freebsd-xxx for each tool.  This allows one to use autoconf to
  find the tools for cross building scenarios.

Modified:
  head/Makefile
  head/Makefile.inc1

Modified: head/Makefile
==============================================================================
--- head/Makefile	Fri Mar 13 07:12:25 2009	(r189759)
+++ head/Makefile	Fri Mar 13 07:23:58 2009	(r189760)
@@ -88,7 +88,7 @@ TGTS=	all all-man buildenv buildenvvars 
 	obj objlink regress rerelease showconfig tags toolchain update \
 	_worldtmp _legacy _bootstrap-tools _cleanobj _obj \
 	_build-tools _cross-tools _includes _libraries _depend \
-	build32 distribute32 install32
+	build32 distribute32 install32 xdev xdev-build xdev-install
 TGTS+=	${SUBDIR_TARGETS}
 
 BITGTS=	files includes

Modified: head/Makefile.inc1
==============================================================================
--- head/Makefile.inc1	Fri Mar 13 07:12:25 2009	(r189759)
+++ head/Makefile.inc1	Fri Mar 13 07:23:58 2009	(r189760)
@@ -1328,3 +1328,89 @@ check-old: check-old-files check-old-lib
 #
 showconfig:
 	@${MAKE} -n -f bsd.own.mk -V dummy -dg1 | grep ^MK_ | sort
+
+
+###############
+
+.if defined(XDEV) && defined(XDEV_ARCH)
+
+NOFUN=-DNO_FSCHG -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT \
+	-DWITHOUT_MAN -DWITHOUT_NLS -DWITHOUT_PROFILE \
+	-DWITHOUT_KERBEROS -DWITHOUT_RESCUE -DNO_WARNS
+
+XDDIR=${XDEV}-freebsd
+XDTP=/usr/${XDDIR}
+CDBENV=MAKEOBJDIRPREFIX=${MAKEOBJDIRPREFIX}/${XDDIR} \
+	TARGET=${XDEV} TARGET_ARCH=${XDEV_ARCH}
+CDENV= ${CDBENV} \
+	_SHLIBDIRPREFIX=${XDTP} \
+	TOOLS_PREFIX=${XDTP}
+CD2ENV=${CDENV} \
+	MACHINE=${XDEV} MACHINE_ARCH=${XDEV_ARCH}
+
+CDTMP=	${MAKEOBJDIRPREFIX}/${XDEV}/${.CURDIR}/tmp
+CDMAKE=${CDENV} ${MAKE} ${NOFUN}
+CD2MAKE=${CD2ENV} PATH=${CDTMP}/usr/bin:${XDTP}/usr/bin:${PATH} ${MAKE} ${NOFUN}
+XDDESTDIR=${DESTDIR}${XDTP}
+
+.ORDER: xdev-build xdev-install
+xdev: xdev-build xdev-install
+
+.ORDER: _xb-build-tools _xb-cross-tools
+xdev-build: _xb-build-tools _xb-cross-tools
+
+_xb-build-tools:
+	${_+_}cd ${.CURDIR}; \
+	${CDBENV} ${MAKE} -f Makefile.inc1 ${NOFUN} build-tools
+
+_xb-cross-tools:
+.for _tool in \
+    gnu/usr.bin/binutils \
+    gnu/usr.bin/cc
+	${_+_}@${ECHODIR} "===> xdev ${_tool} (obj,depend,all)"; \
+	cd ${.CURDIR}/${_tool}; \
+	${CDMAKE} DIRPRFX=${_tool}/ obj; \
+	${CDMAKE} DIRPRFX=${_tool}/ depend; \
+	${CDMAKE} DIRPRFX=${_tool}/ all
+.endfor
+
+_xi-mtree:
+	${_+_}@${ECHODIR} "mtree populating ${XDDESTDIR}"
+	mkdir -p ${XDDESTDIR}
+	mtree -deU -f ${.CURDIR}/etc/mtree/BSD.root.dist \
+	    -p ${XDDESTDIR} >/dev/null
+	mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
+	    -p ${XDDESTDIR}/usr >/dev/null
+	mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
+	    -p ${XDDESTDIR}/usr/include >/dev/null
+
+.ORDER: _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links
+xdev-install: _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links
+
+_xi-cross-tools:
+	@echo "_xi-cross-tools"
+.for _tool in \
+    gnu/usr.bin/binutils \
+    gnu/usr.bin/cc
+	${_+_}@${ECHODIR} "===> xdev ${_tool} (install)"; \
+	cd ${.CURDIR}/${_tool}; \
+	${CDMAKE} DIRPRFX=${_tool}/ install DESTDIR=${XDDESTDIR}
+.endfor
+
+_xi-includes:
+	${_+_}cd ${.CURDIR}; ${CD2MAKE} -f Makefile.inc1 par-includes \
+		DESTDIR=${XDDESTDIR}
+
+_xi-libraries:
+	${_+_}cd ${.CURDIR}; ${CD2MAKE} -f Makefile.inc1 libraries \
+		DESTDIR=${XDDESTDIR}
+
+_xi-links:
+	${_+_}cd ${XDDESTDIR}/usr/bin; \
+		for i in *; do \
+			ln -sf ../../${XDTP}/usr/bin/$$i \
+			    ../../../../usr/bin/${XDDIR}-$$i; \
+			ln -sf ../../${XDTP}/usr/bin/$$i \
+			    ../../../../usr/bin/${XDDIR}${OSREL}-$$i; \
+		done
+.endif


More information about the svn-src-all mailing list