diff options
author | jb <jb@FreeBSD.org> | 1998-08-31 01:08:08 +0000 |
---|---|---|
committer | jb <jb@FreeBSD.org> | 1998-08-31 01:08:08 +0000 |
commit | 06541112167221c4cd76ef7502524b9fe1d66d98 (patch) | |
tree | 37f3a150c188e9f19281dea1d96a9b74e37f4848 /Makefile.inc0 | |
parent | 7c39d735ef60c1a0050824f6964f41d1029f4820 (diff) | |
download | FreeBSD-src-06541112167221c4cd76ef7502524b9fe1d66d98.zip FreeBSD-src-06541112167221c4cd76ef7502524b9fe1d66d98.tar.gz |
E-day build system changes.
- Moved most of the guts of Makefile to Makefile.inc1 to become the
backend for the build system.
- The new Makefile doesn't suffer from problems including the wrong
sys.mk because it doesn't use anything in there or bsd.own.mk. So,
from now on, the proper build command is just `make world' (or
buildworld).
- The intermediate makefiles called Makefile.inc0 and Makefile.upgrade
fiddle with the OBJFORMAT and MAKEOBJDIRPREFIX variables so that
both aout and elf object trees can coexist. Makefile.upgrade contains
the aout->elf transition build.
- A cross build environment is now very close to reality. Specifying
TOOLDIR, setting OBJFORMAT and MAKEOBJDIRPREFIX allow that.
See the comments in Makefile for more info.
Diffstat (limited to 'Makefile.inc0')
-rw-r--r-- | Makefile.inc0 | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/Makefile.inc0 b/Makefile.inc0 new file mode 100644 index 0000000..2be6fdf --- /dev/null +++ b/Makefile.inc0 @@ -0,0 +1,109 @@ +# +# $Id$ +# +# This makefile ensures that the object directory is set according to the +# object format to avoid mixing aout and elf formatted files during the +# transition period. +# +# >> Beware, this makefile overwrites the local build environment! << +# + +# +# Build things relative to the user's preferred object directory, +# defaulting to /usr/obj if not defined. +# +MAKEOBJDIRPREFIX?=/usr/obj + +# +# Variables passed to make work better if they are set as environment +# variables instead of command line options. +# +MK_ENV= MAKEOBJDIRPREFIX=${MAKEOBJDIRPREFIX}/${OBJFORMAT} + +# +# We should always use the current set of mk files, not the installed ones. +# This makefile is a wrapper for the backend makefile (Makefile.inc1). +# +MAKE= make -m ${.CURDIR}/share/mk -f Makefile.inc1 + +# +# These are the backend targets. +# +BKTGTS= all depend everything includes install installmost most obj update + + +# +# A generic rule for the backend targets. +# +${BKTGTS} : + @cd ${.CURDIR}; ${MK_ENV} ${MAKE} ${.TARGET} + +# +# Temporary path and environment for the legacy build. +# +ELFTMPPATH= ${MAKEOBJDIRPREFIX}/elf${.CURDIR}/tmp/sbin:${MAKEOBJDIRPREFIX}/elf${.CURDIR}/tmp/bin:${MAKEOBJDIRPREFIX}/elf${.CURDIR}/tmp/usr/sbin:${MAKEOBJDIRPREFIX}/elf${.CURDIR}/tmp/usr/bin:${MAKEOBJDIRPREFIX}/elf${.CURDIR}/tmp/usr/games +LEGACY_ENV= MAKEOBJDIRPREFIX=${MAKEOBJDIRPREFIX}/aout \ + PATH=${ELFTMPPATH} OBJFORMAT=aout NOTOOLS=1 \ + TOOLROOT=${MAKEOBJDIRPREFIX}/elf${.CURDIR}/tmp + +# +# world +# +# Attempt to rebuild and reinstall *everything*, with reasonable chance of +# success, regardless of how old your existing system is. If building on +# an i386/elf system, build the aout legacy cruft too. +# +world: + @echo "--------------------------------------------------------------" + @echo " ${OBJFORMAT} make world started on `LC_TIME=C date`" + @echo "--------------------------------------------------------------" +.if target(pre-world) + @echo + @echo "--------------------------------------------------------------" + @echo " Making 'pre-world' target" + @echo "--------------------------------------------------------------" + @cd ${.CURDIR}; ${MK_ENV} ${MAKE} pre-world +.endif + @cd ${.CURDIR}; ${MK_ENV} ${MAKE} buildworld +.if ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "elf" && !defined(NOAOUT) + @cd ${.CURDIR}; ${LEGACY_ENV} ${MAKE} legacy-build +.endif + @cd ${.CURDIR}; ${MK_ENV} ${MAKE} -B installworld +.if ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "elf" && !defined(NOAOUT) + @cd ${.CURDIR}; ${LEGACY_ENV} ${MAKE} legacy-install +.endif +.if target(post-world) + @echo + @echo "--------------------------------------------------------------" + @echo " Making 'post-world' target" + @echo "--------------------------------------------------------------" + @cd ${.CURDIR}; ${MK_ENV} ${MAKE} post-world +.endif + @echo + @echo "--------------------------------------------------------------" + @echo " ${OBJFORMAT} make world completed on `LC_TIME=C date`" + @echo "--------------------------------------------------------------" + +# +# buildworld +# +# Build the world in the current object format, plus the legacy aout +# support if the current object format is elf on i386. +# +buildworld : + @cd ${.CURDIR}; ${MK_ENV} ${MAKE} buildworld +.if ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "elf" && !defined(NOAOUT) + @cd ${.CURDIR}; ${LEGACY_ENV} ${MAKE} legacy-build +.endif + +# +# installworld +# +# Install the world in the current object format, plus the legacy aout +# support if the current object format is elf on i386. +# +installworld : + @cd ${.CURDIR}; ${MK_ENV} ${MAKE} installworld +.if ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "elf" && !defined(NOAOUT) + @cd ${.CURDIR}; ${LEGACY_ENV} ${MAKE} -DNOMAN -DNOINFO legacy-install +.endif |