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