• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1GNU make NEWS                                               -*-indented-text-*-
2  History of user-visible changes.
3  1 April 2006
4
5See the end of this file for copyrights and conditions.
6
7All changes mentioned here are more fully described in the GNU make
8manual, which is contained in this distribution as the file doc/make.texi.
9See the README file and the GNU make manual for instructions for
10reporting bugs.
11
12Version 3.81
13
14* GNU make is ported to OS/2.
15
16* GNU make is ported to MinGW.  The MinGW build is only supported by
17  the build_w32.bat batch file; see the file README.W32 for more
18  details.
19
20* WARNING: Future backward-incompatibility!
21  Up to and including this release, the '$?' variable does not contain
22  any prerequisite that does not exist, even though that prerequisite
23  might have caused the target to rebuild.  Starting with the _next_
24  release of GNU make, '$?' will contain all prerequisites that caused
25  the target to be considered out of date.  See this Savannah bug:
26  http://savannah.gnu.org/bugs/index.php?func=detailitem&item_id=16051
27
28* WARNING: Backward-incompatibility!
29  GNU make now implements a generic "second expansion" feature on the
30  prerequisites of both explicit and implicit (pattern) rules.  In order
31  to enable this feature, the special target '.SECONDEXPANSION' must be
32  defined before the first target which takes advantage of it.  If this
33  feature is enabled then after all rules have been parsed the
34  prerequisites are expanded again, this time with all the automatic
35  variables in scope.  This means that in addition to using standard
36  SysV $$@ in prerequisites lists, you can also use complex functions
37  such as $$(notdir $$@) etc.  This behavior applies to implicit rules,
38  as well, where the second expansion occurs when the rule is matched.
39  However, this means that when '.SECONDEXPANSION' is enabled you must
40  double-quote any "$" in your filenames; instead of "foo: boo$$bar" you
41  now must write "foo: foo$$$$bar".  Note that the SysV $$@ etc. feature,
42  which used to be available by default, is now ONLY available when the
43  .SECONDEXPANSION target is defined.  If your makefiles take advantage
44  of this SysV feature you will need to update them.
45
46* WARNING: Backward-incompatibility!
47  In order to comply with POSIX, the way in which GNU make processes
48  backslash-newline sequences in command strings has changed.  If your
49  makefiles use backslash-newline sequences inside of single-quoted
50  strings in command scripts you will be impacted by this change.  See
51  the GNU make manual subsection "Splitting Command Lines" (node
52  "Splitting Lines"), in section "Command Syntax", chapter "Writing the
53  Commands in Rules", for details.
54
55* WARNING: Backward-incompatibility!
56  Some previous versions of GNU make had a bug where "#" in a function
57  invocation such as $(shell ...) was treated as a make comment.  A
58  workaround was to escape these with backslashes.  This bug has been
59  fixed: if your makefile uses "\#" in a function invocation the
60  backslash is now preserved, so you'll need to remove it.
61
62* New command-line option: -L (--check-symlink-times).  On systems that
63  support symbolic links, if this option is given then GNU make will
64  use the most recent modification time of any symbolic links that are
65  used to resolve target files.  The default behavior remains as it
66  always has: use the modification time of the actual target file only.
67
68* The "else" conditional line can now be followed by any other valid
69  conditional on the same line: this does not increase the depth of the
70  conditional nesting, so only one "endif" is required to close the
71  conditional.
72
73* All pattern-specific variables that match a given target are now used
74  (previously only the first match was used).
75
76* Target-specific variables can be marked as exportable using the
77  "export" keyword.
78
79* In a recursive $(call ...) context, any extra arguments from the outer
80  call are now masked in the context of the inner call.
81
82* Implemented a solution for the "thundering herd" problem with "-j -l".
83  This version of GNU make uses an algorithm suggested by Thomas Riedl
84  <thomas.riedl@siemens.com> to track the number of jobs started in the
85  last second and artificially adjust GNU make's view of the system's
86  load average accordingly.
87
88* New special variables available in this release:
89   - .INCLUDE_DIRS: Expands to a list of directories that make searches
90     for included makefiles.
91   - .FEATURES: Contains a list of special features available in this
92     version of GNU make.
93   - .DEFAULT_GOAL: Set the name of the default goal make will
94     use if no goals are provided on the command line.
95   - MAKE_RESTARTS: If set, then this is the number of times this
96     instance of make has been restarted (see "How Makefiles Are Remade"
97     in the manual).
98   - New automatic variable: $| (added in 3.80, actually): contains all
99     the order-only prerequisites defined for the target.
100
101* New functions available in this release:
102   - $(lastword ...) returns the last word in the list.  This gives
103     identical results as $(word $(words ...) ...), but is much faster.
104   - $(abspath ...) returns the absolute path (all "." and ".."
105     directories resolved, and any duplicate "/" characters removed) for
106     each path provided.
107   - $(realpath ...) returns the canonical pathname for each path
108     provided.  The canonical pathname is the absolute pathname, with
109     all symbolic links resolved as well.
110   - $(info ...) prints its arguments to stdout.  No makefile name or
111     line number info, etc. is printed.
112   - $(flavor ...) returns the flavor of a variable.
113   - $(or ...) provides a short-circuiting OR conditional: each argument
114     is expanded.  The first true (non-empty) argument is returned; no
115     further arguments are expanded.  Expands to empty if there are no
116     true arguments.
117   - $(and ...) provides a short-circuiting AND conditional: each
118     argument is expanded.  The first false (empty) argument is
119     returned; no further arguments are expanded.  Expands to the last
120     argument if all arguments are true.
121
122* Changes made for POSIX compatibility:
123   - Only touch targets (under -t) if they have at least one command.
124   - Setting the SHELL make variable does NOT change the value of the
125     SHELL environment variable given to programs invoked by make.  As
126     an enhancement to POSIX, if you export the make variable SHELL then
127     it will be set in the environment, just as before.
128
129* On MS Windows systems, explicitly setting SHELL to a pathname ending
130  in "cmd" or "cmd.exe" (case-insensitive) will force GNU make to use
131  the DOS command interpreter in batch mode even if a UNIX-like shell
132  could be found on the system.
133
134* On VMS there is now support for case-sensitive filesystems such as ODS5.
135  See the readme.vms file for information.
136
137* Parallel builds (-jN) no longer require a working Bourne shell on
138  Windows platforms.  They work even with the stock Windows shells, such
139  as cmd.exe and command.com.
140
141* Updated to autoconf 2.59, automake 1.9.5, and gettext 0.14.1.  Users
142  should not be impacted.
143
144* New translations for Swedish, Chinese (simplified), Ukrainian,
145  Belarusian, Finnish, Kinyarwandan, and Irish.  Many updated
146  translations.
147
148A complete list of bugs fixed in this version is available here:
149
150  http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=103
151
152
153Version 3.80
154
155* A new feature exists: order-only prerequisites.  These prerequisites
156  affect the order in which targets are built, but they do not impact
157  the rebuild/no-rebuild decision of their dependents.  That is to say,
158  they allow you to require target B be built before target A, without
159  requiring that target A will always be rebuilt if target B is updated.
160  Patch for this feature provided by Greg McGary <greg@mcgary.org>.
161
162* For compatibility with SysV make, GNU make now supports the peculiar
163  syntax $$@, $$(@D), and $$(@F) in the prerequisites list of a rule.
164  This syntax is only valid within explicit and static pattern rules: it
165  cannot be used in implicit (suffix or pattern) rules.  Edouard G. Parmelan
166  <egp@free.fr> provided a patch implementing this feature; however, I
167  decided to implement it in a different way.
168
169* The argument to the "ifdef" conditional is now expanded before it's
170  tested, so it can be a constructed variable name.
171
172  Similarly, the arguments to "export" (when not used in a variable
173  definition context) and "unexport" are also now expanded.
174
175* A new function is defined: $(value ...).  The argument to this
176  function is the _name_ of a variable.  The result of the function is
177  the value of the variable, without having been expanded.
178
179* A new function is defined: $(eval ...).  The arguments to this
180  function should expand to makefile commands, which will then be
181  evaluated as if they had appeared in the makefile.  In combination
182  with define/endef multiline variable definitions this is an extremely
183  powerful capability.  The $(value ...) function is also sometimes
184  useful here.
185
186* A new built-in variable is defined, $(MAKEFILE_LIST).  It contains a
187  list of each makefile GNU make has read, or started to read, in the
188  order in which they were encountered.  So, the last filename in the
189  list when a makefile is just being read (before any includes) is the
190  name of the current makefile.
191
192* A new built-in variable is defined: $(.VARIABLES).  When it is
193  expanded it returns a complete list of variable names defined by all
194  makefiles at that moment.
195
196* A new command-line option is defined, -B or --always-make.  If
197  specified GNU make will consider all targets out-of-date even if they
198  would otherwise not be.
199
200* The arguments to $(call ...) functions were being stored in $1, $2,
201  etc. as recursive variables, even though they are fully expanded
202  before assignment.  This means that escaped dollar signs ($$ etc.)
203  were not behaving properly.  Now the arguments are stored as simple
204  variables.  This may mean that if you added extra escaping to your
205  $(call ...) function arguments you will need to undo it now.
206
207* The variable invoked by $(call ...) can now be recursive: unlike other
208  variables it can reference itself and this will not produce an error
209  when it is used as the first argument to $(call ...) (but only then).
210
211* New pseudo-target .LOW_RESOLUTION_TIME, superseding the configure
212  option --disable-nsec-timestamps.  You might need this if your build
213  process depends on tools like "cp -p" preserving time stamps, since
214  "cp -p" (right now) doesn't preserve the subsecond portion of a time
215  stamp.
216
217* Updated translations for French, Galician, German, Japanese, Korean,
218  and Russian.  New translations for Croatian, Danish, Hebrew, and
219  Turkish.
220
221* Updated internationalization support to Gettext 0.11.5.
222  GNU make now uses Gettext's "external" feature, and does not include
223  any internationalization code itself.  Configure will search your
224  system for an existing implementation of GNU Gettext (only GNU Gettext
225  is acceptable) and use it if it exists.  If not, NLS will be disabled.
226  See ABOUT-NLS for more information.
227
228* Updated to autoconf 2.54 and automake 1.7.  Users should not be impacted.
229
230A complete list of bugs fixed in this version is available here:
231
232  http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=102
233
234
235Version 3.79.1
236
237* .SECONDARY with no prerequisites now prevents any target from being
238  removed because make thinks it's an intermediate file, not just those
239  listed in the makefile.
240
241* New configure option --disable-nsec-timestamps, but this was
242  superseded in later versions by the .LOW_RESOLUTION_TIME pseudo-target.
243
244Version 3.79
245
246* GNU make optionally supports internationalization and locales via the
247  GNU gettext (or local gettext if suitable) package.  See the ABOUT-NLS
248  file for more information on configuring GNU make for NLS.
249
250* Previously, GNU make quoted variables such as MAKEFLAGS and
251  MAKEOVERRIDES for proper parsing by the shell.  This allowed them to
252  be used within make build scripts.  However, using them there is not
253  proper behavior: they are meant to be passed to subshells via the
254  environment.  Unfortunately the values were not quoted properly to be
255  passed through the environment.  This meant that make didn't properly
256  pass some types of command line values to submakes.
257
258  With this version we change that behavior: now these variables are
259  quoted properly for passing through the environment, which is the
260  correct way to do it.  If you previously used these variables
261  explicitly within a make rule you may need to re-examine your use for
262  correctness given this change.
263
264* A new pseudo-target .NOTPARALLEL is available.  If defined, the
265  current makefile is run serially regardless of the value of -j.
266  However, submakes are still eligible for parallel execution.
267
268* The --debug option has changed: it now allows optional flags
269  controlling the amount and type of debugging output.  By default only
270  a minimal amount information is generated, displaying the names of
271  "normal" targets (not makefiles) that were deemed out of date and in
272  need of being rebuilt.
273
274  Note that the -d option behaves as before: it takes no arguments and
275  all debugging information is generated.
276
277* The `-p' (print database) output now includes filename and linenumber
278  information for variable definitions, to aid debugging.
279
280* The wordlist function no longer reverses its arguments if the "start"
281  value is greater than the "end" value.  If that's true, nothing is
282  returned.
283
284* Hartmut Becker provided many updates for the VMS port of GNU make.
285  See the readme.vms file for more details.
286
287Version 3.78
288
289* Two new functions, $(error ...) and $(warning ...) are available.  The
290  former will cause make to fail and exit immediately upon expansion of
291  the function, with the text provided as the error message.  The latter
292  causes the text provided to be printed as a warning message, but make
293  proceeds normally.
294
295* A new function $(call ...) is available.  This allows users to create
296  their own parameterized macros and invoke them later.  Original
297  implementation of this function was provided by Han-Wen Nienhuys
298  <hanwen@cs.uu.nl>.
299
300* A new function $(if ...) is available.  It provides if-then-else
301  capabilities in a builtin function.  Original implementation of this
302  function was provided by Han-Wen Nienhuys <hanwen@cs.uu.nl>.
303
304* Make defines a new variable, .LIBPATTERNS.  This variable controls how
305  library dependency expansion (dependencies like ``-lfoo'') is performed.
306
307* Make accepts CRLF sequences as well as traditional LF, for
308  compatibility with makefiles created on other operating systems.
309
310* Make accepts a new option: -R, or --no-builtin-variables.  This option
311  disables the definition of the rule-specific builtin variables (CC,
312  LD, AR, etc.).  Specifying this option forces -r (--no-builtin-rules)
313  as well.
314
315* A "job server" feature, suggested by Howard Chu <hyc@highlandsun.com>.
316
317  On systems that support POSIX pipe(2) semantics, GNU make can now pass
318  -jN options to submakes rather than forcing them all to use -j1.  The
319  top make and all its sub-make processes use a pipe to communicate with
320  each other to ensure that no more than N jobs are started across all
321  makes.  To get the old behavior of -j back, you can configure make
322  with the --disable-job-server option.
323
324* The confusing term "dependency" has been replaced by the more accurate
325  and standard term "prerequisite", both in the manual and in all GNU make
326  output.
327
328* GNU make supports the "big archive" library format introduced in AIX 4.3.
329
330* GNU make supports large files on AIX, HP-UX, and IRIX.  These changes
331  were provided by Paul Eggert <eggert@twinsun.com>.  (Large file
332  support for Solaris and Linux was introduced in 3.77, but the
333  configuration had issues: these have also been resolved).
334
335* The Windows 95/98/NT (W32) version of GNU make now has native support
336  for the Cygnus Cygwin release B20.1 shell (bash).
337
338* The GNU make regression test suite, long available separately "under
339  the table", has been integrated into the release.  You can invoke it
340  by running "make check" in the distribution.  Note that it requires
341  Perl (either Perl 4 or Perl 5) to run.
342
343Version 3.77
344
345* Implement BSD make's "?=" variable assignment operator.  The variable
346  is assigned the specified value only if that variable is not already
347  defined.
348
349* Make defines a new variable, "CURDIR", to contain the current working
350  directory (after the -C option, if any, has been processed).
351  Modifying this variable has no effect on the operation of make.
352
353* Make defines a new default RCS rule, for new-style master file
354  storage: ``% :: RCS/%'' (note no ``,v'' suffix).
355
356  Make defines new default rules for DOS-style C++ file naming
357  conventions, with ``.cpp'' suffixes.  All the same rules as for
358  ``.cc'' and ``.C'' suffixes are provided, along with LINK.cpp and
359  COMPILE.cpp macros (which default to the same value as LINK.cc and
360  COMPILE.cc).  Note CPPFLAGS is still C preprocessor flags!  You should
361  use CXXFLAGS to change C++ compiler flags.
362
363* A new feature, "target-specific variable values", has been added.
364  This is a large change so please see the appropriate sections of the
365  manual for full details.  Briefly, syntax like this:
366
367    TARGET: VARIABLE = VALUE
368
369  defines VARIABLE as VALUE within the context of TARGET.  This is
370  similar to SunOS make's "TARGET := VARIABLE = VALUE" feature.  Note
371  that the assignment may be of any type, not just recursive, and that
372  the override keyword is available.
373
374  COMPATIBILITY: This new syntax means that if you have any rules where
375  the first or second dependency has an equal sign (=) in its name,
376  you'll have to escape them with a backslash: "foo : bar\=baz".
377  Further, if you have any dependencies which already contain "\=",
378  you'll have to escape both of them: "foo : bar\\\=baz".
379
380* A new appendix listing the most common error and warning messages
381  generated by GNU make, with some explanation, has been added to the
382  GNU make User's Manual.
383
384* Updates to the GNU make Customs library support (see README.customs).
385
386* Updates to the Windows 95/NT port from Rob Tulloh (see README.W32),
387  and to the DOS port from Eli Zaretski (see README.DOS).
388
389Version 3.76.1
390
391* Small (but serious) bug fix.  Quick rollout to get into the GNU source CD.
392
393Version 3.76
394
395* GNU make now uses automake to control Makefile.in generation.  This
396  should make it more consistent with the GNU standards.
397
398* VPATH functionality has been changed to incorporate the VPATH+ patch,
399  previously maintained by Paul Smith <psmith@baynetworks.com>.  See the
400  manual.
401
402* Make defines a new variable, `MAKECMDGOALS', to contain the goals that
403  were specified on the command line, if any.  Modifying this variable
404  has no effect on the operation of make.
405
406* A new function, `$(wordlist S,E,TEXT)', is available: it returns a
407  list of words from number S to number E (inclusive) of TEXT.
408
409* Instead of an error, detection of future modification times gives a
410  warning and continues.  The warning is repeated just before GNU make
411  exits, so it is less likely to be lost.
412
413* Fix the $(basename) and $(suffix) functions so they only operate on
414  the last filename, not the entire string:
415
416      Command              Old Result             New Result
417      -------              ----------             ----------
418    $(basename a.b)        a                      a
419    $(basename a.b/c)      a                      a.b/c
420    $(suffix a.b)          b                      b
421    $(suffix a.b/c)        b/c                    <empty>
422
423* The $(strip) function now removes newlines as well as TABs and spaces.
424
425* The $(shell) function now changes CRLF (\r\n) pairs to a space as well
426  as newlines (\n).
427
428* Updates to the Windows 95/NT port from Rob Tulloh (see README.W32).
429
430* Eli Zaretskii has updated the port to 32-bit protected mode on MSDOS
431  and MS-Windows, building with the DJGPP v2 port of GNU C/C++ compiler
432  and utilities.  See README.DOS for details, and direct all questions
433  concerning this port to Eli Zaretskii <eliz@is.elta.co.il> or DJ
434  Delorie <dj@delorie.com>.
435
436* John W. Eaton has updated the VMS port to support libraries and VPATH.
437
438Version 3.75
439
440* The directory messages printed by `-w' and implicitly in sub-makes,
441  are now omitted if Make runs no commands and has no other messages to print.
442
443* Make now detects files that for whatever reason have modification times
444  in the future and gives an error.  Files with such impossible timestamps
445  can result from unsynchronized clocks, or archived distributions
446  containing bogus timestamps; they confuse Make's dependency engine
447  thoroughly.
448
449* The new directive `sinclude' is now recognized as another name for
450  `-include', for compatibility with some other Makes.
451
452* Aaron Digulla has contributed a port to AmigaDOS.  See README.Amiga for
453  details, and direct all Amiga-related questions to <digulla@fh-konstanz.de>.
454
455* Rob Tulloh of Tivoli Systems has contributed a port to Windows NT or 95.
456  See README.W32 for details, and direct all Windows-related questions to
457  <rob_tulloh@tivoli.com>.
458
459Version 3.73
460
461* Converted to use Autoconf version 2, so `configure' has some new options.
462  See INSTALL for details.
463
464* You can now send a SIGUSR1 signal to Make to toggle printing of debugging
465  output enabled by -d, at any time during the run.
466
467Version 3.72
468
469* DJ Delorie has ported Make to MS-DOS using the GO32 extender.
470  He is maintaining the DOS port, not the GNU Make maintainer;
471  please direct bugs and questions for DOS to <djgpp@sun.soe.clarkson.edu>.
472  MS-DOS binaries are available for FTP from ftp.simtel.net in
473  /pub/simtelnet/gnu/djgpp/.
474
475* The `MAKEFLAGS' variable (in the environment or in a makefile) can now
476  contain variable definitions itself; these are treated just like
477  command-line variable definitions.  Make will automatically insert any
478  variable definitions from the environment value of `MAKEFLAGS' or from
479  the command line, into the `MAKEFLAGS' value exported to children.  The
480  `MAKEOVERRIDES' variable previously included in the value of `$(MAKE)'
481  for sub-makes is now included in `MAKEFLAGS' instead.  As before, you can
482  reset `MAKEOVERRIDES' in your makefile to avoid putting all the variables
483  in the environment when its size is limited.
484
485* If `.DELETE_ON_ERROR' appears as a target, Make will delete the target of
486  a rule if it has changed when its commands exit with a nonzero status,
487  just as when the commands get a signal.
488
489* The automatic variable `$+' is new.  It lists all the dependencies like
490  `$^', but preserves duplicates listed in the makefile.  This is useful
491  for linking rules, where library files sometimes need to be listed twice
492  in the link order.
493
494* You can now specify the `.IGNORE' and `.SILENT' special targets with
495  dependencies to limit their effects to those files.  If a file appears as
496  a dependency of `.IGNORE', then errors will be ignored while running the
497  commands to update that file.  Likewise if a file appears as a dependency
498  of `.SILENT', then the commands to update that file will not be printed
499  before they are run.  (This change was made to conform to POSIX.2.)
500
501Version 3.71
502
503* The automatic variables `$(@D)', `$(%D)', `$(*D)', `$(<D)', `$(?D)', and
504  `$(^D)' now omit the trailing slash from the directory name.  (This change
505  was made to comply with POSIX.2.)
506
507* The source distribution now includes the Info files for the Make manual.
508  There is no longer a separate distribution containing Info and DVI files.
509
510* You can now set the variables `binprefix' and/or `manprefix' in
511  Makefile.in (or on the command line when installing) to install GNU make
512  under a name other than `make' (i.e., ``make binprefix=g install''
513  installs GNU make as `gmake').
514
515* The built-in Texinfo rules use the new variables `TEXI2DVI_FLAGS' for
516  flags to the `texi2dvi' script, and `MAKEINFO_FLAGS' for flags to the
517  Makeinfo program.
518
519* The exit status of Make when it runs into errors is now 2 instead of 1.
520  The exit status is 1 only when using -q and some target is not up to date.
521  (This change was made to comply with POSIX.2.)
522
523Version 3.70
524
525* It is no longer a fatal error to have a NUL character in a makefile.
526  You should never put a NUL in a makefile because it can have strange
527  results, but otherwise empty lines full of NULs (such as produced by
528  the `xmkmf' program) will always work fine.
529
530* The error messages for nonexistent included makefiles now refer to the
531  makefile name and line number where the `include' appeared, so Emacs's
532  C-x ` command takes you there (in case it's a typo you need to fix).
533
534Version 3.69
535
536* Implicit rule search for archive member references is now done in the
537  opposite order from previous versions: the whole target name `LIB(MEM)'
538  first, and just the member name and parentheses `(MEM)' second.
539
540* Make now gives an error for an unterminated variable or function reference.
541  For example, `$(foo' with no matching `)' or `${bar' with no matching `}'.
542
543* The new default variable `MAKE_VERSION' gives the version number of
544  Make, and a string describing the remote job support compiled in (if any).
545  Thus the value (in this release) is something like `3.69' or `3.69-Customs'.
546
547* Commands in an invocation of the `shell' function are no longer run with
548  a modified environment like target commands are.  As in versions before
549  3.68, they now run with the environment that `make' started with.  We
550  have reversed the change made in version 3.68 because it turned out to
551  cause a paradoxical situation in cases like:
552
553	export variable = $(shell echo value)
554
555  When Make attempted to put this variable in the environment for a target
556  command, it would try expand the value by running the shell command
557  `echo value'.  In version 3.68, because it constructed an environment
558  for that shell command in the same way, Make would begin to go into an
559  infinite loop and then get a fatal error when it detected the loop.
560
561* The commands given for `.DEFAULT' are now used for phony targets with no
562  commands.
563
564Version 3.68
565
566* You can list several archive member names inside parenthesis:
567  `lib(mem1 mem2 mem3)' is equivalent to `lib(mem1) lib(mem2) lib(mem3)'.
568
569* You can use wildcards inside archive member references.  For example,
570  `lib(*.o)' expands to all existing members of `lib' whose names end in
571  `.o' (e.g. `lib(a.o) lib(b.o)'); `*.a(*.o)' expands to all such members
572  of all existing files whose names end in `.a' (e.g. `foo.a(a.o)
573  foo.a(b.o) bar.a(c.o) bar.a(d.o)'.
574
575* A suffix rule `.X.a' now produces two pattern rules:
576	(%.o): %.X	# Previous versions produced only this.
577	%.a: %.X	# Now produces this as well, just like other suffixes.
578
579* The new flag `--warn-undefined-variables' says to issue a warning message
580  whenever Make expands a reference to an undefined variable.
581
582* The new `-include' directive is just like `include' except that there is
583  no error (not even a warning) for a nonexistent makefile.
584
585* Commands in an invocation of the `shell' function are now run with a
586  modified environment like target commands are, so you can use `export' et
587  al to set up variables for them.  They used to run with the environment
588  that `make' started with.
589
590Version 3.66
591
592* `make --version' (or `make -v') now exits immediately after printing
593  the version number.
594
595Version 3.65
596
597* Make now supports long-named members in `ar' archive files.
598
599Version 3.64
600
601* Make now supports the `+=' syntax for a variable definition which appends
602  to the variable's previous value.  See the section `Appending More Text
603  to Variables' in the manual for full details.
604
605* The new option `--no-print-directory' inhibits the `-w' or
606  `--print-directory' feature.  Make turns on `--print-directory'
607  automatically if you use `-C' or `--directory', and in sub-makes; some
608  users have found this behavior undesirable.
609
610* The built-in implicit rules now support the alternative extension
611  `.txinfo' for Texinfo files, just like `.texinfo' and `.texi'.
612
613Version 3.63
614
615* Make now uses a standard GNU `configure' script.  See the new file
616  INSTALL for the new (and much simpler) installation procedure.
617
618* There is now a shell script to build Make the first time, if you have no
619  other `make' program.  `build.sh' is created by `configure'; see README.
620
621* GNU Make now completely conforms to the POSIX.2 specification for `make'.
622
623* Elements of the `$^' and `$?' automatic variables that are archive
624  member references now list only the member name, as in Unix and POSIX.2.
625
626* You should no longer ever need to specify the `-w' switch, which prints
627  the current directory before and after Make runs.  The `-C' switch to
628  change directory, and recursive use of Make, now set `-w' automatically.
629
630* Multiple double-colon rules for the same target will no longer have their
631  commands run simultaneously under -j, as this could result in the two
632  commands trying to change the file at the same time and interfering with
633  one another.
634
635* The `SHELL' variable is now never taken from the environment.
636  Each makefile that wants a shell other than the default (/bin/sh) must
637  set SHELL itself.  SHELL is always exported to child processes.
638  This change was made for compatibility with POSIX.2.
639
640* Make now accepts long options.  There is now an informative usage message
641  that tells you what all the options are and what they do.  Try `make --help'.
642
643* There are two new directives: `export' and `unexport'.  All variables are
644  no longer automatically put into the environments of the commands that
645  Make runs.  Instead, only variables specified on the command line or in
646  the environment are exported by default.  To export others, use:
647	export VARIABLE
648  or you can define variables with:
649	export VARIABLE = VALUE
650  or:
651	export VARIABLE := VALUE
652  You can use just:
653	export
654  or:
655	.EXPORT_ALL_VARIABLES:
656  to get the old behavior.  See the node `Variables/Recursion' in the manual
657  for a full description.
658
659* The commands from the `.DEFAULT' special target are only applied to
660  targets which have no rules at all, not all targets with no commands.
661  This change was made for compatibility with Unix make.
662
663* All fatal error messages now contain `***', so they are easy to find in
664  compilation logs.
665
666* Dependency file names like `-lNAME' are now replaced with the actual file
667  name found, as with files found by normal directory search (VPATH).
668  The library file `libNAME.a' may now be found in the current directory,
669  which is checked before VPATH; the standard set of directories (/lib,
670  /usr/lib, /usr/local/lib) is now checked last.
671  See the node `Libraries/Search' in the manual for full details.
672
673* A single `include' directive can now specify more than one makefile to
674  include, like this:
675	include file1 file2
676  You can also use shell file name patterns in an `include' directive:
677	include *.mk
678
679* The default directories to search for included makefiles, and for
680  libraries specified with `-lNAME', are now set by configuration.
681
682* You can now use blanks as well as colons to separate the directories in a
683  search path for the `vpath' directive or the `VPATH' variable.
684
685* You can now use variables and functions in the left hand side of a
686  variable assignment, as in "$(foo)bar = value".
687
688* The `MAKE' variable is always defined as `$(MAKE_COMMAND) $(MAKEOVERRIDES)'.
689  The `MAKE_COMMAND' variable is now defined to the name with which make
690  was invoked.
691
692* The built-in rules for C++ compilation now use the variables `$(CXX)' and
693  `$(CXXFLAGS)' instead of `$(C++)' and `$(C++FLAGS)'.  The old names had
694  problems with shells that cannot have `+' in environment variable names.
695
696* The value of a recursively expanded variable is now expanded when putting
697  it into the environment for child processes.  This change was made for
698  compatibility with Unix make.
699
700* A rule with no targets before the `:' is now accepted and ignored.
701  This change was made for compatibility with SunOS 4 make.
702  We do not recommend that you write your makefiles to take advantage of this.
703
704* The `-I' switch can now be used in MAKEFLAGS, and are put there
705  automatically just like other switches.
706
707Version 3.61
708
709* Built-in rules for C++ source files with the `.C' suffix.
710  We still recommend that you use `.cc' instead.
711
712* If commands are given too many times for a single target,
713  the last set given is used, and a warning message is printed.
714
715* Error messages about makefiles are in standard GNU error format,
716  so C-x ` in Emacs works on them.
717
718* Dependencies of pattern rules which contain no % need not actually exist
719  if they can be created (just like dependencies which do have a %).
720
721Version 3.60
722
723* A message is always printed when Make decides there is nothing to be done.
724  It used to be that no message was printed for top-level phony targets
725  (because "`phony' is up to date" isn't quite right).  Now a different
726  message "Nothing to be done for `phony'" is printed in that case.
727
728* Archives on AIX now supposedly work.
729
730* When the commands specified for .DEFAULT are used to update a target,
731  the $< automatic variable is given the same value as $@ for that target.
732  This is how Unix make behaves, and this behavior is mandated by POSIX.2.
733
734Version 3.59
735
736* The -n, -q, and -t options are not put in the `MAKEFLAGS' and `MFLAG'
737  variables while remaking makefiles, so recursive makes done while remaking
738  makefiles will behave properly.
739
740* If the special target `.NOEXPORT' is specified in a makefile,
741  only variables that came from the environment and variables
742  defined on the command line are exported.
743
744Version 3.58
745
746* Suffix rules may have dependencies (which are ignored).
747
748Version 3.57
749
750* Dependencies of the form `-lLIB' are searched for as /usr/local/lib/libLIB.a
751  as well as libLIB.a in /usr/lib, /lib, the current directory, and VPATH.
752
753Version 3.55
754
755* There is now a Unix man page for GNU Make.  It is certainly not a replacement
756for the Texinfo manual, but it documents the basic functionality and the
757switches.  For full documentation, you should still read the Texinfo manual.
758Thanks to Dennis Morse of Stanford University for contributing the initial
759version of this.
760
761* Variables which are defined by default (e.g., `CC') will no longer be put
762into the environment for child processes.  (If these variables are reset by the
763environment, makefiles, or the command line, they will still go into the
764environment.)
765
766* Makefiles which have commands but no dependencies (and thus are always
767  considered out of date and in need of remaking), will not be remade (if they
768  were being remade only because they were makefiles).  This means that GNU
769  Make will no longer go into an infinite loop when fed the makefiles that
770  `imake' (necessary to build X Windows) produces.
771
772* There is no longer a warning for using the `vpath' directive with an explicit
773pathname (instead of a `%' pattern).
774
775Version 3.51
776
777* When removing intermediate files, only one `rm' command line is printed,
778listing all file names.
779
780* There are now automatic variables `$(^D)', `$(^F)', `$(?D)', and `$(?F)'.
781These are the directory-only and file-only versions of `$^' and `$?'.
782
783* Library dependencies given as `-lNAME' will use "libNAME.a" in the current
784directory if it exists.
785
786* The automatic variable `$($/)' is no longer defined.
787
788* Leading `+' characters on a command line make that line be executed even
789under -n, -t, or -q (as if the line contained `$(MAKE)').
790
791* For command lines containing `$(MAKE)', `${MAKE}', or leading `+' characters,
792only those lines are executed, not their entire rules.
793(This is how Unix make behaves for lines containing `$(MAKE)' or `${MAKE}'.)
794
795Version 3.50
796
797* Filenames in rules will now have ~ and ~USER expanded.
798
799* The `-p' output has been changed so it can be used as a makefile.
800(All information that isn't specified by makefiles is prefaced with comment
801characters.)
802
803Version 3.49
804
805* The % character can be quoted with backslash in implicit pattern rules,
806static pattern rules, `vpath' directives, and `patsubst', `filter', and
807`filter-out' functions.  A warning is issued if a `vpath' directive's
808pattern contains no %.
809
810* The `wildcard' variable expansion function now expands ~ and ~USER.
811
812* Messages indicating failed commands now contain the target name:
813	make: *** [target] Error 1
814
815* The `-p' output format has been changed somewhat to look more like
816makefile rules and to give all information that Make has about files.
817
818Version 3.48
819
820Version 3.47
821
822* The `-l' switch with no argument removes any previous load-average limit.
823
824* When the `-w' switch is in effect, and Make has updated makefiles,
825it will write a `Leaving directory' messagfe before re-executing itself.
826This makes the `directory change tracking' changes to Emacs's compilation
827commands work properly.
828
829Version 3.46
830
831* The automatic variable `$*' is now defined for explicit rules,
832as it is in Unix make.
833
834Version 3.45
835
836* The `-j' switch is now put in the MAKEFLAGS and MFLAGS variables when
837specified without an argument (indicating infinite jobs).
838The `-l' switch is not always put in the MAKEFLAGS and MFLAGS variables.
839
840* Make no longer checks hashed directories after running commands.
841The behavior implemented in 3.41 caused too much slowdown.
842
843Version 3.44
844
845* A dependency is NOT considered newer than its dependent if
846they have the same modification time.  The behavior implemented
847in 3.43 conflicts with RCS.
848
849Version 3.43
850
851* Dependency loops are no longer fatal errors.
852
853* A dependency is considered newer than its dependent if
854they have the same modification time.
855
856Version 3.42
857
858* The variables F77 and F77FLAGS are now set by default to $(FC) and
859$(FFLAGS).  Makefiles designed for System V make may use these variables in
860explicit rules and expect them to be set.  Unfortunately, there is no way to
861make setting these affect the Fortran implicit rules unless FC and FFLAGS
862are not used (and these are used by BSD make).
863
864Version 3.41
865
866* Make now checks to see if its hashed directories are changed by commands.
867Other makes that hash directories (Sun, 4.3 BSD) don't do this.
868
869Version 3.39
870
871* The `shell' function no longer captures standard error output.
872
873Version 3.32
874
875* A file beginning with a dot can be the default target if it also contains
876a slash (e.g., `../bin/foo').  (Unix make allows this as well.)
877
878Version 3.31
879
880* Archive member names are truncated to 15 characters.
881
882* Yet more USG stuff.
883
884* Minimal support for Microport System V (a 16-bit machine and a
885brain-damaged compiler).  This has even lower priority than other USG
886support, so if it gets beyond trivial, I will take it out completely.
887
888* Revamped default implicit rules (not much visible change).
889
890* The -d and -p options can come from the environment.
891
892Version 3.30
893
894* Improved support for USG and HPUX (hopefully).
895
896* A variable reference like `$(foo:a=b)', if `a' contains a `%', is
897equivalent to `$(patsubst a,b,$(foo))'.
898
899* Defining .DEFAULT with no deps or commands clears its commands.
900
901* New default implicit rules for .S (cpp, then as), and .sh (copy and make
902executable).  All default implicit rules that use cpp (even indirectly), use
903$(CPPFLAGS).
904
905Version 3.29
906
907* Giving the -j option with no arguments gives you infinite jobs.
908
909Version 3.28
910
911* New option: "-l LOAD" says not to start any new jobs while others are
912running if the load average is not below LOAD (a floating-point number).
913
914* There is support in place for implementations of remote command execution
915in Make.  See the file remote.c.
916
917Version 3.26
918
919* No more than 10 directories will be kept open at once.
920(This number can be changed by redefining MAX_OPEN_DIRECTORIES in dir.c.)
921
922Version 3.25
923
924* Archive files will have their modification times recorded before doing
925anything that might change their modification times by updating an archive
926member.
927
928Version 3.20
929
930* The `MAKELEVEL' variable is defined for use by makefiles.
931
932Version 3.19
933
934* The recursion level indications in error messages are much shorter than
935they were in version 3.14.
936
937Version 3.18
938
939* Leading spaces before directives are ignored (as documented).
940
941* Included makefiles can determine the default goal target.
942(System V Make does it this way, so we are being compatible).
943
944Version 3.14.
945
946* Variables that are defaults built into Make will not be put in the
947environment for children.  This just saves some environment space and,
948except under -e, will be transparent to sub-makes.
949
950* Error messages from sub-makes will indicate the level of recursion.
951
952* Hopefully some speed-up for large directories due to a change in the
953directory hashing scheme.
954
955* One child will always get a standard input that is usable.
956
957* Default makefiles that don't exist will be remade and read in.
958
959Version 3.13.
960
961* Count parentheses inside expansion function calls so you can
962have nested calls: `$(sort $(foreach x,a b,$(x)))'.
963
964Version 3.12.
965
966* Several bug fixes, including USG and Sun386i support.
967
968* `shell' function to expand shell commands a la `
969
970* If the `-d' flag is given, version information will be printed.
971
972* The `-c' option has been renamed to `-C' for compatibility with tar.
973
974* The `-p' option no longer inhibits other normal operation.
975
976* Makefiles will be updated and re-read if necessary.
977
978* Can now run several commands at once (parallelism), -j option.
979
980* Error messages will contain the level of Make recursion, if any.
981
982* The `MAKEFLAGS' and `MFLAGS' variables will be scanned for options after
983makefiles are read.
984
985* A double-colon rule with no dependencies will always have its commands run.
986(This is how both the BSD and System V versions of Make do it.)
987
988Version 3.05
989
990(Changes from versions 1 through 3.05 were never recorded.  Sorry.)
991
992-------------------------------------------------------------------------------
993Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
9941998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
995Foundation, Inc.
996This file is part of GNU Make.
997
998GNU Make is free software; you can redistribute it and/or modify it under the
999terms of the GNU General Public License as published by the Free Software
1000Foundation; either version 2, or (at your option) any later version.
1001
1002GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
1003WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
1004A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
1005
1006You should have received a copy of the GNU General Public License along with
1007GNU Make; see the file COPYING.  If not, write to the Free Software
1008Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
1009