Version 10 (modified by coke, 4 years ago)

--

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; svn st --no-ignore.
    • 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
  • checkdepend.pl should verify perl dependencies.
  • checkdepend.pl should verify pir deps.
  • checkdepend.pl should be really be able to generate makefiles, not just verify them.
  • recursive make is bad. Avoid it where possible, esp for anything built with the default target.
    • eliminate the recursive 'docs' target.
    • eliminate the recursive 'dynoplibs' target.
    • eliminate the recursive 'dynpmc' target.
avoid make targets with two+ targets on the left; make is allowed to call this rule twice, which is probably not what you want.

Some tickets: #576 #382 #1214 #338 #1285 #1418

Completed

  • checkdepend.pl should interpolate variables like make does when checking make. (not all at once at the end, but as-we-go.)
  • Specifically: eliminate parrot_include step.
20:41 <@Coke> there's a tools/dev/h2pasm.pl that does about 90% of what it 
              needs to.
20:41 <@Coke> er, s/dev/build/
20:41 <@Coke> each input file has multiple potential output files.
20:42 <@cotto> so you're filling in the other 90%.  Got it.
20:42 <@Coke> needs to be updated to take the output filename as an arg, and 
              then again so it only outputs the directives for /that/ output 
              file.
20:42 <@Coke> (and then tools/dev/h2perl.pl needs to be written.)
20:43 <@Coke> (which is basically a copy. refactor ahoy.)
20:43 <@cotto> nom
20:44 <@Coke> And I think I missed a few output files when I removed the 
              existing deps. should double check the input files for all the 
              potential out files and make sure they are all in the makefile.
20:45 <@Coke> writing this up...

one_make branch was merged into trunk Jan 25 2010 09:44 PM ET in r43593

At merge point, this was what tools/dev/checkdepend.pl was showing:

$ perl tools/dev/checkdepend.pl 2>&1 | grep 'not ok'     
not ok 62 - src/glut_callbacks.c has correct dependencies (Makefile: line 3509).
not ok 119 - compilers/data_json/data_json.pir has correct dependencies 
  (compilers/data_json/Rules.mak: line 1).
not ok 120 - compilers/json/JSON.pir has correct dependencies 
  (compilers/json/Rules.mak: line 1).
not ok 122 - compilers/json/JSON/pge2pir.pir has correct dependencies 
  (no rule found for this file).
not ok 127 - compilers/nqp/bootstrap/nqp.pir has correct dependencies 
  (compilers/nqp/Rules.mak: line 21).
not ok 137 - compilers/pct/src/PCT/Grammar.pir has correct dependencies 
  (no rule found for this file).
not ok 142 - compilers/pge/PGE.pir has correct dependencies 
  (no rule found for this file).
not ok 146 - compilers/pge/PGE/P5Regex.pir has correct dependencies 
  (no rule found for this file).