Re: touch commands in Makefiles

Peter Samuelson
2002-01-27T01:30:25Z

[Brendan Simon]
> Why are header file touched in Makefiles ?

Dependency reasons. Header files depend on whatever CONFIG options
they reference, and this is implemented via proxy header files. Say
you have foo.c which includes foo_bar.h which makes a reference to
CONFIG_BAR. The correct dep tree would be

foo.o: foo.c foo_bar.h CONFIG_BAR

but, as it turned out, it was easier / more efficient to represent the
tree as

foo.o: foo.c foo_bar.h
foo_bar.h: CONFIG_BAR

This second tree is not strictly correct -- foo_bar.h does *not* in
fact need to be rebuilt when CONFIG_BAR changes -- so the 'touch'
commands are there to make it work correctly.

If you don't like it (and most of us don't!), you should patch your
tree with Keith Owens's 2.5 makefile structure, "kbuild-2.5". It fixes
this problem (and many others). It is hoped that kbuild-2.5 will be
merged with Linux 2.5 in the near future.

Peter