PROGRAM	      = pl0
DEST	      = .
CC	      = cc
#  If your system need malloc.h, add "-DNEED_MALLOC" to CFLAGS.
CFLAGS	      = -g
LDFLAGS	      = -g
RIE	      = rie
LEX	      = lex
EXTHDRS	      =	/usr/include/stdio.h \
		/usr/include/string.h \
		/usr/include/malloc.h
HDRS	      = common.h \
		env.h \
		code.h
ANAS	      = pl0.l \
                pl0.rie
SRCS	      = common.c \
		env.c \
		code.c \
		inter.c \
		lex.c
MDMS	      = lex.yy.c \
		pl0.tab.c \
		pl0.tab.h
OBJS	      = lex.yy.o \
		pl0.tab.o \
		common.o \
		env.o \
		code.o \
		inter.o

pl0:		$(OBJS)
		$(CC) $(LDFLAGS) $(OBJS) -o pl0
pl0.tab.o:	pl0.tab.c env.h code.h
		$(CC) $(CFLAGS) -c pl0.tab.c -o pl0.tab.o
pl0.tab.h \
pl0.tab.c:	pl0.rie
		$(RIE) -d pl0.rie
lex.yy.o:	lex.yy.c
		$(CC) $(CFLAGS) -c lex.yy.c -o lex.yy.o
lex.yy.c:	pl0.l lex.c
		$(LEX) pl0.l
lex.c:		env.h code.h pl0.tab.h
common.o:	common.c
		$(CC) $(CFLAGS) -c common.c -o common.o
env.o:		env.c
		$(CC) $(CFLAGS) -c env.c -o env.o
env.c:		env.h
env.h:		common.h
code.o:		code.c code.h common.h
		$(CC) $(CFLAGS) -c code.c -o code.o
code.c:		code.h common.h
inter.o:		inter.c code.h
		$(CC) $(CFLAGS) -c inter.c -o inter.o

#
clean:;		rm -f $(PROGRAM) $(MDMS) $(OBJS) core

tags:		$(MDRS)
		etags $(HDRS) $(ANAS) $(SRCS)

comp:;		@compress -v $(HDRS) $(ANAS) $(SRCS)

uncomp:;	@uncompress -v $(HDRS) $(ANAS) $(SRCS)

