[PATCH] Add a 'make toolchains' target

John Baldwin jhb at freebsd.org
Thu Feb 10 15:06:16 UTC 2011


On Thursday, February 10, 2011 8:22:00 am Bjoern A. Zeeb wrote:
> On Thu, 10 Feb 2011, John Baldwin wrote:
> 
> > This patch adds a 'make toolchains' target that invokes 'make toolchain' for
> > each target.  The use case I want it for is a cheaper way to just test kernels
> > via make tinderbox so I can do:
> >
> >  make toolchains
> >  make MAKE_JUST_KERNELS=yes tinderbox
> >
> > It is implemented by adding a new frob to tweak the target that make universe
> > builds for the world stage of universe (UNIVERSE_TARGET).  If that frob is
> > set, then the kernel build step for a universe is skipped.  With this, the
> > toolchains target is a simple wrapper for:
> >
> >  make UNIVERSE_TARGET=toolchains universe
> >
> > Index: Makefile
> > ===================================================================
> > --- Makefile	(revision 218481)
> > +++ Makefile	(working copy)
> > @@ -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.
> 
> Should also go to build(7).

Patch for this.  It documents the previously undocumented variables for
'make universe' and also describes UNIVERSE_TARGET:

Index: build.7
===================================================================
--- build.7	(revision 218481)
+++ build.7	(working copy)
@@ -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 build to the l
 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

-- 
John Baldwin


More information about the freebsd-current mailing list