From d18c990625fd613a7f4063ab1718e5afeed1be4b Mon Sep 17 00:00:00 2001 From: Ruslan Ermilov Date: Wed, 18 Aug 2004 07:17:01 +0000 Subject: [PATCH] My take at improving the universe: allow the worlds to be built in parallel. Examples: make universe Build worlds sequentially, each world sequentially. make universe JFLAG=-j4 Build worlds sequentially, each world in parallel. make -j4 universe make -j4 universe JFLAG=-j2 Build four worlds in parallel, each world will be built in parallel too. World parallelization is set to four in the first synopsis, and to two in the second. make -j4 universe JFLAG=-B Build worlds in parallel, each world sequentially. ("world" == buildworld followed by buildkernels.) Prayers: obrien, phk --- Makefile | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 67406a7c7089..ce78de46b7a3 100644 --- a/Makefile +++ b/Makefile @@ -150,10 +150,9 @@ ${TGTS}: # Set a reasonable default .MAIN: all -.if defined(HISTORICAL_MAKE_WORLD) || defined(DESTDIR) -.if make(world) STARTTIME!= LC_ALL=C date -.endif + +.if defined(HISTORICAL_MAKE_WORLD) || defined(DESTDIR) # # world # @@ -248,16 +247,20 @@ make: .PHONY # universe # # Attempt to rebuild *everything* for all supported architectures, -# with reasonable chance of success, regardless of how old your +# with a reasonable chance of success, regardless of how old your # existing system is. # -i386_mach= pc98 -universe: +universe: universe_prologue +universe_prologue: @echo "--------------------------------------------------------------" @echo ">>> make universe started on ${STARTTIME}" @echo "--------------------------------------------------------------" -.for arch in i386 sparc64 alpha ia64 amd64 -.for mach in ${arch} ${${arch}_mach} +.for target in i386 i386:pc98 sparc64 alpha ia64 amd64 +.for arch in ${target:C/:.*$//} +.for mach in ${target:C/^.*://} +universe: universe_${mach} +.ORDER: universe_prologue universe_${mach} universe_epilogue +universe_${mach}: @echo ">> ${mach} started on `LC_ALL=C date`" -cd ${.CURDIR} && ${MAKE} ${JFLAG} buildworld \ TARGET_ARCH=${arch} TARGET=${mach} \ @@ -268,10 +271,13 @@ universe: -cd ${.CURDIR}/sys/${mach}/conf && ${MAKE} LINT \ > ${.CURDIR}/_.${mach}.makeLINT 2>&1 .endif - cd ${.CURDIR} && ${MAKE} ${JFLAG} buildkernels TARGET_ARCH=${arch} TARGET=${mach} + cd ${.CURDIR} && ${MAKE} buildkernels TARGET_ARCH=${arch} TARGET=${mach} @echo ">> ${mach} completed on `LC_ALL=C date`" .endfor .endfor +.endfor +universe: universe_epilogue +universe_epilogue: @echo "--------------------------------------------------------------" @echo ">>> make universe completed on `LC_ALL=C date`" @echo " (started ${STARTTIME})" @@ -280,8 +286,6 @@ universe: .if make(buildkernels) KERNCONFS!= cd ${.CURDIR}/sys/${TARGET}/conf && \ find [A-Z]*[A-Z] -type f -maxdepth 0 ! -name NOTES -.endif - buildkernels: .for kernel in ${KERNCONFS} -cd ${.CURDIR} && ${MAKE} ${JFLAG} buildkernel \ @@ -289,3 +293,4 @@ buildkernels: __MAKE_CONF=/dev/null \ > _.${TARGET}.${kernel} 2>&1 .endfor +.endif