Date: Sat, 30 May 1998 15:48:04 -0700 From: "Jordan K. Hubbard" <jkh@time.cdrom.com> To: Peter Wemm <peter@netplex.com.au> Cc: current@FreeBSD.ORG, committers@FreeBSD.ORG Subject: Re: elf vs. bsd.*.mk Message-ID: <438.896568484@time.cdrom.com> In-Reply-To: Your message of "Sun, 31 May 1998 01:36:32 %2B0800." <199805301736.BAA24556@spinner.netplex.com.au>
next in thread | previous in thread | raw e-mail | index | archive | help
I suggest you leverage the work you've done so far and simply finish it. We know our build system is full of warts, we've just not had anyone dedicated (with $$ incentive :) to go after them until now(?). - Jordan > I've been having a good fight trying to get the world and all the > permutations of the binary formats doing something sensible. > > Along the way I've found some things in the *.mk files which scare the > hell out of me. > > For starters, sys.mk is automatically pulled in at make(1) startup time to > setup the base, posix and generally widely accepted default rules and > variables. > > However, at the end, it's now pulling in bsd.own.mk and /etc/make.conf (!). > This is polluting the default make environment up with all sorts of crap. > Sure, it means more when the .include <bsd.*.mk> stuff is activated at the > end, but there's no reason for it to be there when using non-bmake > Makefiles. > > The reason I ran into this was because there are certain things in the > tree that *must* be compiled with a given object format and cannot use the > system default - eg: the a.out ld.so must be a.out, libgcc.a needs to be > compiled twice, once in a.out and once in elf format etc. > > Ideally, this could be fixed by overriding things in the Makefile, eg: > sticking in a BINFORMAT=elf or BINFORMAT=aout as needed.. But at that > point, it's too late as certain .ifs have already been "done" in > bsd.own.mk (LIBDIR in particular). > > The other *BSD's don't have this problem. They pull in make.conf in > bsd.own.mk, and all the public bsd.{prog,lib,doc,..etc..}.mk files are > responsible for pulling in bsd.own.mk (instead of sys.mk). This means > that STRIP, BINOWN etc are not defined until the bsd.prog.mk (or whatever) > pulls it in. > > This is actually not much of a problem, except for a few cases where > things like usr.bin/strip/Makefile do conditional rules based on variables > that are not yet defined and hence don't work. A simple reordering of > rules fixes it. > > Anyway, I manged to get it (pretty much) working although it nearly cost > me my remaining sanity. I've now got the world building again, although I > know of a handful of minor problems still. > > However, I've just realized another way of doing it that doesn't cause > such a dramatic disturbance to the *.mk files, and hence is less likely to > badly break things.... and is much simpler (damn!!!!!). > > So, I thought I'd see what general feelings were on the subject. Do we > really want things like ${LIBDIR} defined for *all* makefiles, including > non bsd.prog.mk etc Makefiles. Also, make.conf is also globally visible > as well. I'm sure this can't be good for posix compliance etc. Since > I've finished 95% of the work so far, should I press on and clean up the > loose ends, or should I put it in the 'too hard' basket for the time being > and try the simple way out :-). > > Cheers, > -Peter > > > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?438.896568484>