Imported Upstream version 4.2
[platform/upstream/make.git] / NEWS
diff --git a/NEWS b/NEWS
index 7e11787..27f6f06 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,6 @@
 GNU make NEWS                                               -*-indented-text-*-
   History of user-visible changes.
-  05 Oct 2014
+  22 May 2016
 
 See the end of this file for copyrights and conditions.
 
@@ -9,6 +9,45 @@ manual, which is contained in this distribution as the file doc/make.texi.
 See the README file and the GNU make manual for instructions for
 reporting bugs.
 \f
+Version 4.2 (22 May 2016)
+
+A complete list of bugs fixed in this version is available here:
+
+http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=106&set=custom
+
+* New variable: $(.SHELLSTATUS) is set to the exit status of the last != or
+  $(shell ...) function invoked in this instance of make.  This will be "0" if
+  successful or not "0" if not successful.  The variable value is unset if no
+  != or $(shell ...) function has been invoked.
+
+* The $(file ...) function can now read from a file with $(file <FILE).
+  The function is expanded to the contents of the file.  The contents are
+  expanded verbatim except that the final newline, if any, is stripped.
+
+* The makefile line numbers shown by GNU make now point directly to the
+  specific line in the recipe where the failure or warning occurred.
+  Sample changes suggested by Brian Vandenberg <phantall@gmail.com>
+
+* The interface to GNU make's "jobserver" is stable as documented in the
+  manual, for tools which may want to access it.
+
+  WARNING: Backward-incompatibility! The internal-only command line option
+  --jobserver-fds has been renamed for publishing, to --jobserver-auth.
+
+* The amount of parallelism can be determined by querying MAKEFLAGS, even when
+  the job server is enabled (previously MAKEFLAGS would always contain only
+  "-j", with no number, when job server was enabled).
+
+* VMS-specific changes:
+
+  * Perl test harness now works.
+
+  * Full support for converting Unix exit status codes to VMS exit status
+    codes.  BACKWARD INCOMPATIBILITY Notice: On a child failure the VMS exit
+    code is now the encoded Unix exit status that Make usually generates, not
+    the VMS exit status of the child.
+
+\f
 Version 4.1 (05 Oct 2014)
 
 A complete list of bugs fixed in this version is available here:
@@ -29,6 +68,33 @@ http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=105&set
   make.  Makefiles that rely on this syntax should be fixed.
   See https://savannah.gnu.org/bugs/?33034
 
+* VMS-specific changes:
+
+  * Support for library files added, including support for using the GNV ar
+    utility.
+
+  * Partial support for properly encoding Unix exit status codes into VMS exit
+    status codes.
+
+    WARNING: Backward-incompatibility! These are different exit status codes
+    than Make exited with in the past.
+
+  * Macros to hold the current make command are set up to translate the
+    argv[0] string to a VMS format path name and prefix it with "MCR " so that
+    the macro has a space in it.
+
+    WARNING: Backward-incompatibility!  This may break complex makefiles that
+    do processing on those macros.  This is unlikely because so much in that
+    area was not and is still not currently working on VMS, it is unlikely to
+    find such a complex makefile, so this is more likely to impact
+    construction of a future makefile.
+
+  * A command file is always used to run the commands for a recipe.
+
+    WARNING: Backward-incompatibility!  Running the make self tests has
+    exposed that there are significant differences in behavior when running
+    with the command file mode.  It is unknown if this will be noticed by most
+    existing VMS makefiles.
 \f
 Version 4.0 (09 Oct 2013)
 
@@ -237,6 +303,57 @@ http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set
   after the variable name, to allow for simple, conditional, or appending
   multi-line variable assignment.
 
