Instead of one file which combines target, prereqs, and commands,
credo (a bit inspired by djb's redo, but without the redo-* commands)
uses a shell script or program (per target) to store commands,
and a list of files and checksums (per target) to store a target's
view of its prerequisites.
I also wrote a little script (mkdodep) to take templates for the build
scripts and dependency lists from a library directory and customize
them for the targets the user wants to create.
The idea is to automate as much as possible, at as fine-grained a level
as possible, the task of writing and customizing the build system.
Simple, small, separate files of single purpose with defined interfaces
seem better than the little language of makefiles in that regard.
For your consideration, I posted manual pages for credo and mkdodep.
http://jasoncatena-acmesac.googlecode.com/hg/test/1/credo/man1/credo.1
http://jasoncatena-acmesac.googlecode.com/hg/test/1/credo/man1/mkdodep.1
The code is in /dis and /lib/do in my clone of the Acme-SAC repository,
ever under development.
http://code.google.com/r/jasoncatena-acmesac/source/browse/#hg%2Fdis
http://code.google.com/r/jasoncatena-acmesac/source/browse/#hg%2Flib%2Fdo
Comments and constructive criticism welcome.
Jason Catena