%% Alexey Neyman <[EMAIL PROTECTED]> writes:

  an> I think the following Makefile does just what you want:

  an> %.d %.o: %.c
  an>     gcc -c -MT '$*.o $*.d' -MD -MF $*.d -o $*.o $<

One of the key points of the advanced auto-dependency method is that you
CANNOT have rules that build .d files.  If you do, make will attempt to
build them as included makefiles, which is exactly what you're trying to
AVOID in the advanced method.

%% On Wednesday 13 April 2005 13:44, [EMAIL PROTECTED] wrote:


  >> But my suggestion is: if you want so much, that the .d (actually
  >> .P) files get regenerated in cases they get deleted - then you
  >> obviously need a rule for them, like the one listed in "Basic
  >> Auto-Dependencies".

But then you're using the "basic auto-dependency" method, not the
advanced auto-dependency method.

See the paper on the problems that occur when you have a rule that
builds .d files.

  >> Also what I dislike about the trick listed in "Advanced
  >> Auto-Dependencies" is that it doesn't work for parallel builds:
  >> there is no rule for .P files.  A process includes a .P file while
  >> it is still being generated by another process and the build fails
  >> (we use pvmgmake here).

I can't speak to the specifics of pvmgmake, but I don't see any way
advanced auto-dependencies conflict with parallel builds.  The makefiles
are all completely parsed BEFORE any rules are invoked, so there's no
way (unless you're running multiple instances of make in the same
directory at the same time, which is going to cause problems no matter
what you do) that the include of the dependency file could conflict with
the generation of that file.

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <[EMAIL PROTECTED]>          Find some GNU make tips at:
 http://www.gnu.org                      http://make.paulandlesley.org
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist


_______________________________________________
Help-make mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-make

Reply via email to