Subject: Re: bmake and bootstrap and own.mk and MKCONF
To: Jeremy C. Reed <reed@reedmedia.net>
From: Simon J. Gerraty <sjg@crufty.net>
List: tech-pkg
Date: 09/16/2005 20:21:01
Thanks for looking at this btw.
>But on NetBSD, the bsd.own.mk is not created -- as your comment in
>install-mk says "if this is a BSD system the bsd.*.mk should exist and
>be used."
If you look at install-mk you'll see
# FORCE_BSD_MK:
# By default if bsd.*.mk exist in the standard location,
# they are used there and not provided in "dest".
# If set to 'cp' or 'ln' the standard bsd.*.mk are
# replicated to "dest". If set to any other non-empty
# value, or if no bsd.*.mk exist in a standard location
# the generic prog.mk et al are symlinked to bsd.*.mk
but I generally think it is a better idea to leave bsd.*.mk alone on
such systems. If you have a set of *.mk specific to your project, I'd
put them in pkgsrc/mk
If want to get fancy you can even have:
pkgsrc/mk/$OS
and put a generic sys.mk in pkgsrc/mk that works out what the target
system is and pulls in appropriate guff from $OS if needed. That way
the tree works even when shared via NFS on different systems.
See the Generic.sys.mk for an example.
>What is the correct way on BSD systems that already have bsd.own.mk so
>they will look at this predefined MAKECONF?
Can't you just set MAKECONF in the environment and have the system
bsd.own.mk suck it in?
FWIW I get a _lot_ of mileage from using a simple wrapper script for
make. We use it here (and I can contribute it if there's interest).
We find it especially useful, when engineers are working on multiple
branches at once and want M-x compile to "just work" for the tree they
happen to be in - which may require a different set of *.mk etc.
>Also, the bootstrap way (as is in CVS) copies over a bunch of bsd.*.mk
>files no matter what.
You can do that by setting FORCE_BSD_MK=cp
>And they are not symlinks and doing diff shows they are different --
>bsd.own.mk is different from own.mk. This does not seem correct.
I'm not sure I followed, if FORCE_BSD_MK is set to cp (or ln) then
install-mk will make dest/bsd.*.mk copies or pointers to the ones in
/usr/share/mk
If that isn't what you want (eg if you want to force dest/bsd.own.mk
to be own.mk) then just setting FORCE_BSD_MK=yes will do that (IIRC).
Hope that helps.
--sjg