# ==============================================================
# Makefile for BDDSearch files
# ==============================================================

CFLAGS =  -W -Wtraditional -Wmissing-prototypes -Wall

LIBDIR = /usr0/runej/BDDpackages/buddy20/src

INCDIR = /usr0/runej/BDDpackages/buddy20/src


# --- full object list
OBJ =     lex.yy.o y.tab.o lex.xx.o x.tab.o timer.o extNADL.o \
          numDomain.o pddl.o reachInfo.o balancedInfo.o \
          bddLayout.o partition.o  \
          singleState.actions.o singleState.search.o \
          symbolicHeuristic.o bdda.search.o universal.o \
          searchQueue.o searchAlgAuxFunc.o nonDetSearchAlg.o \
          detSearchAlg.o SA.o checkPlan.o  main.o  

CFILES =  lex.yy.c y.tab.c lex.xx.c x.tab.c

CCFILES = timer.cc extNADL.cc pddl.cc numDomain.cc reachInfo.cc \
          balancedInfo.cc bddLayout.cc partition.cc \
          singleState.actions.cc symbolicHeuristic.cc singleState.search.cc \
          bdda.search.cc universal.cc searchQueue.cc SA.cc searchAlgAuxFunc.cc \
          detSearchAlg.cc nonDetSearchAlg.cc checkPlan.cc main.cc

# --------------------------------------------------------------
# Code generation
# --------------------------------------------------------------

.SUFFIXES: .cc .c

.cc.o:
	g++ -I$(INCDIR)   -g  -c  $<

.c.o:
	g++ -I$(INCDIR)   -g  -c -x c++  $<



# --------------------------------------------------------------
# The primary targets.
# --------------------------------------------------------------

bdds:	$(OBJ)
	g++  -g   $(CFLAGS) -o obs $(OBJ) -L$(LIBDIR) -lbdd -lfl -lm
	chmod u+x obs


y.tab.c y.tab.h: extNADL.y  
	yacc -d extNADL.y


lex.yy.c:    extNADL.l 
	lex extNADL.l


x.tab.c x.tab.h: pddl.y  
	yacc -d -p xx -b x pddl.y


lex.xx.c:    pddl.l 
	lex -Pxx pddl.l


clean:
# If re-lexing and yaccing pddl you may have to run
# yacc -d -v -p xx -b x pddl.y from the command prompt in order to make
# x.tab.h. Also outcomment #define yywrap xxwrap in lex.xx.c
#	rm x.tab.c
#	rm lex.xx.c
#	rm x.tab.h
# If re-lexing and yaccing nadl you may have to run
# yacc -d -v extNADL.y from the command prompt in order to make
# y.tab.h. 
#	rm y.tab.c
#	rm lex.yy.c
#	rm y.tab.h
	rm -f *.o core *~
	rm -f obs

depend:
	g++ -x c++ -MM $(CFILES) -I$(INCDIR) > depend.inf
	g++ -MM $(CCFILES) -I$(INCDIR) >> depend.inf

###
include depend.inf

