cooperative-computing-lab/cctools — pull request #141 by pbui (2013-07-23 18:57:03+00:00)
Title: Makeflow syntax extensions

During the XSEDE Makeflow and Work Queue tutorial, a user mentioned that having the ability to glob or use some more of GNU Make's syntax features would make Makeflow more attractive.

This is have been a controversial topic for us and in the past we have resisted going down that path. That said, I believe this is a reasonable request, and went ahead and added three new syntax extensions:

1. wildcard substitutions: users can perform globbing by using the wildcard function:

MAKEFLOW_SOURCE = $(wildcard *.makeflow)

2. implicit variables: users can use implicit variables as placeholders for rule inputs and outputs:

output: input
command $^ > $@

3. static pattern rules: users can utilize template patterns that expand to a number of nodes:

$(wildcard *.makeflow): %.md5sum: %.makeflow
md5sum %^ > $@

For the most part, I tried to stay as close to GNU Make's syntax as possible. I've added three test cases (one for each of the new extensions).

Please let me know your thoughts on these extensions.