Porting to VMS, from Hartmut Becker.
authorPaul Smith <psmith@gnu.org>
Mon, 27 May 2013 17:01:48 +0000 (13:01 -0400)
committerPaul Smith <psmith@gnu.org>
Mon, 27 May 2013 17:01:48 +0000 (13:01 -0400)
ChangeLog
function.c
job.h
load.c
makefile.com
makefile.vms
makeint.h
vmsjobs.c

index 5f5dd93532f1a1f1d614c8d2ce846dba6cb9005a..e4e4b2c50df562325f39df300b638d30957af6e1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2013-05-27  Hartmut Becker  <becker.ismaning@freenet.de>
+
+       * function.c (func_shell_base) [VMS]: Support VMS.
+       * makefile.com [VMS]: Ditto.
+       * makefile.vms [VMS]: Ditto.
+       * makeint.h [VMS]: Ditto.
+       * vmsjobs.c [VMS]: Ditto.
+       * job.h: Define RECORD_SYNC_MUTEX() when OUTPUT_SYNC is not set.
+       * load.c (unload_file): Fix signature if MAKE_LOAD is not set.
+
 2013-05-26  Paul Smith  <psmith@gnu.org>
 
        * remake.c (f_mtime): Ensure that archive file names are in the
index 3b9f1deab73e5b758dab0deec8ce800ed44b8eb1..896cbb2afc25fd5bb9209203b5ebc79b6dc5328d 100644 (file)
@@ -1626,6 +1626,7 @@ func_shell_base (char *o, char **argv, int trim_newlines)
 {
   fprintf (stderr, "This platform does not support shell\n");
   die (EXIT_FAILURE);
+  return NULL;
 }
 
 #define func_shell 0
diff --git a/job.h b/job.h
index 47451273c7b92d2804975f5cd8ea26bf21510033..c9902f01c81f50d108680cff326b34fa85b44150 100644 (file)
--- a/job.h
+++ b/job.h
@@ -78,6 +78,10 @@ typedef int sync_handle_t;      /* file descriptor */
 #  define RECORD_SYNC_MUTEX(m) (void)(m)
 
 # endif
+#else /* !OUTPUT_SYNC */
+#define RECORD_SYNC_MUTEX(m) \
+   error (NILF, \
+         _("-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."));
 #endif  /* OUTPUT_SYNC */
 
 /* Structure describing a running or dead child process.  */
diff --git a/load.c b/load.c
index e93822ecdb5be8c043174fb325a6ec8f17206017..165153a4c9aa449d92024fb739f12cfbd9af761d 100644 (file)
--- a/load.c
+++ b/load.c
@@ -231,11 +231,10 @@ load_file (const gmk_floc *flocp, const char **ldname, int noerror)
   return 0;
 }
 
-int
-unload_file (struct file *file)
+void
+unload_file (const char *name)
 {
-  fatal (flocp, "INTERNAL: Cannot unload when load is not supported!");
-  return 0;
+  fatal (NILF, "INTERNAL: Cannot unload when load is not supported!");
 }
 
 #endif  /* MAKE_LOAD */
index 47b8d74a231214896c86790a4ee36f32912df50e..fee8d5e60f20d824bde03d90bc001f31a6ce7fe8 100644 (file)
@@ -67,7 +67,7 @@ $ then
 $   gosub check_cc_qual
 $ endif
 $ filelist = "alloca ar arscan commands default dir expand file function " + -
-             "hash implicit job main misc read remake remote-stub rule " + -
+             "hash implicit job load main misc read remake remote-stub rule " + -
             "signame variable version vmsfunctions vmsify vpath " + -
             "[.glob]glob [.glob]fnmatch getopt1 getopt strcache"
 $ copy config.h-vms config.h
