Goals: * Most file generation should be done via make, not Config. To see what files are generated by your configure, {{{make realclean; perl Configure.pl; git ls-files -o}}}. * ext/Parrot-Embed/Makefile.PL should not be generated; it should just use Parrot::Config to get @ this config-time information. * the steps that generate PMC related info don't have to happen at config time. move them into the build. * accurate build dependencies * {{{t/src/checkdepend.t}}} should verify perl dependencies * including the cases where, e.g. a perl tool (and its libs) are required to build a C file. * {{{t/src/checkdepend.t}}} should verify PIR dependencies. * {{{t/src/checkdepend.t}}} should be able to '''generate''' makefiles, not just verify them. (the code that it uses to get the list of expected can be factored out to generate the list during a "makedepend" step, the results of which can be put in a generated file and checked in. This could be run as part of the config --maintainer step. * {{{t/src/checkdepend.t}}} should complain about make targets with two or more targets on the left; parallel make is allowed to call this rule twice, which is probably not what you want. * when building PBC, we should always generate .pir -> .pbc in the same directory (just like a .c -> .o); if we then need a separate rule to copy the built pbc to an "install" directory, that's fine; having the two stages should let us track the deps, and then add PIR to {{{t/src/checkdepend.t}}} Some tickets: #576 #382 #1214 #338 #1285 #1418 == wishlist == Avoid recursive "make" where possible, esp for anything built with the default target. Currently the only use of this is for the "docs" target, which isn't a very low priority to remove.