]> git.ipfire.org Git - thirdparty/make.git/commitdiff
Add VMS port updates from Hartmut Becker.
authorPaul Smith <psmith@gnu.org>
Sun, 22 Sep 2013 04:48:05 +0000 (00:48 -0400)
committerPaul Smith <psmith@gnu.org>
Sun, 22 Sep 2013 21:10:34 +0000 (17:10 -0400)
17 files changed:
ChangeLog
Makefile.DOS.template
Makefile.am
NEWS
README.VMS [moved from readme.vms with 64% similarity]
README.template
commands.c
dir.c
file.c
guile.c
main.c
makefile.com
misc.c
output.c
read.c
rule.c
variable.c

index 7db09104361de5b2a73e57ba350a76c65a000f02..8905116fb93a5e906867355d4de34191fce565dd 100644 (file)
--- 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
index a5c7ece9f8a585bdc951c2c2f3d78ea6a1585b59..c8e7043b76917f9901850f34bd8d97761b37f271 100644 (file)
@@ -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
index 5fd1b62ec7efaf4515833d4993f2379d360ab8cc..5156f4743fe58b0fedc6179b3debabd7376b07ee 100644 (file)
@@ -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 b1ec0734a0aa7fabe153558444b22eb152c40b98..fd0a563a4389fa3f004507353ce4a86a696abe06 100644 (file)
--- 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.
 \f
 Version 3.78 (22 Sep 1999)
 
similarity index 64%
rename from readme.vms
rename to README.VMS
index f9859597bef997bf3ecc8fe672551ab2d99ce0a7..f7b064dc73b8bdc1985b2d677592e2514e4dafb2 100644 (file)
@@ -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.
+\f
+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.
+\f
+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.
 \f
-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.
-$
 \f
 This is the VMS port of GNU Make done by Hartmut.Becker@compaq.com.
 
index 50d9e5509ca88413e3813cd0dc93557c74faffad..8458406b26ee2cba09e5c25af8bfa3b3966ac777 100644 (file)
@@ -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.
 
index e83cc9b5127fd685298b5f51c83c7cf0dfdbef05..f91035845bea7720c16fc6e4b2e44c023c048c06 100644 (file)
@@ -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 0c93ac9c4d81b0f98d233ddd933726baef93ec7b..d046bd9a0d5e5e298195920705a6a7acbf200036 100644 (file)
--- 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 c8e19e580651dc151e15644abf8b4652aaf86f2b..b209d880a9942190eb9d6439a94849a7be552ba2 100644 (file)
--- 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 f5637fd2eb431945ae846df45be60362fc990352..6c9fb7539aeec8a88f86cbdff8181c025fc56380 100644 (file)
--- 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 a180ee9c97198b4e505878553a75ecbcfa647663..776ba7ce704e21133a457c298c9aaa5f6c75e00a 100644 (file)
--- 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"
index fee8d5e60f20d824bde03d90bc001f31a6ce7fe8..6359c47aacad0cb830c6db93b04b01442fe14ad9 100644 (file)
@@ -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 d91503258b88cdcd359b7f6f7da91521d509cb87..bc54ce649ca52bd6b1b2c9e9933889669af268df 100644 (file)
--- 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"
 
index f58b8166037ebcf5e5e31294daa0a21b6e51f8e5..3cf7afb507b1c505f76728fa374e48466fa8fac3 100644 (file)
--- 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 f8542b0fb960b1cba2f6b61b34d62268de88db95..a4ca72d6522086c9835509196c2be0f2376272f5 100644 (file)
--- 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 5991c80f1a14a578b481a83e02d1a914d760d8ec..cb355376028cd0eb26d2962107745f3b182dacf6 100644 (file)
--- 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"
index 74e866aeb46d6e2ad85cf2cdf6c58852c2770931..2ff14b648621827f205724a07014c4754431d994 100644 (file)
@@ -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"