Tup é sistema de compilação baseado em arquivos - recebe uma lista de mudanças em arquivos e um grafo acíclico direcionado (DAG), depois processa o DAG para executar os comandos apropriados requeridos para atualizar arquivos dependentes. O DAG é armazenado num banco de dados SQLite. Por padrão uma lista de mudanças em arquivos é gerada através de um scan no sistema de arquivos. Alternativamente, uma lista pode ser adiantadamente provida através da execução de um daemon que monitora o sistema de arquivos, já incluído com o pacote do tup, ou mesmo a partir de um IDE. Uma vez o log de mudanças em arquivos é provido e as dependências armazenadas em uma estrutura de banco de dados eficiente, atualizações podem ser executadas com mínimo overhead. O daemon monitor usa inotify, portanto só funciona em Linux. O restante do tup provavelmente poderia ser portado de maneira relativamente fácil a outros sistemas UNIX-like, desde que haja um mecanismo para determinar leituras e escritas de subprocessos que são disparados.
Site oficial: http://gittup.org/tup/
Confira os exemplos: http://gittup.org/tup/examples.html
Fonte: http://softlibre.barrapunto.com/softlibre/10/03/09/1059258.shtml