diff options
author | TizenOpenSource <tizenopensrc@samsung.com> | 2023-01-09 12:00:19 +0900 |
---|---|---|
committer | TizenOpenSource <tizenopensrc@samsung.com> | 2023-01-09 12:00:19 +0900 |
commit | 575596137b326da0fb261d4c19abe44c172b0cb7 (patch) | |
tree | d979d5d65b28cf65628a9c59be4396612d7c587e /NEWS | |
parent | b11e2699c7ec42e6d2fc0f4c940f14e7c89b3974 (diff) | |
download | make-upstream.tar.gz make-upstream.tar.bz2 make-upstream.zip |
Imported Upstream version 4.4upstream/4.4upstream
Diffstat (limited to 'NEWS')
-rw-r--r-- | NEWS | 215 |
1 files changed, 207 insertions, 8 deletions
@@ -1,14 +1,206 @@ -GNU make NEWS -*-indented-text-*- +GNU Make NEWS -*-indented-text-*- History of user-visible changes. - 19 January 2020 + 31 October 2022 See the end of this file for copyrights and conditions. -All user-visible changes are more fully described in the GNU make manual, +All user-visible changes are more fully described in the GNU Make manual, which is contained in this distribution as the file doc/make.texi. -See the README file and the GNU make manual for instructions for +See the README file and the GNU Make manual for instructions for reporting bugs. +Version 4.4 (31 Oct 2022) + +A complete list of bugs fixed in this version is available here: + +https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=109&set=custom + +* WARNING: Deprecation! + The following systems are deprecated in this release: + - OS/2 (EMX) + - AmigaOS + - Xenix + - Cray + In the NEXT release of GNU Make, support for these systems will be removed. + If you want to see them continue to be supported, contact <bug-make@gnu.org>. + +* WARNING: Future backward-incompatibility! + In the NEXT release of GNU Make, pattern rules will implement the same + behavior change for multiple targets as explicit grouped targets, below: if + any target of the rule is needed by the build, the recipe will be invoked if + any target of the rule is missing or out of date. During testing some + makefiles were found to contain pattern rules that do not build all targets; + this can cause issues so we are delaying this change for one release cycle + to allow these makefiles to be updated. GNU Make shows a warning if it + detects this situation: "pattern recipe did not update peer target". + +* WARNING: Backward-incompatibility! + GNU Make now uses temporary files in more situations than previous releases. + If your build system sets TMPDIR (or TMP or TEMP on Windows) and deletes the + contents during the build, or uses restrictive permissions, this may cause + problems. You can choose an alternative temporary directory only for use by + GNU Make by setting the new MAKE_TMPDIR environment variable before invoking + make. Note that this value CANNOT be set inside the makefile, since make + needs to find its temporary directory before the makefiles are parsed. + +* WARNING: Backward-incompatibility! + Previously each target in a explicit grouped target rule was considered + individually: if the targets needed by the build were not out of date the + recipe was not run even if other targets in the group were out of date. Now + if any of the grouped targets are needed by the build, then if any of the + grouped targets are out of date the recipe is run and all targets in the + group are considered updated. + +* WARNING: Backward-incompatibility! + Previously if --no-print-directory was seen anywhere in the environment or + command line it would take precedence over any --print-directory. Now, the + last setting of directory printing options seen will be used, so a command + line such as "--no-print-directory -w" _will_ show directory entry/exits. + +* WARNING: Backward-incompatibility! + Previously the order in which makefiles were remade was not explicitly + stated, but it was (roughly) the inverse of the order in which they were + processed by make. In this release, the order in which makefiles are + rebuilt is the same order in which make processed them, and this is defined + to be true in the GNU Make manual. + +* WARNING: Backward-incompatibility! + Previously only simple (one-letter) options were added to the MAKEFLAGS + variable that was visible while parsing makefiles. Now, all options are + available in MAKEFLAGS. If you want to check MAKEFLAGS for a one-letter + option, expanding "$(firstword -$(MAKEFLAGS))" is a reliable way to return + the set of one-letter options which can be examined via findstring, etc. + +* WARNING: Backward-incompatibility! + Previously makefile variables marked as export were not exported to commands + started by the $(shell ...) function. Now, all exported variables are + exported to $(shell ...). If this leads to recursion during expansion, then + for backward-compatibility the value from the original environment is used. + To detect this change search for 'shell-export' in the .FEATURES variable. + +* WARNING: New build requirement + GNU Make utilizes facilities from GNU Gnulib: Gnulib requires certain C99 + features in the C compiler and so these features are required by GNU Make: + https://www.gnu.org/software/gnulib/manual/html_node/C99-features-assumed.html + The configure script should verify the compiler has these features. + +* New feature: The .WAIT special target + If the .WAIT target appears between two prerequisites of a target, then + GNU Make will wait for all of the targets to the left of .WAIT in the list + to complete before starting any of the targets to the right of .WAIT. + This feature is available in some other versions of make, and it will be + required by an upcoming version of the POSIX standard for make. + Different patches were made by Alexey Neyman <alex.neyman@auriga.ru> (2005) + and Steffen Nurpmeso <steffen@sdaoden.eu> (2020) that were useful but the + result is a different implementation (closer to Alexey's idea). + +* New feature: .NOTPARALLEL accepts prerequisites + If the .NOTPARALLEL special target has prerequisites then all prerequisites + of those targets will be run serially (as if .WAIT was specified between + each prerequisite). + +* New feature: The .NOTINTERMEDIATE special target + .NOTINTERMEDIATE disables intermediate behavior for specific files, for all + files built using a pattern, or for the entire makefile. + Implementation provided by Dmitry Goncharov <dgoncharov@users.sf.net> + +* New feature: The $(let ...) function + This function allows user-defined functions to define a set of local + variables: values can be assigned to these variables from within the + user-defined function and they will not impact global variable assignments. + Implementation provided by Jouke Witteveen <j.witteveen@gmail.com> + +* New feature: The $(intcmp ...) function + This function allows conditional evaluation controlled by a numerical + comparison. + Implementation provided by Jouke Witteveen <j.witteveen@gmail.com> + +* New feature: Improved support for -l / --load-average + On systems that provide /proc/loadavg (Linux), GNU Make will use it to + determine the number of runnable jobs and use this as the current load, + avoiding the need for heuristics. + Implementation provided by Sven C. Dack <sdack@gmx.com> + +* New feature: The --shuffle command line option + This option reorders goals and prerequisites to simulate non-determinism + that may be seen using parallel build. Shuffle mode allows a form of "fuzz + testing" of parallel builds to verify that all prerequisites are correctly + described in the makefile. + Implementation provided by Sergei Trofimovich <siarheit@google.com> + +* New feature: The --jobserver-style command line option and named pipes + A new jobserver method is used on systems where mkfifo(3) is supported. + This solves a number of obscure issues related to using the jobserver + and recursive invocations of GNU Make. This change means that sub-makes + will connect to the jobserver even if they are not marked as recursive. + It also means that other tools that want to participate in the jobserver + will need to be enhanced as described in the GNU Make manual. + You can force GNU Make to use the simple pipe-based jobserver (perhaps if + you are integrating with other tools or older versions of GNU Make) by + adding the '--jobserver-style=pipe' option to the command line of the + top-level invocation of GNU Make, or via MAKEFLAGS or GNUMAKEFLAGS. + To detect this change search for 'jobserver-fifo' in the .FEATURES variable. + +* Some POSIX systems (*BSD) do not allow locks to be taken on pipes, which + caused the output sync feature to not work properly there. Also multiple + invocations of make redirecting to the same output file (e.g., /dev/null) + would cause hangs. Instead of locking stdout (which does have some useful + performance characteristics, but is not portable) create a temporary file + and lock that. Windows continues to use a mutex as before. + +* GNU Make has sometimes chosen unexpected, and sub-optimal, chains of + implicit rules due to the definition of "ought to exist" in the implicit + rule search algorithm, which considered any prerequisite mentioned in the + makefile as "ought to exist". This algorithm has been modified to prefer + prerequisites mentioned explicitly in the target being built and only if + that results in no matching rule, will GNU Make consider prerequisites + mentioned in other targets as "ought to exist". + Implementation provided by Dmitry Goncharov <dgoncharov@users.sf.net> + +* GNU Make was performing secondary expansion of all targets, even targets + which didn't need to be considered during the build. In this release + only targets which are considered will be secondarily expanded. + Implementation provided by Dmitry Goncharov <dgoncharov@users.sf.net> + +* If the MAKEFLAGS variable is modified in a makefile, it will be re-parsed + immediately rather than after all makefiles have been read. Note that + although all options are parsed immediately, some special effects won't + appear until after all makefiles are read. + +* The -I option accepts an argument "-" (e.g., "-I-") which means "reset the + list of search directories to empty". Among other things this can be used + to prevent GNU Make from searching in its default list of directories. + +* New debug option "print" will show the recipe to be run, even when silent + mode is set, and new debug option "why" will show why a target is rebuilt + (which prerequisites caused the target to be considered out of date). + Implementation provided by David Boyce <David.S.Boyce@gmail.com> + +* The existing --trace option is made equivalent to --debug=print,why + +* Target-specific variables can now be marked "unexport". + +* Exporting / unexporting target-specific variables is handled correctly, so + that the attribute of the most specific variable setting is used. + +* Special targets like .POSIX are detected upon definition, ensuring that any + change in behavior takes effect immediately, before the next line is parsed. + +* When the pipe-based jobserver is enabled and GNU Make decides it is invoking + a non-make sub-process and closes the jobserver pipes, it will now add a new + option to the MAKEFLAGS environment variable that disables the jobserver. + This prevents sub-processes that invoke make from accidentally using other + open file descriptors as jobserver pipes. For more information see + https://savannah.gnu.org/bugs/?57242 and https://savannah.gnu.org/bugs/?62397 + +* A long-standing issue with the directory cache has been resolved: changes + made as a side-effect of some other target's recipe are now noticed as + expected. + +* GNU Make can now be built for MS-Windows using the Tiny C tcc compiler. + Port provided by Christian Jullien <eligis@orange.fr> + + Version 4.3 (19 Jan 2020) A complete list of bugs fixed in this version is available here: @@ -35,6 +227,13 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&se already contains some value. Similarly, appending an empty string does not add a trailing space. +* WARNING: Backward-incompatibility! + Previously using the .SILENT pseudo-target in a makefile would force all + sub-makes to be invoked with the '-s' option, effectively making all + sub-makes silent as well. In this release .SILENT only affects the current + invocation of make. A side-effect of this is that .SILENT will no longer + enable the --no-print-directory option, which using -s will do. + * NOTE: Deprecated behavior. Contrary to the documentation, suffix rules with prerequisites are being treated BOTH as simple targets AND as pattern rules. Further, the @@ -256,7 +455,7 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&se * New feature: "::=" simple assignment operator as defined by POSIX in 2012. This operator has identical functionality to ":=" in GNU make, but will be portable to any implementation of make conforming to a sufficiently new - version of POSIX (see http://austingroupbugs.net/view.php?id=330). It is + version of POSIX (see https://austingroupbugs.net/view.php?id=330). It is not necessary to define the .POSIX target to access this operator. * New feature: Loadable objects @@ -929,7 +1128,7 @@ Version 3.77 (28 Jul 1998) This port was done by Klaus Kämpf <kkaempf@rmi.de> * There is first-level support available from proGIS Software, Germany. - Visit their web-site at http://www.progis.de to get information + Visit their web-site at https://www.progis.de to get information about other vms software and forthcoming updates to gnu make. * /bin/sh style I/O redirection is supported. You can now write lines like @@ -1619,7 +1818,7 @@ Version 3.05 (Changes from versions 1 through 3.05 were never recorded. Sorry.) ------------------------------------------------------------------------------- -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2022 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -1632,4 +1831,4 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see <http://www.gnu.org/licenses/>. +this program. If not, see <https://www.gnu.org/licenses/>. |