+* VMS-specific changes:
+
+  * Michael Gehre (at VISTEC-SEMI dot COM) supplied a fix for a problem with
+    timestamps of object modules in OLBs. The timestamps were not correctly
+    adjusted to GMT based time, if the local VMS time was using a daylight
+    saving algorithm and if daylight saving was switched off.
+
+  * John Eisenbraun (at HP dot COM) supplied fixes and and an enhancement to
+    append output redirection in action lines.
+
+  * Rework of ctrl+c and ctrl+y handling.
+
+  * Fix a problem with cached strings, which showed on case-insensitive file
+    systems.
+
+  * Build fixes for const-ified code in VMS specific sources.
+
+  * A note on appending the redirected output. With this change, a simple
+    mechanism is implemented to make ">>" work in action lines. In VMS
+    there is no simple feature like ">>" to have DCL command or program
+    output redirected and appended to a file. GNU make for VMS already
+    implements the redirection of output. If such a redirection is detected,
+    an ">" on the action line, GNU make creates a DCL command procedure to
+    execute the action and to redirect its output. Based on that, now ">>"
+    is also recognized and a similar but different command procedure is
+    created to implement the append. The main idea here is to create a
+    temporary file which collects the output and which is appended to the
+    wanted output file. Then the temporary file is deleted. This is all done
+    in the command procedure to keep changes in make small and simple. This
+    obviously has some limitations but it seems good enough compared with
+    the current ">" implementation. (And in my opinion, redirection is not
+    really what GNU make has to do.) With this approach, it may happen that
+    the temporary file is not yet appended and is left in SYS$SCRATCH.
+    The temporary file names look like "CMDxxxxx.". Any time the created
+    command procedure can not complete, this happens. Pressing Ctrl+Y to
+    abort make is one case. In case of Ctrl+Y the associated command
+    procedure is left in SYS$SCRATCH as well. Its name is CMDxxxxx.COM.
+
+  * Change in the Ctrl+Y handling. The CtrlY handler now uses $delprc to
+    delete all children. This way also actions with DCL commands will be
+    stopped. As before the CtrlY handler then sends SIGQUIT to itself,
+    which is handled in common code.
+
+  * Change in deleteing temporary command files. Temporary command files
+    are now deleted in the vms child termination handler. That deletes
+    them even if a Ctrl+C was pressed.
+
+  * The behavior of pressing Ctrl+C is not changed. It still has only an
+    effect, after the current action is terminated. If that doesn't happen
+    or takes too long, Ctrl+Y should be used instead.
+
 \f
 Version 3.81 (01 Apr 2006)
 
@@ -456,6 +573,42 @@ Version 3.80 (03 Oct 2002)
 
 * Updated to autoconf 2.54 and automake 1.7.  Users should not be impacted.
 
+* VMS-specific changes:
+
+  * In default.c define variable ARCH as IA64 for VMS on Itanium systems.
+
+  * In makefile.vms avoid name collision for glob and globfree.
+
+  * This is the VMS port of GNU Make done by Hartmut.Becker@compaq.com.
+
+    It is based on the specific version 3.77k and on 3.78.1. 3.77k was done
+    by Klaus Kämpf <kkaempf@rmi.de>, the code was based on the VMS port of
+    GNU Make 3.60 by Mike Moretti.
+
+    It was ported on OpenVMS/Alpha V7.1, DECC V5.7-006. It was re-build and
+    tested on OpenVMS/Alpha V7.2, OpenVMS/VAX 7.1 and 5.5-2. Different
+    versions of DECC were used. VAXC was tried: it fails; but it doesn't
+    seem worth to get it working. There are still some PTRMISMATCH warnings
+    during the compile. Although perl is working on VMS the test scripts
+    don't work. The function $shell is still missing.
+
+    There is a known bug in some of the VMS CRTLs. It is in the shipped
+    versions of VMS V7.2 and V7.2-1 and in the currently (October 1999)
+    available ECOs for VMS V7.1 and newer versions. It is fixed in versions
+    shipped with newer VMS versions and all ECO kits after October 1999. It
+    only shows up during the daylight saving time period (DST): stat()
+    returns a modification time 1 hour ahead. This results in GNU make
+    warning messages. For a just created source you will see:
+
+     $ gmake x.exe
+     gmake.exe;1: *** Warning: File 'x.c' has modification time in the future
+     (940582863 > 940579269)
+     cc    /obj=x.obj x.c
+     link  x.obj    /exe=x.exe
+     gmake.exe;1: *** Warning:  Clock skew detected.  Your build may be
+     incomplete.
+
+
 A complete list of bugs fixed in this version is available here:
 
   http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=102
