Outils de développement
GNU make 4.3
GNU make 4.3 includes many bug fixes, new features and performance improvements.
Backward-incompatibility
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.
New features
-
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
:
token with&:
in the rule. To detect this feature search forgrouped-target
in 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
extra-prereqs
in the.FEATURES
special variable. -
Makefiles can now specify the
-j
option 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-spawn
option to configure. -
Error messages printed when invoking non-existent commands have been cleaned up and made consistent.
-
A new option
--no-silent
has been added, that cancels the effect of the-s/--silent/--quiet
flag. -
A new option
-E
has been added as a short alias for--eval
. -
Interoperate with newer GNU libc and musl C runtime libraries.
See the upstream release announcement for more detailed information about this release.
Bugs fixed
A complete list of bugs fixed in this version is available here make - Bugs
Want to help? Learn how to contribute to Fedora Docs ›