It's ocurred to me that, since we're thinking about changing the
build process anyway, it might be worthwhile abandoning the symlinks
in the source tree altogether. It would work like this:
If we are in BSDSRCDIR:
* If BSDOBJDIR is not set, we print a warning.
* If it is set, we first try to build in ${BSDOBJDIR}.${MACHINE_ARCH}.
If that doesn't exist, we try ${BSDOBJDIR}. If that fails too, we
print an error and die. As well as absolute paths, appropriately
modfied with the current path with $BSDSRCDIR removed, we would
allow relative paths and build directly there, without referring
to BSDSRCDIR at all.
* `Make obj' would still make the object tree based on ${BSDOBJDIR},
but would not make symlinks in the source tree.
This would give us the ability to do everything we do now, by
setting BSDOBJDIR to `.', `obj', or `/usr/obj' depending on whether
we want to build in the source tree, in obj directories in the
source tree, or in a separate tree. It's also less confusing and
a bit more orthoginal than our current system with BSDOBJDIR used
only by `make obj,' and OBJMACHINE and USR_OBJMACHINE needed to
determine whether the obj.machine_arch directories are used or not.
This would also let us build from read-only source trees that don't
have the appropriate obj directories already in them.
What are the disadvantages of this scheme?
cjs
Curt Sampson cjs@portal.ca Info at http://www.portal.ca/
Internet Portal Services, Inc.
Vancouver, BC (604) 257-9400 De gustibus, aut bene aut nihil.