@@ -512,6 +665,56 @@ Version 3.79 (04 Apr 2000)
 
 * Hartmut Becker provided many updates for the VMS port of GNU make.
   See the README.VMS file for more details.
+
+* VMS-specific changes:
+
+  * Fix a problem with automatically remaking makefiles. GNU make uses an
+    execve to restart itself after a successful remake of the makefile. On
+    UNIX systems execve replaces the running program with a new one and
+    resets all signal handling to the default. On VMS execve creates a child
+    process, signal and exit handlers of the parent are still active, and,
+    unfortunately, corrupt the exit code from the child. Fix in job.c:
+    ignore SIGCHLD.
+
+  * Added some switches to reflect latest features of DECC. Modifications in
+    makefile.vms.
+
+  * Set some definitions to reflect latest features of DECC. Modifications in
+    config.h-vms (which is copied to config.h).
+
+  * Added extern strcmpi declaration to avoid 'implicitly declared' messages.
+    Modification in make.h.
+
+  * Default rule for C++, conditionals for gcc (GCC_IS_NATIVE) or DEC/Digital/
+    Compaq c/c++ compilers. Modifications in default.c.
+
+  * Usage of opendir() and friends, suppress file version. Modifications in
+    dir.c.
+
+  * Added VMS specific code to handle ctrl+c and ctrl+y to abort make.
+    Modifications in job.c.
+
+  * Added support to have case sensitive targets and dependencies but to
+    still use case blind file names. This is especially useful for Java
+    makefiles on VMS:
+
+        .SUFFIXES :
+        .SUFFIXES : .class .java
+        .java.class :
+                javac "$<
+        HelloWorld.class :      HelloWorld.java
+
+  * A new macro WANT_CASE_SENSITIVE_TARGETS in config.h-vms was introduced.
+    It needs to be enabled to get this feature; default is disabled.  The
+    macro HAVE_CASE_INSENSITIVE_FS must not be touched: it is still enabled.
+    Modifications in file.c and config.h-vms.
+
+  * Bootstrap make to start building make is still makefile.com, but make
+    needs to be re-made with a make to make a correct version: ignore all
+    possible warnings, delete all objects, rename make.exe to a different
+    name and run it.
+
+  * Made some minor modifications to the bootstrap build makefile.com.
 \f
 Version 3.78 (22 Sep 1999)
 
@@ -614,6 +817,45 @@ Version 3.77 (28 Jul 1998)
 
 * Updates to the Windows 95/NT port from Rob Tulloh (see README.W32),
   and to the DOS port from Eli Zaretski (see README.DOS).
+
+* VMS-specific changes:
+
+  * This is the VMS port of GNU Make.
+    It is based on the VMS port of GNU Make 3.60 by Mike Moretti.
+    This port was done by Klaus Kämpf <kkaempf@rmi.de>
+
+  * There is first-level support available from proGIS Software, Germany.
+    Visit their web-site at http://www.progis.de to get information
+    about other vms software and forthcoming updates to gnu make.
+
+  * /bin/sh style I/O redirection is supported. You can now write lines like
+        mcr sys$disk:[]program.exe < input.txt > output.txt &> error.txt
+
+  * Makefile variables are looked up in the current environment. You can set
+    symbols or logicals in DCL and evaluate them in the Makefile via
+    $(<name-of-symbol-or-logical>).  Variables defined in the Makefile
+    override VMS symbols/logicals !
+
+  * Functions for file names are working now. See the GNU Make manual for
+    $(dir ...)  and $(wildcard ...).  Unix-style and VMS-style names are
+    supported as arguments.
+
+  * The default rules are set up for GNU C. Building an executable from a
+    single source file is as easy as 'make file.exe'.
+
+  * The variable $(ARCH) is predefined as ALPHA or VAX resp. Makefiles for
+    different VMS systems can now be written by checking $(ARCH) as in
+      ifeq ($(ARCH),ALPHA)
+        $(ECHO) "On the Alpha"
+      else
+        $(ECHO) "On the VAX"
+      endif
+
+  * Command lines of excessive length are correctly broken and written to a
+    batch file in sys$scratch for later execution. There's no limit to the
+    lengths of commands (and no need for .opt files :-) any more.
+
+  * Empty commands are handled correctly and don't end in a new DCL process.
 \f
 Version 3.76.1 (19 Sep 1997)
 
