[LLVMdev] Cleaning out .d files

Casey Carter ccarter at cs.uiuc.edu
Wed Aug 20 22:32:00 PDT 2003

Chris Lattner wrote:

>I just wanted to mention that there is a new global makefile target "make
>cleandeps", which recursively walks through the source tree, deleting .d
>files, without removing anything else.
>This is useful when you update from CVS, and find out that there has been
>a header file removed.  Before you'd have to go in and remove the
>outdated .d manually, now you can just run 'make cleandeps'.
>Obviously it would be nice if this probably didn't exist at all, but I
>don't know of a good solution to this problem...
One slightly hackish way to deal with this problem is to have an 
implicit "empty" rule for .h files:

%.h: ;

make tries to use this rule to "generate" .h files that don't exist. 
 Nothing is actually done (the ";" is an empty command list) but make 
decides that it can/must rebuild stuff that depends on the .h file.  So 
the build can then continue to the point that the .d file gets 
regenerated by compilation.

Option 2 is to post-process the .d files and add a line for each header 
file with no dependencies and no commands:

foo.c: bar.h baz.h

which achieves the same end but without side effects.

Casey Carter
Casey at Carter.net
ccarter at cs.uiuc.edu
AIM: cartec69

More information about the llvm-dev mailing list