Changes between Version 18 and Version 19 of BuildTaskList

Show
Ignore:
Timestamp:
01/04/11 17:07:05 (11 years ago)
Author:
coke
Comment:

remove stuff that's done, clean up what's left a bit.

Legend:

Unmodified
Added
Removed
Modified
  • BuildTaskList

    v18 v19  
    11Goals: 
    22 
    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. 
    66  * accurate build dependencies 
    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}}} 
    3413 
    3514Some tickets: 
    3615#576 #382 #1214 #338 #1285  #1418 
    3716 
    38 == Completed == 
     17== wishlist == 
    3918 
    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 }}} 
     19Avoid 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.