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 freebsd-current" 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>
