summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2013-05-27 13:01:48 -0400
committerPaul Smith <psmith@gnu.org>2013-05-27 13:01:48 -0400
commite8f5d322cf720f65a1d24c1219bcedef8af9e6ec (patch)
treee50750525d4a4576033edb283f023891ede2c668
parentdc922e3f4c442255ba8deb84c9300aa7e3a6108c (diff)
downloadgunmake-e8f5d322cf720f65a1d24c1219bcedef8af9e6ec.tar.gz
Porting to VMS, from Hartmut Becker.
-rw-r--r--ChangeLog10
-rw-r--r--function.c1
-rw-r--r--job.h4
-rw-r--r--load.c7
-rw-r--r--makefile.com2
-rw-r--r--makefile.vms69
-rw-r--r--makeint.h1
-rw-r--r--vmsjobs.c4
8 files changed, 58 insertions, 40 deletions
diff --git a/ChangeLog b/ChangeLog
index 5f5dd93..e4e4b2c 100644
--- 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
diff --git a/function.c b/function.c
index 3b9f1de..896cbb2 100644
--- a/function.c
+++ b/function.c
@@ -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 4745127..c9902f0 100644
--- 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 e93822e..165153a 100644
--- 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 */
diff --git a/makefile.com b/makefile.com
index 47b8d74..fee8d5e 100644
--- a/makefile.com
+++ b/makefile.com
@@ -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
diff --git a/makefile.vms b/makefile.vms
index cf659ba..4534a44 100644
--- a/makefile.vms
+++ b/makefile.vms
@@ -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) $< $@
diff --git a/makeint.h b/makeint.h
index 393c4d9..749a601 100644
--- 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>
diff --git a/vmsjobs.c b/vmsjobs.c
index 2a59152..7e685c8 100644
--- 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;
}