From e8f5d322cf720f65a1d24c1219bcedef8af9e6ec Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 27 May 2013 13:01:48 -0400 Subject: Porting to VMS, from Hartmut Becker. --- ChangeLog | 10 +++++++++ function.c | 1 + job.h | 4 ++++ load.c | 7 +++--- makefile.com | 2 +- makefile.vms | 69 +++++++++++++++++++++++++++++++----------------------------- makeint.h | 1 + vmsjobs.c | 4 ++-- 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 + + * 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 * 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 # include # include # include 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; } -- cgit v1.2.3