#
# makefile for UNIX/24V C compiler
# compiler is based on S. C. Johnson's Portable C Compiler
#
# S. J. Leffler
# 4/30/80
#
PASS1=pass1
PASS2=pass2
CPP=cpp.dir
INCLUDES=common mac2defs macdefs manifest mfile1 mfile2
P1FILES=$(PASS1)/cgram.o $(PASS1)/clocal.o $(PASS1)/code.o $(PASS1)/comm1.o\
      $(PASS1)/local.o $(PASS1)/optim.o $(PASS1)/pftn.o\
      $(PASS1)/scan.o $(PASS1)/trees.o $(PASS1)/xdefs.o
P2FILES=$(PASS2)/address.o $(PASS2)/allo.o $(PASS2)/comm2.o\
      $(PASS2)/local2.o $(PASS2)/match.o $(PASS2)/order.o $(PASS2)/reader.o\
      $(PASS2)/table.o
CPPFILES=$(CPP)/cpp.o $(CPP)/cpy.o
CFLAGS=-DAS -I.
LDFLAGS=-s
YFLAGS=

all: cpp compiler

cpp: $(CPPFILES)
	$(CC) -o cpp $(LDFLAGS) $(CPPFILES)

compiler: c0 c1

c0: $(P1FILES)
	$(CC) -o c0 $(LDFLAGS) $(P1FILES)

c1: $(P2FILES)
	$(CC) -o c1 $(LDFLAGS) $(P2FILES)

#
# C pre-processor dependencies
#
$(CPP)/cpy.o: $(CPP)/cpy.y $(CPP)/yylex.c
	$(YACC) $(YFLAGS) cpy.y
	$(CC) -c $(CFLAGS) y.tab.c
	mv y.tab.o $(CPP)/cpy.o

$(CPP)/cpp.o: $(CPP)/cpp.c
	$(CC) -c $(CFLAGS) $(CPP)/cpp.c
	mv cpp.o $(CPP)/cpp.o

#
# Pass 1 dependencies
#
$(PASS1)/cgram.c: $(PASS1)/cgram.y
	$(YACC) $(YFLAGS) $(PASS1)/cgram.y
	mv y.tab.c $(PASS1)/cgram.c

$(PASS1)/cgram.o: $(PASS1)/cgram.c macdefs manifest mfile1
	$(CC) -c $(CFLAGS) pass1/cgram.c
	mv cgram.o pas1s1/cgram.o

$(PASS1)/clocal.o: $(PASS1)/clocal.c macdefs manifest mfile1
	$(CC) -c $(CFLAGS) $(PASS1)/clocal.c
	mv clocal.o $(PASS1)/clocal.o

$(PASS1)/code.o: $(PASS1)/code.c macdefs manifest mfile1
	$(CC) -c $(CFLAGS) $(PASS1)/code.c
	mv code.o $(PASS1)/code.o

$(PASS1)/comm1.o: $(PASS1)/comm1.c common macdefs manifest mfile1
	$(CC) -c $(CFLAGS) $(PASS1)/comm1.c
	mv comm1.o $(PASS1)/comm1.o

$(PASS1)/local.o: $(PASS1)/local.c macdefs manifest mfile1
	$(CC) -c $(CFLAGS) $(PASS1)/local.c
	mv local.o $(PASS1)/local.o

$(PASS1)/optim.o: $(PASS1)/optim.c macdefs manifest mfile1
	$(CC) -c $(CFLAGS) $(PASS1)/optim.c
	mv optim.o $(PASS1)/optim.o

$(PASS1)/pftn.o: $(PASS1)/pftn.c macdefs manifest mfile1
	$(CC) -c $(CFLAGS) $(PASS1)/pftn.c
	mv pftn.o $(PASS1)/pftn.o

$(PASS1)/scan.o: $(PASS1)/scan.c macdefs manifest mfile1
	$(CC) -c $(CFLAGS) $(PASS1)/scan.c
	mv scan.o $(PASS1)/scan.o

$(PASS1)/trees.o: $(PASS1)/trees.c macdefs manifest mfile1
	$(CC) -c $(CFLAGS) $(PASS1)/trees.c
	mv trees.o $(PASS1)/trees.o

$(PASS1)/xdefs.o: $(PASS1)/xdefs.c macdefs manifest mfile1
	$(CC) -c $(CFLAGS) $(PASS1)/xdefs.c
	mv xdefs.o $(PASS1)/xdefs.o

#
# Pass 2 dependencies
#
$(PASS2)/address.o: $(PASS2)/address.c mac2defs macdefs manifest mfile2
	$(CC) -c $(CFLAGS) $(PASS2)/address.c
	mv address.o $(PASS2)/address.o

$(PASS2)/allo.o: $(PASS2)/allo.c mac2defs macdefs manifest mfile2
	$(CC) -c $(CFLAGS) $(PASS2)/allo.c
	mv allo.o $(PASS2)/allo.o

$(PASS2)/comm2.o: $(PASS2)/comm2.c common mac2defs macdefs manifest mfile2
	$(CC) -c $(CFLAGS) $(PASS2)/comm2.c
	mv comm2.o $(PASS2)/comm2.o

$(PASS2)/local2.o: $(PASS2)/local2.c mac2defs macdefs manifest mfile2
	$(CC) -c $(CFLAGS) $(PASS2)/local2.c
	mv local2.o $(PASS2)/local2.o

$(PASS2)/match.o: $(PASS2)/match.c mac2defs macdefs manifest mfile2
	$(CC) -c $(CFLAGS) $(PASS2)/match.c
	mv match.o $(PASS2)/match.o

$(PASS2)/order.o: $(PASS2)/order.c mac2defs macdefs manifest mfile2
	$(CC) -c $(CFLAGS) $(PASS2)/order.c
	mv order.o $(PASS2)/order.o

$(PASS2)/reader.o: $(PASS2)/reader.c mac2defs macdefs manifest mfile2
	$(CC) -c $(CFLAGS) $(PASS2)/reader.c
	mv reader.o $(PASS2)/reader.o

$(PASS2)/table.o: $(PASS2)/table.c mac2defs macdefs manifest mfile2
	$(CC) -c $(CFLAGS) $(PASS2)/table.c
	mv table.o $(PASS2)/table.o

#
# Common stuff
#
