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