[ET Trac] [Einstein Toolkit] #1522: Improve determining make dependencies

Einstein Toolkit trac-noreply at einsteintoolkit.org
Fri Jan 17 11:36:05 CST 2014


#1522: Improve determining make dependencies
--------------------------+-------------------------------------------------
  Reporter:  eschnett     |       Owner:                     
      Type:  enhancement  |      Status:  new                
  Priority:  major        |   Milestone:                     
 Component:  Cactus       |     Version:  development version
Resolution:               |    Keywords:                     
--------------------------+-------------------------------------------------

Comment (by eschnett):

 sbrandt: The script doesn't replace continuations with dependencies, it
 adds dependencies (">>") to the continuation that remain. This means that
 files that don't exist any more don't lead to make errors.

 rhaas: Yes, dependencies are generated when a file changes. If the
 makefile or the compile options change, then all dependencies are invalid
 and need to be regenerated. If Cactus doesn't do that automatically, then
 a make *-cleandeps may be necessary. (I'm not proposing to remove this.)

 There is no need to generate dependencies "quickly". If they are missing,
 then the respective source file needs to be recompiled anyway. (Otherwise,
 how would you know whether an existing object file was created from the
 right dependencies and options?)

 The latter point confused me for a bit. Here is an example:
 File source.c:
 {{{
 #if useA
 #  include "a.h"
 #else
 #  include "b.h"
 #endif
 ... code using stuff declared in a.h or b.h ...
 }}}

 If there is a change that makes source.c switch from using a.h to using
 b.h, then it needs to be recompiled. However, both a.h and b.h may be
 older than the object file source.o -- so keeping source.o around is an
 error, as neither the old nor the new dependencies would indicate that
 source.o is out of date. Hence, re-generating dependencies without
 recompiling is an error.

-- 
Ticket URL: <https://trac.einsteintoolkit.org/ticket/1522#comment:3>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit


More information about the Trac mailing list