Subject: Re: non-.WAIT bsd.subdir.mk (was Re: patches to fix make -j)
To: Todd Vierling <tv@duh.org>
From: Luke Mewburn <lukem@NetBSD.org>
List: tech-toolchain
Date: 12/19/2003 12:47:29
--35rzUHtxHARXKmYf
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, Dec 18, 2003 at 11:25:56AM -0500, Todd Vierling wrote:
  | And I found the diff, and updated it to -current; see below.  In more
  | detail, you can specify something like
  |=20
  | SUBDIR=3D		a:d b:c c d:e:b e
  |=20
  | and you will get a guarantee that c builds before b, d builds before a,=
 and
  | e and b both build before d, regardless of -j setting.  With parallelis=
m,
  | the above will indeed build c and e in parallel before proceeding with =
their
  | dependents.

This is a good start, yet it lacks some functionality which we use in
"real world" situations within our build system:

   1.	Many uses of .WAIT are to allow a library containing common routines
	to be built before the rest of a subsystem.
	E.g., src/usr.sbin/lpr/common_source, which is used by=20
	src/usr.sbin/lpr/{lp,lpc,lpd,lpq,lpr,lprm,lptest,pac,filters}
	Your proposed syntax would greatly increase the size
	and complexity of the SUBDIR variable assignment.
	Maybe a "wildcard" dependency is required ("*:common_source" ?)

   2.	Certain subsections need to be built _and_ installed
	before the build progresses.  See the "build" targets in
	src/Makefile and src/x11/Makefile.
	Having a better way of representing this via SUBDIR
	would be "most excellent".


Cheers,
Luke.

--35rzUHtxHARXKmYf
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (NetBSD)

iD8DBQE/4lixpBhtmn8zJHIRAtBPAJ49LCCefBddn56xZ1hmaTIByQXDLwCgqmkk
bxnm49pAk+tbSo49cuSZ7ZA=
=7D6S
-----END PGP SIGNATURE-----

--35rzUHtxHARXKmYf--