See the README file and the GNU Make manual for instructions for
reporting bugs.
-* 'make --print-data-base' (or 'make -p') now outputs time of day
- using the same form as for file timestamps, e.g., "2023-05-10
- 10:43:57.570558743". Previously it used the form "Wed May 10
- 10:43:57 2023", which has less detail and is harder to compare.
-
\f
Version 4.4.90 (26 Feb 2023)
your initialization function can check the provided ABI version to verify
it's being loaded correctly.
+* WARNING: Backward-incompatibility!
+ Parsing of the first argument in ifeq/ifneq with () has been cleaned up.
+ When locating the separating "," any variable reference (single char as well
+ as using $() or ${}) is skipped. However parentheses that are not part of
+ or contained in variable references will not be counted. This means that
+ things like "ifeq ((foo,bar),)" are now syntax errors. Use a variable to
+ hide the comma if needed: "COMMA = ," / "ifeq ((foo$(COMMA)bar),)".
+
* New feature: Unload function for loaded objects
When a loaded object needs to be unloaded by GNU Make, it will invoke an
unload function (if one is defined) beforehand that allows the object to
invoked recursively, warnings can be controlled only for the current
instance of make using the .WARNINGS variable.
+* 'make --print-data-base' (or 'make -p') now outputs time of day
+ using the same form as for file timestamps, e.g., "2023-05-10
+ 10:43:57.570558743". Previously it used the form "Wed May 10
+ 10:43:57 2023", which has less detail and is harder to compare.
+
* Conditional statements starting with the recipe prefix were sometimes
interpreted in previous versions. As per the documentation, lines starting
with the recipe prefix are now never considered conditional statements.
!,
'', "#MAKE#: 'all' is up to date.");
+# SV 64402: parse braces in ifeq/ifneq properly
+
+run_make_test(q!
+ifeq ($(and a,b),)
+endif
+ifeq (${and a,b},)
+endif
+ifeq (${and $(x),${or $(z),${q}}},)
+endif
+ifeq (${and ),(},)
+endif
+ifeq ($(and },{),)
+endif
+# We can hide the comma in a variable
+C = ,
+ifeq ((and a$Cb),)
+endif
+all:;
+!,
+ '', "#MAKE#: 'all' is up to date.");
+
+# The "," in "$," is a variable name not a comma
+run_make_test(q!
+ifeq ($,,)
+$(info ok)
+endif
+all:;
+!,
+ '', "ok\n#MAKE#: 'all' is up to date.");
+
+# Without variable references we don't do anything special with parens
+run_make_test(q!
+ifeq ((and a,b),)
+endif
+all:;
+!,
+ '', "#MAKEFILE#:2: extraneous text after 'ifeq' directive\n#MAKE#: 'all' is up to date.");
+
# This tells the test driver that the perl test script executed properly.
1;