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