# $Id$

#PARAMS		do not remove this line!

SRC_DIR =	$(SRC_HOME)/util/topgen
INCLUDES =	-I$(SRC_DIR) -I.
CFLAGS =	$(COPTIONS) $(INCLUDES)
LDFLAGS =	$(LDOPTIONS)
LINTFLAGS =	$(LINTOPTIONS) $(INCLUDES)
SOURCE =	$(SRC_DIR)/token.h $(SRC_DIR)/symtab.h $(SRC_DIR)/misc.h \
		$(SRC_DIR)/tunable.h $(SRC_DIR)/main.c $(SRC_DIR)/topgen.g \
		$(SRC_DIR)/LLlex.c $(SRC_DIR)/symtab.c $(SRC_DIR)/pattern.c \
		$(SRC_DIR)/hash.c
CFILES =	$(SRC_DIR)/main.c topgen.c Lpars.c $(SRC_DIR)/LLlex.c \
		$(SRC_DIR)/symtab.c $(SRC_DIR)/pattern.c $(SRC_DIR)/hash.c
OFILES =	main.$(SUF) topgen.$(SUF) Lpars.$(SUF) LLlex.$(SUF) \
		symtab.$(SUF) pattern.$(SUF) hash.$(SUF)

all:		parser
		@make topgen

cmp:		all
		cmp topgen $(TARGET_HOME)/lib.bin/topgen

install:	all
		cp topgen $(TARGET_HOME)/lib.bin/topgen

clean:
		rm -f topgen *.$(SUF) Lpars.c Lpars.h topgen.c parser

parser:		$(SRC_DIR)/topgen.g
		$(UTIL_HOME)/bin/LLgen $(SRC_DIR)/topgen.g
		touch parser

topgen.$(SUF):	$(SRC_DIR)/token.h Lpars.h $(SRC_DIR)/symtab.h $(SRC_DIR)/misc.h topgen.c
		$(CC) -c $(CFLAGS) topgen.c
Lpars.$(SUF):	Lpars.h Lpars.c
		$(CC) -c $(CFLAGS) Lpars.c
LLlex.$(SUF):	$(SRC_DIR)/token.h Lpars.h $(SRC_DIR)/tunable.h $(SRC_DIR)/LLlex.c
		$(CC) -c $(CFLAGS) $(SRC_DIR)/LLlex.c
symtab.$(SUF):	$(SRC_DIR)/symtab.h $(SRC_DIR)/symtab.c
		$(CC) -c $(CFLAGS) $(SRC_DIR)/symtab.c
hash.$(SUF):	$(SRC_DIR)/misc.h $(SRC_DIR)/hash.c
		$(CC) -c $(CFLAGS) $(SRC_DIR)/hash.c
pattern.$(SUF):	$(SRC_DIR)/misc.h $(SRC_DIR)/symtab.h $(SRC_DIR)/pattern.c
		$(CC) -c $(CFLAGS) $(SRC_DIR)/pattern.c
main.$(SUF):	$(SRC_DIR)/main.c
		$(CC) -c $(CFLAGS) $(SRC_DIR)/main.c

topgen:		$(OFILES)
		$(CC) $(LDFLAGS) $(OFILES) -o topgen

lint:		parser
		$(LINT) $(LINTFLAGS) $(CFILES)

pr:
		@pr $(SOURCE) $(SRC_DIR)/proto.make

opr:
		make pr ^ opr
