| 1 | GNU make NEWS -*-indented-text-*-
|
|---|
| 2 | History of user-visible changes.
|
|---|
| 3 | 13 May 2005
|
|---|
| 4 |
|
|---|
| 5 | Copyright (C) 2002,2003,2004,2005 Free Software Foundation, Inc.
|
|---|
| 6 | See the end for copying conditions.
|
|---|
| 7 |
|
|---|
| 8 | All changes mentioned here are more fully described in the GNU make
|
|---|
| 9 | manual, which is contained in this distribution as the file doc/make.texi.
|
|---|
| 10 | See the README file and the GNU make manual for instructions for
|
|---|
| 11 | reporting bugs.
|
|---|
| 12 | |
|---|
| 13 |
|
|---|
| 14 | Version 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 |
|
|---|
| 98 | Version 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 |
|
|---|
| 176 | Version 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 |
|
|---|
| 186 | Version 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 |
|
|---|
| 230 | Version 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 |
|
|---|
| 287 | Version 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 |
|
|---|
| 334 | Version 3.76.1
|
|---|
| 335 |
|
|---|
| 336 | * Small (but serious) bug fix. Quick rollout to get into the GNU source CD.
|
|---|
| 337 | |
|---|
| 338 |
|
|---|
| 339 | Version 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 |
|
|---|
| 385 | Version 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 |
|
|---|
| 407 | Version 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 |
|
|---|
| 416 | Version 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 |
|
|---|
| 451 | Version 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 |
|
|---|
| 474 | Version 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 |
|
|---|
| 486 | Version 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 |
|
|---|
| 517 | Version 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 |
|
|---|
| 544 | Version 3.66
|
|---|
| 545 |
|
|---|
| 546 | * `make --version' (or `make -v') now exits immediately after printing
|
|---|
| 547 | the version number.
|
|---|
| 548 | |
|---|
| 549 |
|
|---|
| 550 | Version 3.65
|
|---|
| 551 |
|
|---|
| 552 | * Make now supports long-named members in `ar' archive files.
|
|---|
| 553 | |
|---|
| 554 |
|
|---|
| 555 | Version 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 |
|
|---|
| 570 | Version 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 |
|
|---|
| 665 | Version 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 |
|
|---|
| 680 | Version 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 |
|
|---|
| 694 | Version 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 |
|
|---|
| 705 | Version 3.58
|
|---|
| 706 |
|
|---|
| 707 | * Suffix rules may have dependencies (which are ignored).
|
|---|
| 708 | |
|---|
| 709 |
|
|---|
| 710 | Version 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 |
|
|---|
| 716 | Version 3.55
|
|---|
| 717 |
|
|---|
| 718 | * There is now a Unix man page for GNU Make. It is certainly not a replacement
|
|---|
| 719 | for the Texinfo manual, but it documents the basic functionality and the
|
|---|
| 720 | switches. For full documentation, you should still read the Texinfo manual.
|
|---|
| 721 | Thanks to Dennis Morse of Stanford University for contributing the initial
|
|---|
| 722 | version of this.
|
|---|
| 723 |
|
|---|
| 724 | * Variables which are defined by default (e.g., `CC') will no longer be put
|
|---|
| 725 | into the environment for child processes. (If these variables are reset by the
|
|---|
| 726 | environment, makefiles, or the command line, they will still go into the
|
|---|
| 727 | environment.)
|
|---|
| 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
|
|---|
| 736 | pathname (instead of a `%' pattern).
|
|---|
| 737 | |
|---|
| 738 |
|
|---|
| 739 | Version 3.51
|
|---|
| 740 |
|
|---|
| 741 | * When removing intermediate files, only one `rm' command line is printed,
|
|---|
| 742 | listing all file names.
|
|---|
| 743 |
|
|---|
| 744 | * There are now automatic variables `$(^D)', `$(^F)', `$(?D)', and `$(?F)'.
|
|---|
| 745 | These are the directory-only and file-only versions of `$^' and `$?'.
|
|---|
| 746 |
|
|---|
| 747 | * Library dependencies given as `-lNAME' will use "libNAME.a" in the current
|
|---|
| 748 | directory 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
|
|---|
| 753 | under -n, -t, or -q (as if the line contained `$(MAKE)').
|
|---|
| 754 |
|
|---|
| 755 | * For command lines containing `$(MAKE)', `${MAKE}', or leading `+' characters,
|
|---|
| 756 | only those lines are executed, not their entire rules.
|
|---|
| 757 | (This is how Unix make behaves for lines containing `$(MAKE)' or `${MAKE}'.)
|
|---|
| 758 | |
|---|
| 759 |
|
|---|
| 760 | Version 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
|
|---|
| 766 | characters.)
|
|---|
| 767 | |
|---|
| 768 |
|
|---|
| 769 | Version 3.49
|
|---|
| 770 |
|
|---|
| 771 | * The % character can be quoted with backslash in implicit pattern rules,
|
|---|
| 772 | static pattern rules, `vpath' directives, and `patsubst', `filter', and
|
|---|
| 773 | `filter-out' functions. A warning is issued if a `vpath' directive's
|
|---|
| 774 | pattern 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
|
|---|
| 782 | makefile rules and to give all information that Make has about files.
|
|---|
| 783 | |
|---|
| 784 |
|
|---|
| 785 | Version 3.48
|
|---|
| 786 | |
|---|
| 787 |
|
|---|
| 788 | Version 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,
|
|---|
| 793 | it will write a `Leaving directory' messagfe before re-executing itself.
|
|---|
| 794 | This makes the `directory change tracking' changes to Emacs's compilation
|
|---|
| 795 | commands work properly.
|
|---|
| 796 | |
|---|
| 797 |
|
|---|
| 798 | Version 3.46
|
|---|
| 799 |
|
|---|
| 800 | * The automatic variable `$*' is now defined for explicit rules,
|
|---|
| 801 | as it is in Unix make.
|
|---|
| 802 | |
|---|
| 803 |
|
|---|
| 804 | Version 3.45
|
|---|
| 805 |
|
|---|
| 806 | * The `-j' switch is now put in the MAKEFLAGS and MFLAGS variables when
|
|---|
| 807 | specified without an argument (indicating infinite jobs).
|
|---|
| 808 | The `-l' switch is not always put in the MAKEFLAGS and MFLAGS variables.
|
|---|
| 809 |
|
|---|
| 810 | * Make no longer checks hashed directories after running commands.
|
|---|
| 811 | The behavior implemented in 3.41 caused too much slowdown.
|
|---|
| 812 | |
|---|
| 813 |
|
|---|
| 814 | Version 3.44
|
|---|
| 815 |
|
|---|
| 816 | * A dependency is NOT considered newer than its dependent if
|
|---|
| 817 | they have the same modification time. The behavior implemented
|
|---|
| 818 | in 3.43 conflicts with RCS.
|
|---|
| 819 | |
|---|
| 820 |
|
|---|
| 821 | Version 3.43
|
|---|
| 822 |
|
|---|
| 823 | * Dependency loops are no longer fatal errors.
|
|---|
| 824 |
|
|---|
| 825 | * A dependency is considered newer than its dependent if
|
|---|
| 826 | they have the same modification time.
|
|---|
| 827 | |
|---|
| 828 |
|
|---|
| 829 | Version 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
|
|---|
| 833 | explicit rules and expect them to be set. Unfortunately, there is no way to
|
|---|
| 834 | make setting these affect the Fortran implicit rules unless FC and FFLAGS
|
|---|
| 835 | are not used (and these are used by BSD make).
|
|---|
| 836 | |
|---|
| 837 |
|
|---|
| 838 | Version 3.41
|
|---|
| 839 |
|
|---|
| 840 | * Make now checks to see if its hashed directories are changed by commands.
|
|---|
| 841 | Other makes that hash directories (Sun, 4.3 BSD) don't do this.
|
|---|
| 842 | |
|---|
| 843 |
|
|---|
| 844 | Version 3.39
|
|---|
| 845 |
|
|---|
| 846 | * The `shell' function no longer captures standard error output.
|
|---|
| 847 | |
|---|
| 848 |
|
|---|
| 849 | Version 3.32
|
|---|
| 850 |
|
|---|
| 851 | * A file beginning with a dot can be the default target if it also contains
|
|---|
| 852 | a slash (e.g., `../bin/foo'). (Unix make allows this as well.)
|
|---|
| 853 | |
|---|
| 854 |
|
|---|
| 855 | Version 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
|
|---|
| 862 | brain-damaged compiler). This has even lower priority than other USG
|
|---|
| 863 | support, 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 |
|
|---|
| 870 | Version 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
|
|---|
| 875 | equivalent 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
|
|---|
| 880 | executable). All default implicit rules that use cpp (even indirectly), use
|
|---|
| 881 | $(CPPFLAGS).
|
|---|
| 882 | |
|---|
| 883 |
|
|---|
| 884 | Version 3.29
|
|---|
| 885 |
|
|---|
| 886 | * Giving the -j option with no arguments gives you infinite jobs.
|
|---|
| 887 | |
|---|
| 888 |
|
|---|
| 889 | Version 3.28
|
|---|
| 890 |
|
|---|
| 891 | * New option: "-l LOAD" says not to start any new jobs while others are
|
|---|
| 892 | running 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
|
|---|
| 895 | in Make. See the file remote.c.
|
|---|
| 896 | |
|---|
| 897 |
|
|---|
| 898 | Version 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 |
|
|---|
| 904 | Version 3.25
|
|---|
| 905 |
|
|---|
| 906 | * Archive files will have their modification times recorded before doing
|
|---|
| 907 | anything that might change their modification times by updating an archive
|
|---|
| 908 | member.
|
|---|
| 909 | |
|---|
| 910 |
|
|---|
| 911 | Version 3.20
|
|---|
| 912 |
|
|---|
| 913 | * The `MAKELEVEL' variable is defined for use by makefiles.
|
|---|
| 914 | |
|---|
| 915 |
|
|---|
| 916 | Version 3.19
|
|---|
| 917 |
|
|---|
| 918 | * The recursion level indications in error messages are much shorter than
|
|---|
| 919 | they were in version 3.14.
|
|---|
| 920 | |
|---|
| 921 |
|
|---|
| 922 | Version 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 |
|
|---|
| 930 | Version 3.14.
|
|---|
| 931 |
|
|---|
| 932 | * Variables that are defaults built into Make will not be put in the
|
|---|
| 933 | environment for children. This just saves some environment space and,
|
|---|
| 934 | except 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
|
|---|
| 939 | directory 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 |
|
|---|
| 946 | Version 3.13.
|
|---|
| 947 |
|
|---|
| 948 | * Count parentheses inside expansion function calls so you can
|
|---|
| 949 | have nested calls: `$(sort $(foreach x,a b,$(x)))'.
|
|---|
| 950 | |
|---|
| 951 |
|
|---|
| 952 | Version 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
|
|---|
| 971 | makefiles 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 |
|
|---|
| 977 | Version 3.05
|
|---|
| 978 |
|
|---|
| 979 | (Changes from versions 1 through 3.05 were never recorded. Sorry.)
|
|---|
| 980 | |
|---|
| 981 |
|
|---|
| 982 | ----------------------------------------------------------------------
|
|---|
| 983 | Copyright 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.
|
|---|