summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2013-09-22 00:48:05 -0400
committerPaul Smith <psmith@gnu.org>2013-09-22 17:10:34 -0400
commit1a991ada47e0c98ddcb4b2d30b1cf14e4b6a949a (patch)
treeccb9468c060d3455ab7ded3f661d3a5006c630c1
parent7e77685bc35dd0217ed3c72529b2aaf8466b991d (diff)
downloadgunmake-1a991ada47e0c98ddcb4b2d30b1cf14e4b6a949a.tar.gz
Add VMS port updates from Hartmut Becker.
-rw-r--r--ChangeLog21
-rw-r--r--Makefile.DOS.template2
-rw-r--r--Makefile.am2
-rw-r--r--NEWS4
-rw-r--r--README.VMS (renamed from readme.vms)167
-rw-r--r--README.template2
-rw-r--r--commands.c2
-rw-r--r--dir.c1
-rw-r--r--file.c2
-rw-r--r--guile.c1
-rw-r--r--main.c2
-rw-r--r--makefile.com2
-rw-r--r--misc.c1
-rw-r--r--output.c7
-rw-r--r--read.c2
-rw-r--r--rule.c2
-rw-r--r--variable.c2
17 files changed, 71 insertions, 151 deletions
diff --git a/ChangeLog b/ChangeLog
index 7db0910..8905116 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/NEWS b/NEWS
index b1ec073..fd0a563 100644
--- a/NEWS
+++ b/NEWS
@@ -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)
diff --git a/readme.vms b/README.VMS
index f985959..f7b064d 100644
--- a/readme.vms
+++ b/README.VMS
@@ -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.
diff --git a/commands.c b/commands.c
index e83cc9b..f910358 100644
--- a/commands.c
+++ b/commands.c
@@ -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"
diff --git a/dir.c b/dir.c
index 0c93ac9..d046bd9 100644
--- a/dir.c
+++ b/dir.c
@@ -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
diff --git a/file.c b/file.c
index c8e19e5..b209d88 100644
--- a/file.c
+++ b/file.c
@@ -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"
diff --git a/guile.c b/guile.c
index f5637fd..6c9fb75 100644
--- a/guile.c
+++ b/guile.c
@@ -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"
diff --git a/main.c b/main.c
index a180ee9..776ba7c 100644
--- a/main.c
+++ b/main.c
@@ -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
diff --git a/misc.c b/misc.c
index d915032..bc54ce6 100644
--- a/misc.c
+++ b/misc.c
@@ -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"
diff --git a/output.c b/output.c
index f58b816..3cf7afb 100644
--- a/output.c
+++ b/output.c
@@ -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)
{
diff --git a/read.c b/read.c
index f8542b0..a4ca72d 100644
--- a/read.c
+++ b/read.c
@@ -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"
diff --git a/rule.c b/rule.c
index 5991c80..cb35537 100644
--- a/rule.c
+++ b/rule.c
@@ -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"
diff --git a/variable.c b/variable.c
index 74e866a..2ff14b6 100644
--- a/variable.c
+++ b/variable.c
@@ -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"