Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Feb 2011 18:54:52 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r218524 - in head: . share/man/man7
Message-ID:  <201102101854.p1AIsqo8031478@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Thu Feb 10 18:54:52 2011
New Revision: 218524
URL: http://svn.freebsd.org/changeset/base/218524

Log:
  - Add a new UNIVERSE_TARGET variable for 'make universe'.  If it is set,
    then that target is invoked for each architecture rather than the
    default action of building world and kernels for each architecture.
  - Add a 'make toolchains' wrapper which uses UNIVERSE_TARGET to build
    toolchains for all architectures.
  - Document JFLAG, MAKE_JUST_KERNELS, and MAKE_JUST_WORLDS variables for
    'make universe'.
  
  Reviewed by:	bz
  MFC after:	1 week

Modified:
  head/Makefile
  head/share/man/man7/build.7

Modified: head/Makefile
==============================================================================
--- head/Makefile	Thu Feb 10 15:41:32 2011	(r218523)
+++ head/Makefile	Thu Feb 10 18:54:52 2011	(r218524)
@@ -30,6 +30,7 @@
 # delete-old-libs     - Delete obsolete libraries.
 # targets             - Print a list of supported TARGET/TARGET_ARCH pairs
 #                       for world and kernel targets.
+# toolchains          - Build a toolchain for all world and kernel targets.
 #
 # This makefile is simple by design. The FreeBSD make automatically reads
 # the /usr/share/mk/sys.mk unless the -m argument is specified on the
@@ -307,8 +308,10 @@ make: .PHONY
 		${MMAKE} install DESTDIR=${MAKEPATH} BINDIR=
 
 tinderbox:
-	@cd ${.CURDIR} && \
-		DOING_TINDERBOX=YES ${MAKE} JFLAG=${JFLAG} universe
+	@cd ${.CURDIR} && ${MAKE} DOING_TINDERBOX=YES universe
+
+toolchains:
+	@cd ${.CURDIR} && ${MAKE} UNIVERSE_TARGET=toolchain universe
 
 #
 # universe
@@ -328,6 +331,12 @@ TARGET_ARCHES_sun4v?=	sparc64
 TARGET_ARCHES_${target}?= ${target}
 .endfor
 
+.if defined(UNIVERSE_TARGET)
+MAKE_JUST_WORLDS=	YES
+.else
+UNIVERSE_TARGET?=	buildworld
+.endif
+
 targets:
 	@echo "Supported TARGET/TARGET_ARCH pairs for world and kernel targets"
 .for target in ${TARGETS}
@@ -361,16 +370,16 @@ universe_${target}_prologue:
 .for target_arch in ${TARGET_ARCHES_${target}}
 universe_${target}: universe_${target}_${target_arch}
 universe_${target}_${target_arch}: universe_${target}_prologue
-	@echo ">> ${target}.${target_arch} buildworld started on `LC_ALL=C date`"
+	@echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} started on `LC_ALL=C date`"
 	@(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \
-	    ${MAKE} ${JFLAG} buildworld \
+	    ${MAKE} ${JFLAG} ${UNIVERSE_TARGET} \
 	    TARGET=${target} \
 	    TARGET_ARCH=${target_arch} \
-	    > _.${target}.${target_arch}.buildworld 2>&1 || \
-	    (echo "${target}.${target_arch} world failed," \
-	    "check _.${target}.${target_arch}.buildworld for details" | \
+	    > _.${target}.${target_arch}.${UNIVERSE_TARGET} 2>&1 || \
+	    (echo "${target}.${target_arch} ${UNIVERSE_TARGET} failed," \
+	    "check _.${target}.${target_arch}.${UNIVERSE_TARGET} for details" | \
 	    ${MAKEFAIL}))
-	@echo ">> ${target}.${target_arch} buildworld completed on `LC_ALL=C date`"
+	@echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} completed on `LC_ALL=C date`"
 .endfor
 .endif
 .if !defined(MAKE_JUST_WORLDS)

Modified: head/share/man/man7/build.7
==============================================================================
--- head/share/man/man7/build.7	Thu Feb 10 15:41:32 2011	(r218523)
+++ head/share/man/man7/build.7	Thu Feb 10 18:54:52 2011	(r218524)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 25, 2011
+.Dd February 10, 2011
 .Dt BUILD 7
 .Os
 .Sh NAME
@@ -218,13 +218,14 @@ on how to make it start at boot time.
 Create the build toolchain needed to build the rest of the system.
 For cross-architecture builds, this step creates a cross-toolchain.
 .It Cm universe
-Execute a
+For each architecture,
+execute a
 .Cm buildworld
-and
+followed by a
 .Cm buildkernel
-for all kernels including
-.Pa LINT ,
-for each architecture supported by the build system.
+for all kernels for that architecture,
+including
+.Pa LINT .
 This command takes a long time.
 .It Cm update
 Get updated sources as configured in
@@ -240,6 +241,8 @@ Execute the same targets as
 .Cm universe .
 In addition print a summary of all failed targets at the end and
 exit with an error if there were any.
+.It Cm toolchains
+Create a build toolchain for each architecture supported by the build system.
 .El
 .Pp
 Kernel specific build targets in
@@ -508,6 +511,29 @@ If set, restricts the documentation buil
 specified as its content.
 The default action is to build documentation for all languages.
 .El
+.Pp
+Builds using the
+.Cm universe
+target are influenced by the following
+.Xr make 1
+variables:
+.Bl -tag -width ".Va MAKE_JUST_KERNELS"
+.It Va JFLAG
+Pass the value of this variable to each
+.Xr make 1
+invocation used to build worlds and kernels.
+This can be used to enable multiple jobs within a single architecture's build
+while still building each architecture serially.
+.It Va MAKE_JUST_KERNELS
+Only build kernels for each supported architecture.
+.It Va MAKE_JUST_WORLDS
+Only build worlds for each supported architecture.
+.It Va UNIVERSE_TARGET
+Execute the specified
+.Xr make 1
+target for each supported architecture instead of the default action of
+building a world and one or more kernels.
+.El
 .Sh FILES
 .Bl -tag -width ".Pa /usr/share/examples/etc/make.conf" -compact
 .It Pa /usr/doc/Makefile



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102101854.p1AIsqo8031478>