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.