On Thu, Sep 05, 2002 at 12:12:52PM +0100, Nicholas Clark wrote: > On Thu, Sep 05, 2002 at 07:03:00AM -0400, Dan Sugalski wrote: > > 4) The *only* tools you will need to build parrot are a C compiler > > environment and either a make tool or a shell > > I believe we may be able to get away without a make tool or a shell. > > It won't be pretty, but I see no reason why we can't automatically > generate the default order of building things from source code scratch into > a C program, which manually ask the user > > 1: build this C program from this single self contained C source file > 2: run it, with the current directory being the parrot source directory
The way I'd do it is to have a make-like utility (possibly written in Perl), that has two modes of action. First it can act as a traditional make, and would be used by developers during the frequent compilation cycles. Second, it has the ability to produce an output script based on the dependency tree, in one of several formats, eg UNIX shell, whatever VMS uses, DOS batch (?!?) etc. This script would be a simple unconditional build everything script, just listing all the comands that the make would have executed anyway. So for example in the UNIX setup it might output a shell script looking like #!/bin/sh . config.sh . policy.sh $CC -$CCFLAGS -o foo.o foo.c $CC -$CCFLAGS -o bar.o bar.c .... Then the output scripts can be bundled with with the src code, so the initial build can be done without having Perl (or whatever) around. This may also be useful for initial porting to new machines. But I haven't thought this through much, and its probably Not Nearly As Simple As I Think. No doubt Andy or Brent will put me right :-) Dave. -- "But Sidley Park is already a picture, and a most amiable picture too. The slopes are green and gentle. The trees are companionably grouped at intervals that show them to advantage. The rill is a serpentine ribbon unwound from the lake peaceably contained by meadows on which the right amount of sheep are tastefully arranged." Lady Croom - Arcadia