# # $FreeBSD$ # # 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. # .if ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "aout" MK_ENV= MAKEOBJDIRPREFIX=${MAKEOBJDIRPREFIX}/${OBJFORMAT} .endif # # 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 checkdpadd clean cleandepend cleandir \ depend everything hierarchy includes install installmost \ lint maninstall mk most obj objlink regress rerelease \ tags update # # A generic rule for the backend targets. # ${BKTGTS} : @cd ${.CURDIR}; ${MAKE} ${.TARGET} # These targets are used during a make release, which is done after a # make world, so they should use the same OBJDIRPREFIX that was used # during the make world. RELTGTS= afterdistribute distribute ${RELTGTS} : @cd ${.CURDIR}; ${MK_ENV} ${MAKE} ${.TARGET} # # Temporary path and environment for the legacy build. # ELFTMP= ${MAKEOBJDIRPREFIX}${.CURDIR}/tmp ELFTMPPATH= ${ELFTMP}/sbin:${ELFTMP}/bin:${ELFTMP}/usr/sbin:${ELFTMP}/usr/bin:${ELFTMP}/usr/games LEGACY_ENV= PATH=${ELFTMPPATH} OBJFORMAT=aout NOTOOLS=1 TOOLROOT=${ELFTMP} \ MAKEOBJDIRPREFIX=${MAKEOBJDIRPREFIX}/aout XMAKE= ${ELFTMP}/usr/bin/${MAKE} STARTTIME!= LC_TIME=C date # # 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 ${STARTTIME}" @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(WANT_AOUT) @cd ${.CURDIR}; ${LEGACY_ENV} ${XMAKE} legacy-build .endif @cd ${.CURDIR}; ${MK_ENV} ${MAKE} -B installworld .if ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "elf" && defined(WANT_AOUT) @cd ${.CURDIR}; ${LEGACY_ENV} ${XMAKE} 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 started on ${STARTTIME}" @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(WANT_AOUT) @cd ${.CURDIR}; ${LEGACY_ENV} ${XMAKE} 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(WANT_AOUT) @cd ${.CURDIR}; ${LEGACY_ENV} ${XMAKE} -DNOMAN -DNOINFO legacy-install .endif