From 1faae1d4edbe9889f000ccba1dfd77ccad1d7de9 Mon Sep 17 00:00:00 2001 From: John Malmberg Date: Wed, 15 Oct 2014 07:19:42 -0500 Subject: Update README.VMS and move news to the NEWS file * NEWS: Merge in VMS history. * README.VMS: Remove VMS history, document current behavior and known issues. --- NEWS | 270 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 268 insertions(+), 2 deletions(-) (limited to 'NEWS') diff --git a/NEWS b/NEWS index 9e1ade4..41b6518 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,15 @@ 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 +* 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. + Version 4.1 (05 Oct 2014) @@ -36,6 +45,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. Version 4.0 (09 Oct 2013) @@ -244,6 +280,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. + Version 3.81 (01 Apr 2006) @@ -463,6 +550,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 , 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 @@ -519,6 +642,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. Version 3.78 (22 Sep 1999) @@ -621,6 +794,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 + + * 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 + $(). 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. Version 3.76.1 (19 Sep 1997) @@ -669,8 +881,54 @@ Version 3.76 (16 Sep 1997) concerning this port to Eli Zaretskii or DJ Delorie . -* John W. Eaton has updated the VMS port to support libraries and VPATH. - +* 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, @@ -691,6 +949,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 . + +* 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. Version 3.73 (05 Apr 1995) -- cgit v1.2.3