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