summaryrefslogtreecommitdiff
path: root/NEWS
diff options
context:
space:
mode:
authorTizenOpenSource <tizenopensrc@samsung.com>2023-01-09 12:00:19 +0900
committerTizenOpenSource <tizenopensrc@samsung.com>2023-01-09 12:00:19 +0900
commit575596137b326da0fb261d4c19abe44c172b0cb7 (patch)
treed979d5d65b28cf65628a9c59be4396612d7c587e /NEWS
parentb11e2699c7ec42e6d2fc0f4c940f14e7c89b3974 (diff)
downloadmake-upstream.tar.gz
make-upstream.tar.bz2
make-upstream.zip
Imported Upstream version 4.4upstream/4.4upstream
Diffstat (limited to 'NEWS')
-rw-r--r--NEWS215
1 files changed, 207 insertions, 8 deletions
diff --git a/NEWS b/NEWS
index e884df1..c370b0a 100644
--- a/NEWS
+++ b/NEWS
@@ -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/>.