CC	=/usr/bin/g++
FLAGS = -g -O3 -Wall -DTIMING -DAUTOMATON_STATS \
	-D_DEBUG_INTERMEDIATE_REP\
	-D_DEBUG_FRONT_DETERMINISTIC \
	-D_DEBUG_FRONT_NONDETERMINISTIC \
	-D_DEBUG_CONVERSIONS \
	-D_DEBUG_ALPHABETIZE \
	-D_DEBUG_UTILS \
	-D_DEBUG_MINIMIZE \
	-D_DEBUG_TRANS_RELABELER \
	-D_DEBUG_GLOBAL_PARAMS

CUSTOM_LOCAL = /projects/vardi/usr/local
TLM_HOME = /projects/vardi/src/TLM-2005-04-08/tlm

## Include directories
INCLUDE_DIRS = 	$(CUSTOM_LOCAL)/include \
		$(CUSTOM_LOCAL)/include/spot \
		./
INCDIR = $(INCLUDE_DIRS:%=-I %)

## Library directories
LIBRARY_DIRS =	$(CUSTOM_LOCAL)/lib 

LIBDIR = $(LIBRARY_DIRS:%=-L %)

## Other static libraries
LIB_OTHERS = $(CUSTOM_LOCAL)/lib/libspot.a \
	     $(CUSTOM_LOCAL)/lib/libbdd.a

LIBS = $(LIBDIR) $(LIB_OTHERS)

CFLAGS = $(FLAGS) $(INCDIR) 

## Example .cc files
SRCS = $(wildcard ./*.cc )
HDRS = $(wildcard ./*.h  )

OBJS = main.o \
	tostring_paren.o \
	monitor_params.o \
	utils.o \
	global_params.o \
	automaton_tools.o \
	augment.o \
	ap_extractor.o \
	$(VISITOR_OBJ:%=$(VISITOR_DIR)/%) \
	$(PARSER_OBJ:%=$(PARSER_DIR)/%) \
	alphabetize.o \
	conversions.o \
	intermediate_rep.o \
	minimize.o \
	aspect.o

PARSER_OBJ = bool_formula.o bool_parser.o bool_operator.o
PARSER_DIR = boolpar

VISITOR_OBJ = lbt_format.o \
	ir2monitor.o \
	ir2det_monitor.o\
	trans_relabeler.o \
	ir_state_trans_counter.o \
	front_nondeterministic.o \
	front_det_assign_alphabetized_switch.o \
	front_det_assign_alphabetized_ifelse.o \
	back_nondeterministic.o \
	back_assign_alphabetized.o

VISITOR_DIR = ir_visitors


mm: 	$(OBJS) $(HDRS)
	$(CC) -o $@ $(OBJS) $(LIBS)

amit: 	amit.o automaton_tools.o monitor_params.o global_params.o conversions.o \
		$(VISITOR_OBJ:%=$(VISITOR_DIR)/%) \
		$(PARSER_OBJ:%=$(PARSER_DIR)/%) \
		intermediate_rep.o tostring_paren.o utils.o augment.o alphabetize.o \
		ap_extractor.o minimize.o
	$(CC) -o $@ $^ $(LIBS)

fe: 	formula_elaborator.o
	$(CC) -o $@  $<

ta:	test_augment.o augment.o global_params.o monitor_params.o 
	$(CC) -o $@ $^  $(LIBS)

te: 	utils.o tostring_paren.o test_extract.o sba2ir.o intermediate_rep.o \
		global_params.o monitor_params.o automaton_tools.o alphabetize.o \
		ap_extractor.o $(PARSER_OBJ:%=$(PARSER_DIR)/%) \
		$(VISITOR_OBJ:%=$(VISITOR_DIR)/%) \
		augment.o front_mon_gen.o minimize.o
	$(CC) -o $@ $^  $(LIBS)	

parser:	$(PARSER_OBJ)
	$(CC) -o $@ $(OBJS)

main.o: main.cc $(HDRS) Makefile

etags:
	find . -name "*.cc" | xargs etags
	find . -name "*.h" | xargs etags -a 
	find $(INCLUDE_DIRS) -name "*.cc" | xargs etags -a
	find $(INCLUDE_DIRS) -name "*.hh" | xargs etags -a 

check:
	@echo $(HDRS)



#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
#Standard Makefile stuff

.cpp.o:
	$(CC) $(CFLAGS) -c $< 

.c.o: 
	$(CC) $(CFLAGS) $(CPPFLAGS) -c $<

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




clean:	
	$(REMOVE)
	$(REMOVE_PARSER)
	$(REMOVE_VISITORS)

distclean: clean
	/bin/rm -f \#* addy

lint:
	lint *.c

REMOVE = /bin/rm -f *~ .*~ *.BAK .*.BAK *.o logfile mm

REMOVE_VISITORS = /bin/rm -f ir_visitors/*.o

REMOVE_PARSER = /bin/rm -f boolpar/*.o

#Standard Makefile stuff
#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
