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