[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [BUG] --warn-undefined-variable is not triggered in prerequisites

From: Paul Smith
Subject: Re: [BUG] --warn-undefined-variable is not triggered in prerequisites
Date: Fri, 28 Jan 2022 17:49:06 -0500
User-agent: Evolution 3.36.5-0ubuntu1

On Fri, 2022-01-28 at 01:09 +0100, Alejandro Colomar (man-pages) wrote:
> I'd like make to warn about this.  It took me a while to debug 
> a Makefile bug, which I thought was not happening, since make should
> have warned me.  Isn't this supposed to trigger the warning?

In previous versions of GNU make, the value of MAKEFLAGS set inside a
makefile is only re-parsed once before all makefiles are read (from the
environment) and again after all makefiles are read.

So, changes to this variable within the makefile don't take effect
until after all makefiles are parsed.  In your situation the variable
in question is part of a prerequisite list and that's expanded while
parsing the makefile, so the option is not set yet and you don't get
warnings.  Undefined variables used in a recipe WOULD be warned about
since recipes are expanded after all makefiles are parsed.

To make this option do what you want you must pass it in either via the
command line:

   $ make --warn-undefined-variables

or the environment:

   $ MAKEFLAGS=--warn-undefined-variables make


   $ GNUMAKEFLAG=--warn-undefined-variables make

In the next release of GNU make, this has been changed; from the NEWS

* If the MAKEFLAGS variable is modified in a makefile, it will be re-parsed
  immediately rather than after all makefiles have been read.  Note that
  although all options are parsed immediately, some special effects won't
  appear until after all makefiles are read.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]