CC=gcc
CFLAGS= -g3  -Wall -pedantic 
LFLAGS= -g3 
OBJS=parse.o parse.tab.o lex.yy.o debug.o symbol.o term.o main.o \
	array.o graph.o instance.o iterate.o list.o predicate.o rule.o \
	literal.o extern.o library.a

%.o: %.cc
	$(CC) $(CFLAGS) -c $<


lparse : $(OBJS)
	$(CC) $(LFLAGS) -o lparse $(OBJS) 
	rm -f ../bin/lparse
	ln lparse ../bin/lparse

library.a : library.o
	register -c

lex.yy.cc : lex.l 
	flex -olex.yy.cc lex.l

parse.tab.cc : parse.y 
	bison -vdt -o parse.tab.cc  parse.y

array.o: array.cc global.h array.h debug.h predicate.h list.h \
 literal.h term.h instance.h rule.h graph.h
debug.o: debug.cc debug.h global.h
extern.o: extern.cc global.h
graph.o: graph.cc predicate.h global.h list.h literal.h term.h \
 instance.h debug.h rule.h graph.h array.h
instance.o: instance.cc instance.h debug.h global.h symbol.h
iterate.o: iterate.cc global.h iterate.h instance.h debug.h
lex.yy.o: lex.yy.cc parse.h debug.h global.h term.h literal.h list.h \
 instance.h symbol.h parse.tab.cc.h
library.o: library.cc global.h symbol.h debug.h
list.o: list.cc list.h debug.h global.h
literal.o: literal.cc debug.h global.h literal.h term.h list.h \
 instance.h parse.h symbol.h array.h predicate.h rule.h graph.h
main.o: main.cc global.h symbol.h debug.h library.h parse.h term.h \
 literal.h list.h instance.h graph.h array.h predicate.h rule.h
parse.o: parse.cc parse.h debug.h global.h term.h literal.h list.h \
 instance.h predicate.h rule.h graph.h array.h symbol.h
parse.tab.o: parse.tab.cc parse.h debug.h global.h term.h literal.h \
 list.h instance.h symbol.h
predicate.o: predicate.cc predicate.h global.h list.h literal.h term.h \
 instance.h debug.h rule.h graph.h array.h symbol.h iterate.h
rule.o: rule.cc global.h rule.h list.h literal.h term.h instance.h \
 debug.h graph.h array.h symbol.h predicate.h iterate.h
symbol.o: symbol.cc debug.h global.h symbol.h term.h
term.o: term.cc term.h global.h symbol.h debug.h parse.h literal.h \
 list.h instance.h

clean :
	rm -f *.o
	rm -f parse.tab.cc*
	rm -f lex.yy.cc
	rm -f *~
	rm -f lib.cc
	rm -f library.a



