# Microsoft Visual C++ Makefile for f2c, a Fortran 77 to C converter
# Invoke with "nmake -f makefile.vc" .
SRC = ../

CC = cl /ML
CFLAGS = -Ot1 -nologo -DNO_LONG_LONG

OBJECTS = main.obj init.obj gram.obj lex.obj proc.obj equiv.obj data.obj format.obj \
	  expr.obj exec.obj intr.obj io.obj misc.obj error.obj mem.obj names.obj \
	  output.obj p1output.obj pread.obj put.obj putpcc.obj vax.obj formatdata.obj \
	  parse_args.obj niceprintf.obj cds.obj sysdep.obj version.obj

all: f2c.exe

checkfirst: xsum.out

f2c.exe: $(OBJECTS)
	$(CC) -Fef2c.exe $(OBJECTS) setargv.obj

$(OBJECTS): $(SRC)defs.h $(SRC)ftypes.h $(SRC)defines.h $(SRC)machdefs.h $(SRC)sysdep.h

cds.obj: $(SRC)cds.c $(SRC)sysdep.h
	$(CC) -c $(CFLAGS) $<
data.obj: $(SRC)data.c
	$(CC) -c $(CFLAGS) $<
equiv.obj: $(SRC)equiv.c
	$(CC) -c $(CFLAGS) $<
error.obj: $(SRC)error.c
	$(CC) -c $(CFLAGS) $<
exec.obj: $(SRC)exec.c $(SRC)p1defs.h $(SRC)names.h
	$(CC) -c $(CFLAGS) $<
expr.obj: $(SRC)expr.c $(SRC)output.h $(SRC)niceprintf.h $(SRC)names.h
	$(CC) -c $(CFLAGS) $<
format.obj: $(SRC)format.c $(SRC)p1defs.h $(SRC)format.h $(SRC)output.h $(SRC)niceprintf.h $(SRC)names.h $(SRC)iob.h
	$(CC) -c $(CFLAGS) $<
formatdata.obj: $(SRC)formatdata.c $(SRC)format.h $(SRC)output.h $(SRC)niceprintf.h $(SRC)names.h
	$(CC) -c $(CFLAGS) $<
gram.obj: $(SRC)gram.c $(SRC)p1defs.h
	$(CC) -c $(CFLAGS) $<
init.obj: $(SRC)init.c $(SRC)output.h $(SRC)niceprintf.h $(SRC)iob.h
	$(CC) -c $(CFLAGS) $<
intr.obj: $(SRC)intr.c $(SRC)names.h
	$(CC) -c $(CFLAGS) $<
io.obj: $(SRC)io.c $(SRC)names.h $(SRC)iob.h
	$(CC) -c $(CFLAGS) $<
lex.obj $(SRC): $(SRC)lex.c $(SRC)tokdefs.h $(SRC)p1defs.h
	$(CC) -c $(CFLAGS) $<
main.obj: $(SRC)main.c $(SRC)parse.h $(SRC)usignal.h
	$(CC) -c $(CFLAGS) $<
mem.obj: $(SRC)mem.c $(SRC)iob.h
	$(CC) -c $(CFLAGS) $<
misc.obj: $(SRC)misc.c
	$(CC) -c $(CFLAGS) $<
names.obj: $(SRC)names.c $(SRC)iob.h $(SRC)names.h $(SRC)output.h $(SRC)niceprintf.h
	$(CC) -c $(CFLAGS) $<
niceprintf.obj: $(SRC)niceprintf.c $(SRC)defs.h $(SRC)names.h $(SRC)output.h $(SRC)niceprintf.h
	$(CC) -c $(CFLAGS) $<
output.obj: $(SRC)output.c $(SRC)output.h $(SRC)niceprintf.h $(SRC)names.h
	$(CC) -c $(CFLAGS) $<
p1output.obj: $(SRC)p1output.c $(SRC)p1defs.h $(SRC)output.h $(SRC)niceprintf.h $(SRC)names.h
	$(CC) -c $(CFLAGS) $<
parse_args.obj: $(SRC)parse_args.c $(SRC)parse.h
	$(CC) -c $(CFLAGS) $<
pread.obj: $(SRC)pread.c
	$(CC) -c $(CFLAGS) $<
proc.obj: $(SRC)proc.c $(SRC)tokdefs.h $(SRC)names.h $(SRC)niceprintf.h $(SRC)output.h $(SRC)p1defs.h
	$(CC) -c $(CFLAGS) $<
put.obj: $(SRC)put.c $(SRC)names.h $(SRC)pccdefs.h $(SRC)p1defs.h
	$(CC) -c $(CFLAGS) $<
putpcc.obj: $(SRC)putpcc.c $(SRC)names.h
	$(CC) -c $(CFLAGS) $<
vax.obj: $(SRC)vax.c $(SRC)defs.h $(SRC)output.h $(SRC)pccdefs.h
	$(CC) -c $(CFLAGS) $<
output.h: $(SRC)output.c $(SRC)niceprintf.h
	$(CC) -c $(CFLAGS) $<
sysdep.obj: $(SRC)sysdep.c
	$(CC) -c $(CFLAGS) $<
version.obj: $(SRC)version.c
	$(CC) -c $(CFLAGS) $<

clean:
	rm *.obj f2c.exe *.h

veryclean: clean
	deltree /Y xsum.exe

b = $(SRC)Notice $(SRC)README $(SRC)cds.c $(SRC)data.c $(SRC)defines.h $(SRC)defs.h $(SRC)equiv.c $(SRC)error.c \
	$(SRC)exec.c $(SRC)expr.c $(SRC)f2c.1 $(SRC)f2c.1t $(SRC)f2c.h $(SRC)format.c $(SRC)format.h $(SRC)formatdata.c \
	$(SRC)ftypes.h $(SRC)gram.c $(SRC)gram.dcl $(SRC)gram.exec $(SRC)gram.expr $(SRC)gram.head $(SRC)gram.io \
	$(SRC)init.c $(SRC)intr.c $(SRC)io.c $(SRC)iob.h $(SRC)lex.c $(SRC)machdefs.h $(SRC)main.c \
	$(SRC)malloc.c $(SRC)mem.c $(SRC)memset.c $(SRC)misc.c $(SRC)names.c $(SRC)names.h $(SRC)niceprintf.c \
	$(SRC)niceprintf.h $(SRC)output.c $(SRC)output.h $(SRC)p1defs.h $(SRC)p1output.c \
	$(SRC)parse.h $(SRC)parse_args.c $(SRC)pccdefs.h $(SRC)pread.c $(SRC)proc.c $(SRC)put.c $(SRC)putpcc.c \
	$(SRC)sysdep.c $(SRC)sysdep.h $(SRC)tokens $(SRC)usignal.h $(SRC)vax.c $(SRC)version.c $(SRC)xsum.c

xsum.exe: $(SRC)xsum.c
	$(CC) $(CFLAGS) -DMSDOS $(SRC)xsum.c

#Check validity of transmitted source...
# Unfortunately, conditional execution is hard here, since fc does not set a
# nonzero exit code when files differ.

xsum.out: xsum.exe $b
	xsum $(b) >xsum1.out
	fc $(SRC)xsum0.out xsum1.out
	@echo If fc showed no differences, manually rename xsum1.out xsum.out:
	@echo if xsum.out exists, first "del xsum.out"; then "ren xsum1.out xsum.out".
	@echo Once you are happy that your source is OK, "nmake -f makefile.vc f2c.exe".
