Fix bug //guest/matt_armstrong/jam/bug/1/...
make1.c produces incorrect results with circular dependencies and
the -j flag. This is fine, since circular dependencies indicate
an error in a Jamfile somewhere.
However, jam 2.5rc3 implicitly converts "INCLUDES" into an
internal "DEPENDS" and so creates circular dependencies that are
not bugs in the project's Jamfiles. See perforce public depot
change 2614.
One case where this causes files to be built out of order is
//guest/matt_armstrong/jam/bug/1/... -- this is a distilled test
case built from a real source tree.
Usually this poses no problems, since INCLUDES is typically used
for header files and those are rarely generated at build time.
But systems that generate header files at build time are
vulnerable to this bug.
The fix implemented here is to make make1.c invulnerable to
circular INCLUDES dependencies. The fix ensures that make1a()
only processes only "real" targets (not the implicit internal
INCLUDES dependencies). When it processes a target, it gathers up
all the INCLUDES dependencies into a list and processes that list,
instead of using recursion.