| 3 | | * 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}}}. |
| 4 | | * ext/Parrot-Embed/Makefile.PL should not be generated; it should just use Parrot::Config to get @ this config-time information. |
| 5 | | * the steps that generate PMC related info don't have to happen at config time. move them into the build. |
| | 3 | * 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}}}. |
| | 4 | * ext/Parrot-Embed/Makefile.PL should not be generated; it should just use Parrot::Config to get @ this config-time information. |
| | 5 | * the steps that generate PMC related info don't have to happen at config time. move them into the build. |
| 7 | | * checkdepend.pl should verify perl dependencies. |
| 8 | | * checkdepend.pl should verify pir deps. |
| 9 | | * checkdepend.pl should be able to '''generate''' makefiles, not just verify them. |
| 10 | | * recursive make is bad. Avoid it where possible, esp for anything built with the default target. |
| 11 | | * eliminate the recursive 'docs' target. |
| 12 | | * eliminate the recursive 'dynoplibs' target. |
| 13 | | * eliminate the recursive 'dynpmc' target. |
| 14 | | * avoid make targets with two+ targets on the left; parallel make is allowed to call this rule twice, which is probably not what you want. |
| 15 | | * make checkdepend.pl squawk about this, to make them easier to find and replace? |
| 16 | | * Instead of invoking $(CC) directly, we invoke tools/dev/cc_flags.pl to invoke CC for us. We should use the c compiler directly instead; to support the cases where cc_flags.pl is using customized flags for a particular build step, that should be handled in the generated makefile, not by running a script to figure it out at build time. ./CFLAGS is currently generated from a cflags.in file that is using the conditional makefile syntax. Once we start generating the dependencies manually, we can generate manual rules for anything that requires non-standard CFLAGS. |
| 17 | | |
| 18 | | Originally from checkdepend.pl: |
| 19 | | {{{ |
| 20 | | This script will currently generate false positives. This happens because it |
| 21 | | assumes that there must be a fixed relationship between source and object |
| 22 | | files, e.g. C<buz/baz/foo.pir> will be built into C<buz/baz/foo.pbc>. |
| 23 | | |
| 24 | | This |
| 25 | | assumption holds in most cases but breaks down when a file with a dependency is |
| 26 | | not compiled into an object file of the same name. A possible solution to this |
| 27 | | is to use C-style compilation with separate build and "link" targets using |
| 28 | | pbc_merge. The other alternative involves making this script significantly |
| 29 | | smarter about figuring out which rules create a given object file. |
| 30 | | }}} |
| 31 | | |
| 32 | | - the plan here should be to have all pir that gets compiled initially be compiled to a pbc in the same directory (just like the standard .c->.o compilation process) - 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 |
| 33 | | us track the deps more automatically. |
| | 7 | * {{{t/src/checkdepend.t}}} should verify perl dependencies |
| | 8 | * including the cases where, e.g. a perl tool (and its libs) are required to build a C file. |
| | 9 | * {{{t/src/checkdepend.t}}} should verify PIR dependencies. |
| | 10 | * {{{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. |
| | 11 | * {{{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. |
| | 12 | * 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}}} |
| 40 | | * ~~checkdepend.pl should interpolate variables like make does when checking make. (not all at once at the end, but as-we-go.)~~ |
| 41 | | * ~~ Specifically: eliminate parrot_include step. ~~ |
| 42 | | |
| 43 | | ''one_make'' branch was merged into trunk Jan 25 2010 09:44 PM ET in r43593 |
| 44 | | |
| 45 | | At merge point, this was what ''tools/dev/checkdepend.pl'' was showing: |
| 46 | | {{{ |
| 47 | | $ perl tools/dev/checkdepend.pl 2>&1 | grep 'not ok' |
| 48 | | not ok 62 - src/glut_callbacks.c has correct dependencies (Makefile: line 3509). |
| 49 | | not ok 119 - compilers/data_json/data_json.pir has correct dependencies |
| 50 | | (compilers/data_json/Rules.mak: line 1). |
| 51 | | not ok 120 - compilers/json/JSON.pir has correct dependencies |
| 52 | | (compilers/json/Rules.mak: line 1). |
| 53 | | not ok 122 - compilers/json/JSON/pge2pir.pir has correct dependencies |
| 54 | | (no rule found for this file). |
| 55 | | not ok 127 - compilers/nqp/bootstrap/nqp.pir has correct dependencies |
| 56 | | (compilers/nqp/Rules.mak: line 21). |
| 57 | | not ok 137 - compilers/pct/src/PCT/Grammar.pir has correct dependencies |
| 58 | | (no rule found for this file). |
| 59 | | not ok 142 - compilers/pge/PGE.pir has correct dependencies |
| 60 | | (no rule found for this file). |
| 61 | | not ok 146 - compilers/pge/PGE/P5Regex.pir has correct dependencies |
| 62 | | (no rule found for this file). |
| 63 | | }}} |
| | 19 | 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. |