@@ -662,8 +904,54 @@ Version 3.76 (16 Sep 1997)
   concerning this port to Eli Zaretskii <eliz@is.elta.co.il> or DJ
   Delorie <dj@delorie.com>.
 
-* John W. Eaton has updated the VMS port to support libraries and VPATH.
-\f
+* VMS-specific changes:
+
+  * John W. Eaton has updated the VMS port to support libraries and VPATH.
+
+  * The cd command is supported if it's called as $(CD). This invokes
+    the 'builtin_cd' command which changes the directory.
+    Calling 'set def' doesn't do the trick, since a sub-shell is
+    spawned for this command, the directory is changed *in this sub-shell*
+    and the sub-shell ends.
+
+  * Libraries are not supported. They were in GNU Make 3.60 but somehow I
+    didn't care porting the code. If there is enough interest, I'll do it at
+    some later time.
+
+  * The variable $^ separates files with commas instead of spaces (It's the
+    natural thing to do for VMS).
+
+  * See defaults.c for VMS default suffixes and my definitions for default
+    rules and variables.
+
+  * The shell function is not implemented yet.
+
+  * Load average routines haven't been implemented for VMS yet.
+
+  * The default include directory for including other makefiles is
+    SYS$SYSROOT:[SYSLIB] (I don't remember why I didn't just use
+    SYS$LIBRARY: instead; maybe it wouldn't work that way).
+
+  * The default makefiles make looks for are: makefile.vms, gnumakefile,
+    makefile., and gnumakefile. .
+
+  * The stat() function and handling of time stamps in VMS is broken, so I
+    replaced it with a hack in vmsfunctions.c. I will provide a full rewrite
+    somewhere in the future. Be warned, the time resolution inside make is
+    less than what vms provides. This might be a problem on the faster Alphas.
+
+  * You can use a : in a filename only if you precede it with a backslash ('\').
+    E.g.- hobbes\:[bogas.files]
+
+  * Make ignores success, informational, or warning errors (-S-, -I-, or -W-).
+    But it will stop on -E- and -F- errors. (unless you do something
+    to override this in your makefile, or whatever).
+
+  * Remote stuff isn't implemented yet.
+
+  * Multiple line DCL commands, such as "if" statements, must be put inside
+    command files.  You can run a command file by using \@.
+
 Version 3.75 (27 Aug 1996)
 
 * The directory messages printed by `-w' and implicitly in sub-makes,
@@ -684,6 +972,14 @@ Version 3.75 (27 Aug 1996)
 * Rob Tulloh of Tivoli Systems has contributed a port to Windows NT or 95.
   See README.W32 for details, and direct all Windows-related questions to
   <rob_tulloh@tivoli.com>.
+
+* VMS-specific changes:
+
+  * Lots of default settings are adapted for VMS. See default.c.
+
+  * Long command lines are now converted to command files.
+
+  * Comma (',') as a separator is now allowed. See makefile.vms for an example.
 \f
 Version 3.73 (05 Apr 1995)
 
@@ -1219,7 +1515,7 @@ Version 3.05
 (Changes from versions 1 through 3.05 were never recorded.  Sorry.)
 \f
 -------------------------------------------------------------------------------
-Copyright (C) 1988-2014 Free Software Foundation, Inc.
+Copyright (C) 1988-2016 Free Software Foundation, Inc.
 This file is part of GNU Make.
 
 GNU Make is free software; you can redistribute it and/or modify it under the