>> Ant is different. Instead of a model where it is extended with shell based
>commands, it is
>> extended using Java classes. Instead of writing shell commands, the
>configuration files
>> are XML based calling out a target tree where various tasks get executed.
>Each task is run
>> by an object which implements a particular Task interface.

Ant is really Java centric, as well as somewhat verbose due to it's
XMLness, if i remember correctly from my brief look at it.

I'm going to propose something (once I have time to write it up
properly[1]) that might look something like this:

[pardon the imaginary filenames]

use PerlBuild;
my @o = Obj( "perl.c",
             "string.c",
             "george.c",
             [ OPTIMIZE => 'MAX',
               DEFINE => [qw(USEDEVEL THREADS ITHREADS)]]);
my $so = SharedLib( "libperl", @o, [ SOVERSION => "6.0.0" ]);
InstallFile("/usr/lib/$so", $so );
...

Platform specific defaults would be set somewhere in the build
objects, or in platform classes.  The values in the DEFINE example
above would be replaced by something based on some arrgument, the user
wouldn't have to edit the PerlBuildFile, of course.

That's the general idea.  Things are built out of objects which talk
to each other, to build a full description of what to make.  Once you
have that description, the easy part begins (really), which is getting
the proper order and then executing the commands.[2]

If anyone else is interested in working on the front end, (with this
kind of interface or not) I've got a backend pretty much ready to go.[3]

-R [4]


Footnotes: 
[1]  Unless this gets shot down now :)

[2] This objecty syntax may seem weird to people used to Make, but a
few weeks of research at $day_job found that it was very hard to
cleanly express cross platform things in a clean Make-like syntax.
Make does lots of things really well, but dealing with platform
specific things in a clean manner isn't one of them.

[3]  The current state is that it parses make-like files, does some
simple variable substitutions, and thats it.  Not based on any
pre-existing perl make-code.  Oh yes, on unix, it supports a simple
 parallel building.  (i.e. -j)

[4] Abusing footnote-mode, and not totally sold that we can't "make
make" work for us.  (Or a subset of it.)



Reply via email to