Re: touch commands in Makefiles

From: Peter Samuelson (peter@cadcamlab.org)
Date: Sat Jan 26 2002 - 20:29:58 EST


[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
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Jan 31 2002 - 21:00:42 EST