Let's say that I want all inc* directories in project to be automatically in the include path. In my Makefile I used to have the following:
CFLAGS = $(shell find "$(CURDIR)" -iname inc* -exec find {} -type d \; | sed -e "s/^/-I/")
I am not at all sure, how to do that with tup, but I came up with the following solution:
CFLAGS = '\\$(find "' .. tup.getcwd() .. '" -iname inc* -exec find {} -type d \\; | sed -e "s/^/-I/")'
CFLAGS then gets included in the compilation command. I would assume that tup then instruments the find executable, and notices that it reads the content of all directories, therefore detecting all directories as dependencies? This does not seem to be the case however: adding new directories (named inc) does not cause re-compilation of sources.
When I add a new directory named inc, such that it appears first in the find output, and create a new .h file there, named such that it would be included in some existing source, tup claims that everything is up to date (while the output actually doesn't include the new header), but does compile with this new header after I manually delete previous output files.
As the manual claims that "Should you find otherwise, you've likely found a bug in tup (not your Tupfiles), in which case you should notify the mailing list.", so here I am. Two questions: is this a bug, and how to best achieve my desired result with tup? Note that the solution that I came up with executes the find commands again for each compiled source, which is not really optimal, how could I have it so that it gets called at most once per tup update? (My previous make solution of course required make clean, but then again, it had support for make clean.)