Porting to VMS, from Hartmut Becker.

This commit is contained in:
Paul Smith 2013-05-27 13:01:48 -04:00
parent dc922e3f4c
commit e8f5d322cf
8 changed files with 58 additions and 40 deletions

View file

@ -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

View 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

4
job.h
View file

@ -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. */

7
load.c
View file

@ -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 */

View 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

View 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) $< $@

View file

@ -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>

View file

@ -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;
}