[817] in NetBSD-Development
Most make changes reverted
daemon@ATHENA.MIT.EDU (Greg Hudson)
Mon Jun 26 02:44:07 1995
Date: Mon, 26 Jun 1995 02:43:59 -0400
From: Greg Hudson <ghudson@MIT.EDU>
To: netbsd-dev@MIT.EDU
After some reflection and experience with problems encountered with
make and the source tree, I decided that most of the changes I've made
to make are ill-advised. Changing the current directory after reading
the Makefile changes your semantics in subtle ways.
I have reverted (using "rcs -b" to set the default branch) most of my
changes to usr.bin/make/* except for the :C variable modifier to
canonicalize filenames, because I think it's useful. (I will send a
change-request pr for it shortly.) I have reverted my changes to
share/mk/bsd.obj.mk except for the change to canonicalize BSDSRCDIR
before extracting it from the current directory. I have also reverted
changes to usr.bin/tn3270/{tn3270,mset}/Makefile,
usr.bin/vi/common/Makefile, and usr.games/fortune/datfiles/Makefile
where I inserted ".include <bsd.obj.mk>" directives into sub-makes
when the .OBJDIR change was in effect.
limekiller may need to have make and the /usr/share/mk files
reinstalled.
I have recreated the obj links in the source tree to point into
/usr/obj. Development machines can point /usr/obj at
/afs/sipb.mit.edu/project/netbsd/dev/current-source/build/@sys; users
can point it wherever they want in order to do builds out of our
source tree. This leaves two problems:
* Users cannot do a "make obj" to ensure the existence of the
target directories under /usr/obj. Possible solutions
include:
- Make a script to mirror all the Makefile-containing
source directories under /usr/obj or some subtree of
it.
- Modify "make obj" to work without write access to
the source tree (just creating directories under
/usr/obj), or provide a separate target that does
that part of the job. This is probably preferrable
to the first option.
* Modify make to dynamically create obj if it's a
symlink to a nonexistent directory. I don't like
this option.
* Users still can't build a kernel out of the source tree. My
plan is to make /usr/src/sys/arch/<foo>/compile be a symlink
to /usr/obj/sys/arch/<foo>/compile, and modify the Makefiles
in arch/<foo>/conf to look for the source tree top in
${BSDSRCDIR}/sys.