Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Jun 1996 12:07:49 -0700 (MST)
From:      Terry Lambert <terry@lambert.org>
To:        wollman@lcs.mit.edu (Garrett Wollman)
Cc:        terry@lambert.org, current@FreeBSD.org
Subject:   Re: Minor nit in build process plus fix
Message-ID:  <199606101907.MAA04055@phaeton.artisoft.com>
In-Reply-To: <9606101506.AA11944@halloran-eldar.lcs.mit.edu> from "Garrett Wollman" at Jun 10, 96 11:06:41 am

next in thread | previous in thread | raw e-mail | index | archive | help
> > I was thinking in terms of the top level make setting an environment
> > variable.  The problem is really "..", not "paths relative to the
> > build root".
> 
> This presupposes that there /is/ a ``top level make''.  When I'm
> rebuilding `w', I don't start from /usr/src, I start from
> /usr/src/usr.bin/w (or, on my distribution-building box, from
> /usr/releng/src/usr.bin/w).

Or a top level environment variable, when you do that.

Like having a CVSROOT around, you'd need a SRCROOT.  I'd suggest
a default of /usr/src, if none is specified.

Then I can have a symlink tree:


/usr/src		-> /a/smp

/a/current:
	COPYRIGHT
	CVS
	CVS-INFO
	Makefile
	README
	TODO
	TODO-2.1
	bin		-> /b/src-current/bin
	eBones		-> /b/src-current/eBones
	etc		-> /b/src-current/etc
	games		-> /b/src-current/games
	gnu		-> /b/src-current/gnu
	include		-> /b/src-current/include
	lib		-> /b/src-current/lib
	libexec		-> /b/src-current/libexec
	lkm		-> /b/src-current/lkm
	ports		-> /b/src-current/ports
	release		-> /b/src-current/release
	sbin		-> /b/src-current/sbin
	secure		-> /b/src-current/secure
	share		-> /b/src-current/share
	sys		-> /b/src-current/sys
	usr.bin		-> /b/src-current/usr.bin
	usr.sbin	-> /b/src-current/usr.sbin

/a/smp:
	COPYRIGHT
	CVS
	CVS-INFO
	Makefile
	README
	TODO
	TODO-2.1
	bin		-> /b/src-current/bin
	eBones		-> /b/src-current/eBones
	etc		-> /b/src-current/etc
	games		-> /b/src-current/games
	gnu		-> /b/src-current/gnu
	include		-> /b/src-current/include
	lib		-> /b/src-current/lib
	libexec		-> /b/src-current/libexec
	lkm		-> /b/src-current/lkm
	ports		-> /b/src-current/ports
	release		-> /b/src-current/release
	sbin		-> /b/src-current/sbin
	secure		-> /b/src-current/secure
	share		-> /b/src-current/share
	sys		-> /b/src-smp/sys			<-- ***
	usr.bin		-> /b/src-current/usr.bin
	usr.sbin	-> /b/src-current/usr.sbin

If I don't want to change SRCROOT, I do the build in the top level
source directory (which pulls it via pwd in the top Makefile *only*,
or I change the symlink /usr/src.

One problem with building from the top each time is that the
dependencies don't necessarily work like they are supposed to
for preventing rebuilds of some things.  If that's a problem for
you, you can always fix them.  8-).


Maybe a k.bin/k.usr.bin for kernel header dependent build files that
go in /bin or /usr/bin, to seperate out their build?


					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.



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