Imported Upstream version 4.0
[platform/upstream/make.git] / NEWS
diff --git a/NEWS b/NEWS
index 523c9a7..2227a35 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,6 @@
 GNU make NEWS                                               -*-indented-text-*-
   History of user-visible changes.
-  28 July 2010
+  09 Oct 2013
 
 See the end of this file for copyrights and conditions.
 
@@ -9,7 +9,111 @@ 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
 reporting bugs.
 \f
-Version 3.82
+Version 4.0 (09 Oct 2013)
+
+A complete list of bugs fixed in this version is available here:
+
+http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&set=custom
+
+* WARNING: Backward-incompatibility!
+  If .POSIX is specified, then make adheres to the POSIX backslash/newline
+  handling requirements, which introduces the following changes to the
+  standard backslash/newline handling in non-recipe lines:
+  * Any trailing space before the backslash is preserved
+  * Each backslash/newline (plus subsequent whitespace) is converted to a
+    single space
+
+* New feature: GNU Guile integration
+  This version of GNU make can be compiled with GNU Guile integration.
+  GNU Guile serves as an embedded extension language for make.
+  See the "Guile Function" section in the GNU Make manual for details.
+  Currently GNU Guile 1.8 and 2.0+ are supported.  In Guile 1.8 there is no
+  support for internationalized character sets.  In Guile 2.0+, scripts can be
+  encoded in UTF-8.
+
+* New command line option: --output-sync (-O) enables grouping of output by
+  target or by recursive make.  This is useful during parallel builds to avoid
+  mixing output from different jobs together giving hard-to-understand
+  results.  Original implementation by David Boyce <dsb@boyski.com>.
+  Reworked and enhanced by Frank Heckenbach <f.heckenbach@fh-soft.de>.
+  Windows support by Eli Zaretskii <eliz@gnu.org>.
+
+* New command line option: --trace enables tracing of targets.  When enabled
+  the recipe to be invoked is printed even if it would otherwise be suppressed
+  by .SILENT or a "@" prefix character.  Also before each recipe is run the
+  makefile name and linenumber where it was defined are shown as well as the
+  prerequisites that caused the target to be considered out of date.
+
+* New command line option argument: --debug now accepts a "n" (none) flag
+  which disables all debugging settings that are currently enabled.
+
+* New feature: The "job server" capability is now supported on Windows.
+  Implementation contributed by Troy Runkel <Troy.Runkel@mathworks.com>
+
+* New feature: The .ONESHELL capability is now supported on Windows.  Support
+  added by Eli Zaretskii <eliz@gnu.org>.
+
+* New feature: "!=" shell assignment operator as an alternative to the
+  $(shell ...) function.  Implemented for compatibility with BSD makefiles.
+  Note there are subtle differences between "!=" and $(shell ...).  See the
+  description in the GNU make manual.
+  WARNING: Backward-incompatibility!
+  Variables ending in "!" previously defined as "variable!= value" will now be
+  interpreted as shell assignment.  Change your assignment to add whitespace
+  between the "!" and "=": "variable! = value"
+
+* 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
+  not necessary to define the .POSIX target to access this operator.
+
+* New feature: Loadable objects
+  This version of GNU make contains a "technology preview": the ability to
+  load dynamic objects into the make runtime.  These objects can be created by
+  the user and can add extended functionality, usable by makefiles.
+
+* New function: $(file ...) writes to a file.
+
+* New variable: $(GNUMAKEFLAGS) will be parsed for make flags, just like
+  MAKEFLAGS is.  It can be set in the environment or the makefile, containing
+  GNU make-specific flags to allow your makefile to be portable to other
+  versions of make.  Once this variable is parsed, GNU make will set it to the
+  empty string so that flags will not be duplicated on recursion.
+
+* New variable: `MAKE_HOST' gives the name of the host architecture
+  make was compiled for.  This is the same value you see after 'Built for'
+  when running 'make --version'.
+
+* Behavior of MAKEFLAGS and MFLAGS is more rigorously defined.  All simple
+  flags are grouped together in the first word of MAKEFLAGS.  No options that
+  accept arguments appear in the first word.  If no simple flags are present
+  MAKEFLAGS begins with a space.  Flags with both short and long versions
+  always use the short versions in MAKEFLAGS.  Flags are listed in
+  alphabetical order using ASCII ordering.  MFLAGS never begins with "- ".
+
+* Setting the -r and -R options in MAKEFLAGS inside a makefile now works as
+  expected, removing all built-in rules and variables, respectively.
+
+* If a recipe fails, the makefile name and linenumber of the recipe are shown.
+
+* A .RECIPEPREFIX setting is remembered per-recipe and variables expanded
+  in that recipe also use that recipe prefix setting.
+
+* In -p output, .RECIPEPREFIX settings are shown and all target-specific
+  variables are output as if in a makefile, instead of as comments.
+
+* On MS-Windows, recipes that use ".." quoting will no longer force
+  invocation of commands via temporary batch files and stock Windows
+  shells, they will be short-circuited and invoked directly.  (In
+  other words, " is no longer a special character for stock Windows
+  shells.)  This avoids hitting shell limits for command length when
+  quotes are used, but nothing else in the command requires the shell.
+  This change could potentially mean some minor incompatibilities in
+  behavior when the recipe uses quoted string on shell command lines.
+
+\f
+Version 3.82 (28 Jul 2010)
 
 A complete list of bugs fixed in this version is available here:
 
@@ -18,14 +122,6 @@ http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set
 * Compiling GNU make now requires a conforming ISO C 1989 compiler and
   standard runtime library.
 
-* WARNING: Future backward-incompatibility!
-  Wildcards are not documented as returning sorted values, but up to and
-  including this release the results have been sorted and some makefiles are
-  apparently depending on that.  In the next release of GNU make, for
-  performance reasons, we may remove that sorting.  If your makefiles
-  require sorted results from wildcard expansions, use the $(sort ...)
-  function to request it explicitly.
-
 * WARNING: Backward-incompatibility!
   The POSIX standard for make was changed in the 2008 version in a
   fundamentally incompatible way: make is required to invoke the shell as if
@@ -42,6 +138,21 @@ http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set
   existing targets were provided in $?).
 
 * WARNING: Backward-incompatibility!
+  Wildcards were not documented as returning sorted values, but the results
+  have been sorted up until this release..  If your makefiles require sorted
+  results from wildcard expansions, use the $(sort ...)  function to request
+  it explicitly.
+
+* WARNING: Backward-incompatibility!
+  In previous versions of make it was acceptable to list one or more explicit
+  targets followed by one or more pattern targets in the same rule and it
+  worked "as expected".  However, this was not documented as acceptable and if
+  you listed any explicit targets AFTER the pattern targets, the entire rule
+  would be mis-parsed.  This release removes this ability completely: make
+  will generate an error message if you mix explicit and pattern targets in
+  the same rule.
+
+* WARNING: Backward-incompatibility!
   As a result of parser enhancements, three backward-compatibility issues
   exist: first, a prerequisite containing an "=" cannot be escaped with a
   backslash any longer.  You must create a variable containing an "=" and
@@ -115,7 +226,7 @@ http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set
   multi-line variable assignment.
 
 \f
-Version 3.81
+Version 3.81 (01 Apr 2006)
 
 * GNU make is ported to OS/2.
 
@@ -238,7 +349,7 @@ Version 3.81
   could be found on the system.
 
 * On VMS there is now support for case-sensitive filesystems such as ODS5.
-  See the readme.vms file for information.
+  See the README.VMS file for information.
 
 * Parallel builds (-jN) no longer require a working Bourne shell on
   Windows platforms.  They work even with the stock Windows shells, such
@@ -256,7 +367,7 @@ A complete list of bugs fixed in this version is available here:
   http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=103
 
 \f
-Version 3.80
+Version 3.80 (03 Oct 2002)
 
 * A new feature exists: order-only prerequisites.  These prerequisites
   affect the order in which targets are built, but they do not impact
@@ -338,7 +449,7 @@ A complete list of bugs fixed in this version is available here:
   http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=102
 
 \f
-Version 3.79.1
+Version 3.79.1 (23 Jun 2000)
 
 * .SECONDARY with no prerequisites now prevents any target from being
   removed because make thinks it's an intermediate file, not just those
@@ -347,7 +458,7 @@ Version 3.79.1
 * New configure option --disable-nsec-timestamps, but this was
   superseded in later versions by the .LOW_RESOLUTION_TIME pseudo-target.
 \f
-Version 3.79
+Version 3.79 (04 Apr 2000)
 
 * GNU make optionally supports internationalization and locales via the
   GNU gettext (or local gettext if suitable) package.  See the ABOUT-NLS
@@ -388,9 +499,9 @@ Version 3.79
   returned.
 
 * Hartmut Becker provided many updates for the VMS port of GNU make.
-  See the readme.vms file for more details.
+  See the README.VMS file for more details.
 \f
-Version 3.78
+Version 3.78 (22 Sep 1999)
 
 * Two new functions, $(error ...) and $(warning ...) are available.  The
   former will cause make to fail and exit immediately upon expansion of
@@ -446,7 +557,7 @@ Version 3.78
   by running "make check" in the distribution.  Note that it requires
   Perl (either Perl 4 or Perl 5) to run.
 \f
-Version 3.77
+Version 3.77 (28 Jul 1998)
 
 * Implement BSD make's "?=" variable assignment operator.  The variable
   is assigned the specified value only if that variable is not already
@@ -492,11 +603,11 @@ Version 3.77
 * Updates to the Windows 95/NT port from Rob Tulloh (see README.W32),
   and to the DOS port from Eli Zaretski (see README.DOS).
 \f
-Version 3.76.1
+Version 3.76.1 (19 Sep 1997)
 
 * Small (but serious) bug fix.  Quick rollout to get into the GNU source CD.
 \f
-Version 3.76
+Version 3.76 (16 Sep 1997)
 
 * GNU make now uses automake to control Makefile.in generation.  This
   should make it more consistent with the GNU standards.
@@ -541,7 +652,7 @@ Version 3.76
 
 * John W. Eaton has updated the VMS port to support libraries and VPATH.
 \f
-Version 3.75
+Version 3.75 (27 Aug 1996)
 
 * The directory messages printed by `-w' and implicitly in sub-makes,
   are now omitted if Make runs no commands and has no other messages to print.