index cf659ba8ecb52157065865aeca8a7f55a3a22ecb..4534a44b4374edbf6f14790c86d218916f7c1cc9 100644 (file)
@@ -20,7 +20,7 @@
 #  Klaus Kämpf (kkaempf@rmi.de)
 # Modified for version 3.78.1 by Hartmut.Becker@compaq.com.
 # Modified for version 3.80 by zinser@decus.de
-# Modified for version 3.81 by Hartmut Becker
+# Modified for versions 3.81, 3.99.90 by Hartmut Becker
 
 CC = cc
 CP = copy
@@ -91,16 +91,16 @@ manext = 1
 #guile = ,guile.obj
 
 objs = commands.obj,job.obj,dir.obj,file.obj,misc.obj,hash.obj,\
-       main.obj,read.obj,remake.obj,rule.obj,implicit.obj,\
+       load.obj,main.obj,read.obj,remake.obj,rule.obj,implicit.obj,\
        default.obj,variable.obj,expand.obj,function.obj,strcache.obj,\
        vpath.obj,version.obj\
        $(ARCHIVES)$(ALLOCA)$(extras)$(getopt)$(glob)$(guile)
 
 srcs = commands.c job.c dir.c file.c misc.c guile.c hash.c \
-       main.c read.c remake.c rule.c implicit.c \
+       load.c main.c read.c remake.c rule.c implicit.c \
        default.c variable.c expand.c function.c strcache.c \
        vpath.c version.c vmsfunctions.c vmsify.c $(ARCHIVES_SRC) $(ALLOCASRC) \
-       commands.h dep.h filedef.h job.h make.h rule.h variable.h
+       commands.h dep.h filedef.h job.h makeint.h rule.h variable.h
 
 
 .PHONY: all doc
@@ -114,40 +114,43 @@ make.exe: $(objs)
 
 .PHONY: clean realclean
 clean:
-       $$ purge [...]
+       -purge [...]
        -$(RM) make.exe;,*.obj;
        -$(RM) [.glob]*.obj;
 
 # Automatically generated dependencies.
-commands.obj: commands.c make.h dep.h commands.h filedef.h variable.h job.h
-job.obj: job.c vmsjobs.c make.h commands.h job.h filedef.h variable.h
-dir.obj: dir.c make.h
-file.obj: file.c make.h commands.h dep.h filedef.h variable.h
-misc.obj: misc.c make.h dep.h
-hash.obj: hash.c make.h hash.h
-strcache.obj: strcache.c make.h hash.h
-main.obj: main.c make.h commands.h dep.h filedef.h variable.h job.h
-guile.obj: guile.c make.h debug.h dep.h gmk-default.h
-read.obj: read.c make.h commands.h dep.h filedef.h variable.h
-remake.obj: remake.c make.h commands.h job.h dep.h filedef.h
-rule.obj: rule.c make.h commands.h dep.h filedef.h variable.h rule.h
-implicit.obj: implicit.c make.h rule.h dep.h filedef.h
-default.obj: default.c make.h rule.h dep.h filedef.h commands.h variable.h
-variable.obj: variable.c make.h commands.h variable.h dep.h filedef.h
-expand.obj: expand.c make.h commands.h filedef.h variable.h
-function.obj: function.c make.h variable.h dep.h commands.h job.h
-vpath.obj: vpath.c make.h filedef.h variable.h
+# makeint.h: config.h gnumake.h gettext.h
+# filedef.h: hash.h
+ar.obj: ar.c makeint.h filedef.h dep.h [.glob]fnmatch.h
+arscan.obj: arscan.c makeint.h
+commands.obj: commands.c makeint.h dep.h commands.h filedef.h variable.h job.h
+default.obj: default.c makeint.h rule.h dep.h job.h filedef.h commands.h variable.h
+dir.obj: dir.c makeint.h hash.h [.glob]glob.h
+expand.obj: expand.c makeint.h commands.h filedef.h job.h rule.h variable.h
+file.obj: file.c makeint.h commands.h dep.h filedef.h variable.h job.h debug.h
+function.obj: function.c makeint.h variable.h dep.h commands.h filedef.h debug.h job.h
+getopt.obj: getopt.c getopt.h config.h gettext.h
+getopt1.obj: getopt1.c getopt.h config.h
+guile.obj: guile.c makeint.h debug.h dep.h gmk-default.h
+hash.obj: hash.c makeint.h hash.h
+implicit.obj: implicit.c makeint.h rule.h dep.h filedef.h debug.h variable.h job.h commands.h
+job.obj: job.c vmsjobs.c makeint.h commands.h job.h filedef.h variable.h debug.h
+load.obj: load.c makeint.h debug.h filedef.h variable.h
+main.obj: main.c makeint.h commands.h dep.h filedef.h variable.h job.h rule.h debug.h getopt.h
+misc.obj: misc.c makeint.h dep.h debug.h
+read.obj: read.c makeint.h commands.h dep.h filedef.h variable.h [.glob]glob.h debug.h rule.h job.h
+remake.obj: remake.c makeint.h commands.h job.h dep.h filedef.h variable.h debug.h
+remote-stub.obj: remote-stub.c makeint.h filedef.h job.h commands.h
+rule.obj: rule.c makeint.h commands.h dep.h filedef.h variable.h rule.h job.h
+signame.obj: signame.c makeint.h
+strcache.obj: strcache.c makeint.h hash.h
+variable.obj: variable.c makeint.h commands.h variable.h dep.h filedef.h job.h rule.h
 version.obj: version.c config.h
