diff options
author | Paul Smith <psmith@gnu.org> | 2013-09-22 00:48:05 -0400 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2013-09-22 17:10:34 -0400 |
commit | 1a991ada47e0c98ddcb4b2d30b1cf14e4b6a949a (patch) | |
tree | ccb9468c060d3455ab7ded3f661d3a5006c630c1 | |
parent | 7e77685bc35dd0217ed3c72529b2aaf8466b991d (diff) | |
download | gunmake-1a991ada47e0c98ddcb4b2d30b1cf14e4b6a949a.tar.gz |
Add VMS port updates from Hartmut Becker.
-rw-r--r-- | ChangeLog | 21 | ||||
-rw-r--r-- | Makefile.DOS.template | 2 | ||||
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | README.VMS (renamed from readme.vms) | 167 | ||||
-rw-r--r-- | README.template | 2 | ||||
-rw-r--r-- | commands.c | 2 | ||||
-rw-r--r-- | dir.c | 1 | ||||
-rw-r--r-- | file.c | 2 | ||||
-rw-r--r-- | guile.c | 1 | ||||
-rw-r--r-- | main.c | 2 | ||||
-rw-r--r-- | makefile.com | 2 | ||||
-rw-r--r-- | misc.c | 1 | ||||
-rw-r--r-- | output.c | 7 | ||||
-rw-r--r-- | read.c | 2 | ||||
-rw-r--r-- | rule.c | 2 | ||||
-rw-r--r-- | variable.c | 2 |
17 files changed, 71 insertions, 151 deletions
@@ -1,3 +1,24 @@ +2013-09-22 Paul Smith <psmith@gnu.org> + + VMS port updates by Hartmut Becker <becker.ismaning@freenet.de> + + * makefile.com: Add output to the filelist. + * output.c (va_copy): Add an implementation of this macro for VMS. + * commands.c: Ensure filedef.h is #included before dep.h. + * dir.c: Ditto. + * file.c: Ditto. + * guile.c: Ditto. + * main.c: Ditto. + * misc.c: Ditto. + * read.c: Ditto. + * rule.c: Ditto. + * variable.c: Ditto. + * readme.vms: Renamed to README.VMS and updates for this release. + * Makefile.am: Ditto. + * NEWS: Ditto. + * README.template: Ditto. + * Makefile.DOS.template: Ditto. + 2013-09-21 Paul Smith <psmith@gnu.org> * maintMakefile (check-alt-config): Create a target to test diff --git a/Makefile.DOS.template b/Makefile.DOS.template index a5c7ece..c8e7043 100644 --- a/Makefile.DOS.template +++ b/Makefile.DOS.template @@ -88,7 +88,7 @@ INCLUDES = -I$(srcdir)/glob -DLIBDIR=\"$(prefix)$(libdir)\" -DINCLUDEDIR=\"$(pre BUILT_SOURCES = README build.sh-in -EXTRA_DIST = $(BUILT_SOURCES) $(man_MANS) README.customs remote-cstms.c make-stds.texi texinfo.tex SCOPTIONS SMakefile Makefile.ami README.Amiga config.ami amiga.c amiga.h NMakefile README.DOS configh.dos configure.bat makefile.com README.W32 build_w32.bat config.h-W32 subproc.bat make.lnk config.h-vms makefile.vms readme.vms vmsdir.h vmsfunctions.c vmsify.c gmk-default.scm gmk-default.h +EXTRA_DIST = $(BUILT_SOURCES) $(man_MANS) README.customs remote-cstms.c make-stds.texi texinfo.tex SCOPTIONS SMakefile Makefile.ami README.Amiga config.ami amiga.c amiga.h NMakefile README.DOS configh.dos configure.bat makefile.com README.W32 build_w32.bat config.h-W32 subproc.bat make.lnk config.h-vms makefile.vms README.VMS vmsdir.h vmsfunctions.c vmsify.c gmk-default.scm gmk-default.h SUBDIRS = glob doc mkinstalldirs = ${exec_prefix}/bin/gmkdir -p diff --git a/Makefile.am b/Makefile.am index 5fd1b62..5156f47 100644 --- a/Makefile.am +++ b/Makefile.am @@ -82,7 +82,7 @@ EXTRA_DIST = README build.sh.in $(man_MANS) \ README.DOS Makefile.DOS configure.bat dosbuild.bat configh.dos\ README.W32 NMakefile config.h.W32 build_w32.bat subproc.bat \ make_msvc_net2003.sln make_msvc_net2003.vcproj \ - readme.vms makefile.vms makefile.com config.h-vms \ + README.VMS makefile.vms makefile.com config.h-vms \ vmsdir.h vmsfunctions.c vmsify.c \ gmk-default.scm gmk-default.h @@ -341,7 +341,7 @@ Version 3.81 (01 Apr 2006) could be found on the system. * On VMS there is now support for case-sensitive filesystems such as ODS5. - See the readme.vms file for information. + See the README.VMS file for information. * Parallel builds (-jN) no longer require a working Bourne shell on Windows platforms. They work even with the stock Windows shells, such @@ -491,7 +491,7 @@ Version 3.79 (04 Apr 2000) returned. * Hartmut Becker provided many updates for the VMS port of GNU make. - See the readme.vms file for more details. + See the README.VMS file for more details. Version 3.78 (22 Sep 1999) @@ -1,23 +1,33 @@ -This is the VMS version of GNU Make, updated by Hartmut Becker - -Changes are based on GNU make 3.82. - -This version was built and tested on OpenVMS V7.3 (VAX), V7.3-2 (Alpha) and -V8.3-1H1 (I64). +This version of GNU make has been tested on +OpenVMS V8.3 (Alpha) and V8.4 (Integrity). Build instructions +------------------ Make a 1st version $ @makefile.com ! ignore any compiler and/or linker warning - $ rena make.exe 1st-make.exe -Use the 1st version to generate a 2nd version - $ mc sys$disk:[]1st-make clean + $ copy make.exe 1st-make.exe + Use the 1st version to generate a 2nd version + $ mc sys$disk:[]1st-make clean ! ignore any file not found messages $ mc sys$disk:[]1st-make -Verify your 2nd version - $ rena make.exe 2nd-make.exe + Verify your 2nd version + $ copy make.exe 2nd-make.exe $ mc sys$disk:[]2nd-make clean $ mc sys$disk:[]2nd-make + Don't use the HP C V7.2-001 compiler, which has an incompatible change + how __STDC__ is defined. This results at least in compile time warnings. + +Changes since GNU make 3.82 +--------------------------- -Changes (3.81.90) +Fix build problems. + +The new feature "Loadable objects" is not yet supported. If you need it, +please send a change request or submit a bug report. + +The new option --output-sync (-O) is accepted but has no effect: GNU make +for VMS does not support running multiple commands simultaneously. + +Changes for GNU make 3.82 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 @@ -34,30 +44,6 @@ systems. Build fixes for const-ified code in VMS specific sources. -Build notes: -- Try to avoid HP C V7.2-001, which has an incompatible change -how __STDC__ is defined. This results at least in compile time warnings. - -- On V8.3-1H1, if you press Ctrl+C you may see a traceback, starting with -%SYSTEM-F-CONTROLC, operation completed under CTRL/C -%TRACE-F-TRACEBACK, symbolic stack dump follows -image module routine line rel PC abs PC - -DECC$SHR C$SIGNAL gsignal 27991 0000000000001180 -FFFFFFFF84AB2DA0 -DECC$SHR C$SIGNAL raise 28048 0000000000001280 -FFFFFFFF84AB2EA0 -DECC$SHR C$SIGPENDING decc$$deliver_signals - 12475 0000000000000890 -FFFFFFFF84C13690 -... -This looks like an incompatibility to the Alpha and VAX behavior, so it looks -like a problem in I64 VMS version(s). - -- There is no clean build on VAX. In the environment I tested, I had to use GNU -make's alloca which produced a couple of compile time warnings. It seems too -much effort to work on a clean build on VAX. - 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 @@ -78,117 +64,24 @@ 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 - -Ctrl+Y was: The CtrlY handler called $forcex for the current child. - -Ctrl+Y changed: The CtrlY handler uses $delprc to delete all children. This way -also actions with DCL commands will be stopped. As before Ctrl+Y then sends -SIGQUIT to itself, which is handled in common code. +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 were deleted in the main line, after returning from the -vms child termination handler. If Ctrl+C was pressed, the handler is called but -did not return to main line. - -Now, temporary command files are deleted in the vms child termination -handler. That deletes the them even if a Ctrl+C was pressed. +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. -Changes (3.80) +Changes for GNU make 3.80 . In default.c define variable ARCH as IA64 for VMS on Itanium systems. . In makefile.vms avoid name collision for glob and globfree. - -In newer version of the VMS CRTL there are glob and globfree implemented. -Compiling and linking may result in - - %ILINK-W-MULDEFLNKG, symbol DECC$GLOBFREE has subsequent linkage definition - in module DECC$SHR file SYS$COMMON:[SYSLIB]DECC$SHR.EXE;1 - %ILINK-W-MULDEF, symbol DECC$GLOBFREE multiply defined - in module DECC$SHR file SYS$COMMON:[SYSLIB]DECC$SHR.EXE;1 - -linker messages (and similar for DECC$GLOB). The messages just say, that -globfree is a known CRTL whose name was mapped by the compiler to -DECC$GLOBFREE. This is done in glob.c as well, so this name is defined -twice. One possible solution is to use the VMS versions of glob and -globfree. However, then the build environment needs to figure out if -there is a new CRTL supporting these or not. This adds complexity. Even -more, these functions return VMS file specifications, which is not -expected by the other make sources. There is a switch at run time (a VMS -logical DECC$GLOB_UNIX_STYLE), which can be set to get Unix style -names. This may conflict with other software. The recommended solution -for this is to set this switch just prior to calling main: in an -initialization routine. This adds more complexity and more VMS specific -code. It is easier to tell the compiler NOT to map the routine names -with a simple change in makefile.vms. - -Some notes on case sensitive names in rules and on the disk. In the VMS -template for CONFIG.H case sensitive rules can be enabled with defining -WANT_CASE_SENSITIVE_TARGETS. For recent version of VMS there is a case -sensitive file system: ODS5. To make use of that, additionally un-defining -the HAVE_CASE_INSENSITIVE_FS is required. As these are C macros, different -versions of make need to be built to have any case sensitivity for VMS -working. Unfortunately, for ODS5 disks that's not all. - -- Usually DCL upcases command line tokens (except strings) and usually the - file system is case blind (similar to how Windows systems work) - $ set proc/parse=extended/case=sensitive - preserves lower and UPPER on the command line and (for this process and all - sub-processes) enables case sensitivity in the file system - -- Usually the CRTL tries to reverse what DCL did with command line tokens, it - lowercases all tokens (except strings) - $ define DECC$ARGV_PARSE_STYLE enable - passes (the now preserved) lower and UPPER from the command line to main() - -- Usually the CRTL upcases the arguments to open() and friends - $ define DECC$EFS_CASE_PRESERVE enable - preserves the names as is. - -It is important to know that not all VMS tools are ready for case sensitivity. -With this setup some tools may not work as expected. The setup should not -blindly be applied for all users in default login procedures. - -Example? The poor coding gives a compiler message, showing that there are -different files: - -$ dir - -Directory ODS5DISK[HB] - -A.c;1 B.c;1 c.c;1 X.c;1 -x.c;1 - -Total of 5 files. -$ ods5make x.obj -cc /obj=x.obj x.c - -foo(){lowercase_x();} -......^ -%CC-I-IMPLICITFUNC, In this statement, the identifier "lowercase_x" is implicitly declared as a function. -at line number 1 in file ODS5DISK[HB]x.c;1 -$ mc SYS$SYSDEVICE:[HARTMUT.MAKE_3_80P]ods5make X.obj -cc /obj=X.obj X.c - -foo() {UPPERCASE_X();} -.......^ -%CC-I-IMPLICITFUNC, In this statement, the identifier "UPPERCASE_X" is implicitly declared as a function. -at line number 1 in file ODS5DISK[HB]X.c;1 -$ dir - -Directory ODS5DISK[HB] - -A.c;1 B.c;1 c.c;1 X.c;1 -x.c;1 X.obj;1 x.obj;1 - -Total of 7 files. -$ This is the VMS port of GNU Make done by Hartmut.Becker@compaq.com. diff --git a/README.template b/README.template index 50d9e55..8458406 100644 --- a/README.template +++ b/README.template @@ -142,7 +142,7 @@ Ports - See README.customs for details on integrating GNU make with the Customs distributed build environment from the Pmake distribution. - - See readme.vms for details about GNU Make on OpenVMS. + - See README.VMS for details about GNU Make on OpenVMS. - See README.Amiga for details about GNU Make on AmigaDOS. @@ -17,8 +17,8 @@ this program. If not, see <http://www.gnu.org/licenses/>. */ #include <dlfcn.h> #include "makeint.h" -#include "dep.h" #include "filedef.h" +#include "dep.h" #include "variable.h" #include "job.h" #include "commands.h" @@ -16,6 +16,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */ #include "makeint.h" #include "hash.h" +#include "filedef.h" #include "dep.h" #ifdef HAVE_DIRENT_H @@ -18,8 +18,8 @@ this program. If not, see <http://www.gnu.org/licenses/>. */ #include <assert.h> -#include "dep.h" #include "filedef.h" +#include "dep.h" #include "job.h" #include "commands.h" #include "variable.h" @@ -18,6 +18,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */ #include "gnumake.h" #include "debug.h" +#include "filedef.h" #include "dep.h" #include "variable.h" @@ -15,8 +15,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include "makeint.h" -#include "dep.h" #include "filedef.h" +#include "dep.h" #include "variable.h" #include "job.h" #include "commands.h" diff --git a/makefile.com b/makefile.com index fee8d5e..6359c47 100644 --- a/makefile.com +++ b/makefile.com @@ -68,7 +68,7 @@ $ gosub check_cc_qual $ endif $ filelist = "alloca ar arscan commands default dir expand file function " + - "hash implicit job load main misc read remake remote-stub rule " + - - "signame variable version vmsfunctions vmsify vpath " + - + "output signame variable version vmsfunctions vmsify vpath " + - "[.glob]glob [.glob]fnmatch getopt1 getopt strcache" $ copy config.h-vms config.h $ n=0 @@ -15,6 +15,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include "makeint.h" +#include "filedef.h" #include "dep.h" #include "debug.h" @@ -52,9 +52,12 @@ unsigned int stdio_traced = 0; especially for non-UNIX platforms: how to get bootstrapping to work, etc. I don't want to take the time to do it right now. Use a hack to get a useful version of vsnprintf() for Windows. */ +#ifdef __VMS +# define va_copy(_d, _s) ((_d) = (_s)) +#endif #ifdef _MSC_VER -#define va_copy(_d, _s) ((_d) = (_s)) -#define snprintf msc_vsnprintf +# define va_copy(_d, _s) ((_d) = (_s)) +# define snprintf msc_vsnprintf static int msc_vsnprintf (char *str, size_t size, const char *format, va_list ap) { @@ -20,8 +20,8 @@ this program. If not, see <http://www.gnu.org/licenses/>. */ #include <glob.h> -#include "dep.h" #include "filedef.h" +#include "dep.h" #include "job.h" #include "commands.h" #include "variable.h" @@ -18,8 +18,8 @@ this program. If not, see <http://www.gnu.org/licenses/>. */ #include <assert.h> -#include "dep.h" #include "filedef.h" +#include "dep.h" #include "job.h" #include "commands.h" #include "variable.h" @@ -18,8 +18,8 @@ this program. If not, see <http://www.gnu.org/licenses/>. */ #include <assert.h> -#include "dep.h" #include "filedef.h" +#include "dep.h" #include "job.h" #include "commands.h" #include "variable.h" |