@@ -562,7 +673,7 @@ Version 3.75
   See README.W32 for details, and direct all Windows-related questions to
   <rob_tulloh@tivoli.com>.
 \f
-Version 3.73
+Version 3.73 (05 Apr 1995)
 
 * Converted to use Autoconf version 2, so `configure' has some new options.
   See INSTALL for details.
@@ -570,7 +681,7 @@ Version 3.73
 * You can now send a SIGUSR1 signal to Make to toggle printing of debugging
   output enabled by -d, at any time during the run.
 \f
-Version 3.72
+Version 3.72 (04 Nov 1994)
 
 * DJ Delorie has ported Make to MS-DOS using the GO32 extender.
   He is maintaining the DOS port, not the GNU Make maintainer;
@@ -604,7 +715,7 @@ Version 3.72
   of `.SILENT', then the recipe to update that file will not be printed
   before it is run.  (This change was made to conform to POSIX.2.)
 \f
-Version 3.71
+Version 3.71 (21 May 1994)
 
 * The automatic variables `$(@D)', `$(%D)', `$(*D)', `$(<D)', `$(?D)', and
   `$(^D)' now omit the trailing slash from the directory name.  (This change
@@ -626,7 +737,7 @@ Version 3.71
   The exit status is 1 only when using -q and some target is not up to date.
   (This change was made to comply with POSIX.2.)
 \f
-Version 3.70
+Version 3.70 (03 Jan 1994)
 
 * It is no longer a fatal error to have a NUL character in a makefile.
   You should never put a NUL in a makefile because it can have strange
@@ -637,7 +748,7 @@ Version 3.70
   makefile name and line number where the `include' appeared, so Emacs's
   C-x ` command takes you there (in case it's a typo you need to fix).
 \f
-Version 3.69
+Version 3.69 (07 Nov 1993)
 
 * Implicit rule search for archive member references is now done in the
   opposite order from previous versions: the whole target name `LIB(MEM)'
