On Tue, 2015-02-17 at 21:54 -0800, Dale Lukas Peterson wrote:
> I am working with a build system that has a lot of undefined make
> variables used in the makefiles.  The --warn-undefined-variables flag
> has been very helpful in cleaning things up.  Is there a way to warn
> when a make variable is defined but never used?  This would further
> help remove dead build system code.

The hard thing about this is that GNU make never evaluates the contents
of recipes that it doesn't invoke.  This means that variables used only
within recipes that are never evaluated, would not be noticed as being
"used":

  CLEAN = foo.o bar.o biz.o

  all: foo
    ...

  clean: ; rm -f $(CLEAN)

Here if you run "make" or "make all", the variable CLEAN is never
expanded and so would be considered "unused".

The only way to determine if a variable is really unused would be for
make to go through and expand all the recipes to see which variables
were evaluated.  And, just expanding recipes can have unpleasant
side-effects as sometimes they contain $(shell ...), $(eval ...),
$(info ...), etc. functions which actually perform some behavior.


_______________________________________________
Help-make mailing list
Help-make@gnu.org
https://lists.gnu.org/mailman/listinfo/help-make

Reply via email to