On Tuesday, 3 February 2015 at 21:04:46 UTC, H. S. Teoh wrote:
In addition to an overhaul of the core algorithm, tup also has
some
clever tricks, like wrapping libc of executed commands, so that
all
*actual* inputs to the compiler (and other build commands) are
included
in the dependency graph -- if the compiler reads
/usr/include/stdio.h,
for example, tup will know that the source file depends on
stdio.h --
and this *without* needing to scan the source file manually or
asking
the user to specify such tedious things.
There's more, using this trick, it also check the output of the
compiler: orphans or unspecified targets are not allowed.
In this way, it has the complete graph of what is generated by
the build process, and, literally, there's no need for a clean,
ever.
If you modify a target file, tup will warn you that it will be
overwritten; if you add a build rule that will output a new file,
overwriting something that already exists, it will refuse to run,
and will ask you to remove the current file, and so on...
We are using it a lot, here at work, and we are really enjoying
it: we've a D tool that emits tup rules, for the chronicle... ;-)
---
P