BDDDIR=/home/lyuan/fireman/buddy-2.4/src
PTPDIR =..
INCLUDE= /usr/include -I/usr/local/include -I$(PTPDIR) -I$(BDDDIR)
LIBS = /usr/local/lib -lbdd  
LIBS += -L/usr/lib -lm   
LIBS += -L$(PTPDIR)/FireBase  -lFireBase
LIBS += -L$(PTPDIR)/InfoBase -lInfoBase
LIBS += -L$(PTPDIR)/Policy -lFirePolicy

LDFLAGS=-Wl,--rpath -Wl,/usr/local/lib
YACC = yacc
CPP = g++ -Wall -Wformat -O3
OBJS=  fwPIXParse.tab.o  fwIPTParse.tab.o
OBJS +=   Firewall.o nfFirewall.o
LEX = flex
BISON=bison -d  --debug -v

default: fireman

%.o: %.cpp %.h
	$(CPP) -I$(INCLUDE) -c $< -o $@	
%.o: %.c
	$(CPP) -I$(INCLUDE) -c $< -o $@	

lex.fwPIX.c: fwPIXParse.lex 
	$(LEX) $< 

lex.fwIPT.c: fwIPTParse.lex 
	$(LEX) $< 


fwPIXParse.tab.cpp fwPIXParse.tab.h: fwPIXParse.ypp lex.fwPIX.c
	$(BISON) -p fwPIX -o fwPIXParse.tab.cpp $<
	mv fwPIXParse.tab.hpp fwPIXParse.tab.h


fwIPTParse.tab.cpp fwIPTParse.tab.h: fwIPTParse.ypp lex.fwIPT.c
	$(BISON) -p fwIPT -o fwIPTParse.tab.cpp $<
	mv fwIPTParse.tab.hpp fwIPTParse.tab.h


fireman: fireman.cpp fireman.h $(OBJS) ../FireBase/libFireBase.a ../InfoBase/libInfoBase.a ../Policy/libFirePolicy.a
	$(CPP)  $< $(OBJS) -I$(INCLUDE) -o $@ $(LDFLAGS) -L$(LIBS)    


.PHONY: clean	
clean: 
	-rm -vRf *~ *.dot $(OBJS) *.o *.tab.*  lex.* *.output
	-rm -vRf fireman 

makefile.dep: *.cpp *.c *.h
	for i in *.cpp; do gcc -MM $$i; done >$@

