Follow-up Comment #5, bug #31430 (project make):

Those lines were never ignored (GNU make never ignores malformed lines). 
Instead, because the prefix "!" was not recognized, GNU make assumed that it
was part of the variable name.  If you look at the output of GNU make -p with
your sample makefile and search for "OS" you'll see a variable defined named
"OS      !".  That's why it appears that the line has no effect because you
never try to access that variable.

The change in GNU make 3.82 was that variable names containing whitespace were
disallowed; this IS documented in the NEWS file as a
backward-incompatibility:


* WARNING: Backward-incompatibility!
  As a result of parser enhancements, three backward-compatibility issues
  exist: first, a prerequisite containing an "=" cannot be escaped with a
  backslash any longer.  You must create a variable containing an "=" and
  use that variable in the prerequisite.  Second, variable names can no
  longer contain whitespace, unless you put the whitespace in a variable and
  use the variable.  Third, in previous versions of make it was sometimes
  not flagged as an error for explicit and pattern targets to appear in the
  same rule.  Now this is always reported as an error.


You can work around this by removing the whitespace in your makefile; changing
it to use this:


OS:=       $(shell uname -s)
OS!=       uname -s


Then it will work again.  Not that I'm necessarily recommending this as a best
practice or anything...

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?31430>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/


_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to