Re: [PATCH] Add a 'make toolchains' target

From: John Baldwin <jhb_at_freebsd.org>
Date: Thu, 10 Feb 2011 10:06:10 -0500
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)
> > _at__at_ -30,6 +30,7 _at__at_
> > # 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)
_at__at_ -218,13 +218,14 _at__at_ 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
_at__at_ -240,6 +241,8 _at__at_ 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
_at__at_ -508,6 +511,29 _at__at_ 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
Received on Thu Feb 10 2011 - 14:06:16 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:11 UTC