-arscan.obj: arscan.c
-ar.obj: ar.c make.h filedef.h
-signame.obj: signame.c
-remote-stub.obj: remote-stub.c
-[.glob]glob.obj: [.glob]glob.c
-[.glob]fnmatch.obj: [.glob]fnmatch.c
-getopt.obj: getopt.c
-getopt1.obj: getopt1.c
-vmsfunctions.obj: vmsfunctions.c make.h vmsdir.h
-vmsify.obj: vmsify.c make.h
+vmsfunctions.obj: vmsfunctions.c makeint.h vmsdir.h debug.h job.h
+vmsify.obj: vmsify.c
+vpath.obj: vpath.c makeint.h filedef.h variable.h
+[.glob]fnmatch.obj: [.glob]fnmatch.c [.glob]fnmatch.h config.h
+[.glob]glob.obj: [.glob]glob.c [.glob]glob.h [.glob]fnmatch.h config.h
 
 config.h: config.h-vms
        $(CP) $< $@
index 393c4d9236f3fbd7aba4b380db446443565246b3..749a6014128b2abd618bd46b0cb3444e656acc64 100644 (file)
--- a/makeint.h
+++ b/makeint.h
@@ -197,6 +197,7 @@ unsigned int get_path_max (void);
 #endif
 
 #ifdef VMS
+# include <fcntl.h>
 # include <types.h>
 # include <unixlib.h>
 # include <unixio.h>
index 2a59152fe75269bfe6e10b2248b91c78923b144f..7e685c8f3058fe6d0c02545714ee5a9221f8fa34 100644 (file)
--- a/vmsjobs.c
+++ b/vmsjobs.c
@@ -149,7 +149,7 @@ vmsHandleChildTerm(struct child *child)
       {
        /* The commands failed.  Write an error message,
           delete non-precious targets, and abort.  */
-       child_error (c->file->name, c->cstatus, 0, 0, 0);
+       child_error (c, c->cstatus, 0, 0, 0);
        c->file->update_status = 1;
        delete_child_targets (c);
       }
@@ -158,7 +158,7 @@ vmsHandleChildTerm(struct child *child)
        if (child_failed)
          {
            /* The commands failed, but we don't care.  */
-           child_error (c->file->name, c->cstatus, 0, 0, 1);
+           child_error (c, c->cstatus, 0, 0, 1);
            child_failed = 0;
          }