VirtualBox

source: kBuild/vendor/gnumake/current/NEWS@ 486

Last change on this file since 486 was 280, checked in by bird, 19 years ago

Current make snaphot, 2005-05-16.

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