GNU make 4.3 includes many bug fixes, new features and performance improvements.
Compatibility patches to make version 3.8 are removed in this release, making Fedora’s make the same as other distros.
Package owners relying on makefile features specific to older versions of GNU make (including compatibility patches for 3.8 we’re dropping) may FTBFS and need to tweak their Makefiles. Packages which were built previous to this upgrade will not be affected.
Specific backward incompatibility:
* WARNING: Backward-incompatibility! Number signs (#) appearing inside a macro reference or function invocation no longer introduce comments and should not be escaped with backslashes: thus a call such as: foo := $(shell echo '#') is legal. Previously the number sign needed to be escaped, for example: foo := $(shell echo '\#') Now this latter will resolve to "\#". If you want to write makefiles portable to both versions, assign the number sign to a variable: H := \# foo := $(shell echo '$H') This was claimed to be fixed in 3.81, but wasn't, for some reason. To detect this change search for 'nocomment' in the .FEATURES variable. * WARNING: Backward-incompatibility! Previously appending using '+=' to an empty variable would result in a value starting with a space. Now the initial space is only added if the variable already contains some value. Similarly, appending an empty string does not add a trailing space.
Grouped explicit targets Pattern rules have always had the ability to generate multiple targets with a single invocation of the recipe. It’s now possible to declare that an explicit rule generates multiple targets with a single invocation. To use this, replace the
&:in the rule. To detect this feature search for
grouped-targetin the .FEATURES special variable.
.EXTRA_PREREQS variable Words in this variable are considered prerequisites of targets but they are not added to any of the automatic variable values when expanding the recipe. This variable can either be global (applies to all targets) or a target-specific variable. To detect this feature search for
Makefiles can now specify the
-joption in their MAKEFLAGS variable and this will cause make to enable that parallelism mode.
GNU make will now use
posix_spawn()on systems where it is available. If you prefer to use fork/exec even on systems where posix_spawn() is present, you can use the
--disable-posix-spawnoption to configure.
Error messages printed when invoking non-existent commands have been cleaned up and made consistent.
A new option
--no-silenthas been added, that cancels the effect of the
A new option
-Ehas been added as a short alias for
Interoperate with newer GNU libc and musl C runtime libraries.
See the upstream release announcement for more detailed information about this release.
A complete list of bugs fixed in this version is available here make - Bugs