source: trunk/third/gmake/NEWS @ 15972

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