VirtualBox

source: kBuild/vendor/gnumake/3.81/NEWS

Last change on this file was 501, checked in by bird, 18 years ago

Load make-3.81/ into vendor/gnumake/current.

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

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette