OBJS = main.o input.o process.o utils.o comment.o token.o ztype.o \
       pound.o include.o hash.o macro.o define.o if_expr.o alloc.o
SRCS = main.c input.c process.c utils.c comment.c token.c ztype.c \
       pound.c include.c hash.c macro.c define.c if_expr.c
TARGET = cpp.ttp
#CFLAGS = -O -DDEBUG
CFLAGS = -O
#LDFLAGS = -8
LDFLAGS =

RM = rm -f

$(TARGET): $(OBJS)
	$(CC) -o $(TARGET) $(LDFLAGS) $(OBJS)

$(OBJS): global.h
main.o utils.o token.o ztype.o if_expr.o: ztype.h
main.o: patchlev.h
hash.o token.o macro.o: alloc.h

clean:
	$(RM) $(TARGET) $(OBJS) generic.ttp alloc.c alloc.h

pretty:
	indent -T Token -T Hash -T Macro -T Directive  -T Long $(SRCS)

GPARMS = Token:256 Macro:256 Hash:256

alloc.o: alloc.c alloc.h
	$(CC) $(CFLAGS) -c -o alloc.o alloc.c
alloc.c: alloc.cg generic.ttp
	generic alloc.cg $(GPARMS)
alloc.h: alloc.hg generic.ttp
	generic alloc.hg $(GPARMS)

generic.ttp: generic.c
	$(CC) -O -c -o generic.o generic.c
	$(CC) -o generic.ttp generic.o