@@ -667,7 +778,7 @@ Version 3.69
 * The recipe given for `.DEFAULT' is now used for phony targets with no
   recipe.
 \f
-Version 3.68
+Version 3.68 (28 Jul 1993)
 
 * You can list several archive member names inside parenthesis:
   `lib(mem1 mem2 mem3)' is equivalent to `lib(mem1) lib(mem2) lib(mem3)'.
@@ -693,16 +804,16 @@ Version 3.68
   to set up variables for them.  They used to run with the environment
   that `make' started with.
 \f
-Version 3.66
+Version 3.66 (21 May 1993)
 
 * `make --version' (or `make -v') now exits immediately after printing
   the version number.
 \f
-Version 3.65
+Version 3.65 (09 May 1993)
 
 * Make now supports long-named members in `ar' archive files.
 \f
-Version 3.64
+Version 3.64 (21 Apr 1993)
 
 * Make now supports the `+=' syntax for a variable definition which appends
   to the variable's previous value.  See the section `Appending More Text
@@ -716,7 +827,7 @@ Version 3.64
 * The built-in implicit rules now support the alternative extension
   `.txinfo' for Texinfo files, just like `.texinfo' and `.texi'.
 \f
-Version 3.63
+Version 3.63 (22 Jan 1993)
 
 * Make now uses a standard GNU `configure' script.  See the new file
   INSTALL for the new (and much simpler) installation procedure.
@@ -1096,9 +1207,8 @@ Version 3.05
 (Changes from versions 1 through 3.05 were never recorded.  Sorry.)
 \f
 -------------------------------------------------------------------------------
-Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.  This file is part of GNU Make.
+Copyright (C) 1988-2013 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
 terms of the GNU General Public License as published by the Free Software