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. |