include ../makefile.in
include config.h

CFLAGS=-Wall -pedantic -ggdb $(VOL_INCLUDE) -DDATE=\"$(DATE)\" -DVERSION=\"$(VERSION)\"
LIB=-lstdc++ $(VOL_LPATH) -lvol -lm $(LEX_LIB)


DRAWOBJ=obj/draw-main.o obj/desc.o
GENOBJ=obj/gen-main.o
COMMONOBJ=obj/cube.o obj/ellipsoid.o obj/catenoid.o obj/figure.o obj/surface.o obj/sphere.o obj/rounded-cube.o 

INC=figure.h catenoid.h surface.h ellipsoid.h sphere.h rounded-cube.h 

all : obj $(MAKE_VOLDRAW) volgen $(MAKEDOC) check

obj : 
	mkdir -p obj
	
voldraw : $(COMMONOBJ) $(DRAWOBJ)
	$(CC) -o $@ $(DRAWOBJ) $(COMMONOBJ) $(LIB) 
volgen : $(COMMONOBJ) $(GENOBJ)
	$(CC) -o $@ $(GENOBJ) $(COMMONOBJ) $(LIB)

obj/desc.o : obj/syntax-desc.cc obj/lex-desc.c $(INC)
	@echo $(CC) -c obj/syntax-desc.cc -o $@ $(CFLAGS) -I. $(BISON_HACK)
	@$(CC) -c obj/syntax-desc.cc -o $@ $(CFLAGS) -I. $(BISON_HACK) || \
	if [ -z "$(BISON_HACK)" ] ; \
	then \
		echo "   *****************************************************" >&2 ;\
		echo "   * ERROR :                                           *" >&2 ;\
		echo "   * Can't compile bison generated c++ file.           *" >&2 ;\
		echo "   * Retry with option --bison-hack (configure script) *" >&2 ;\
		echo "   *****************************************************" >&2 ;\
		exit 1;\
	fi
	
obj/syntax-desc.cc : desc.yacc obj/lex-desc.c desc.h
	$(YACC) desc.yacc && mv y.tab.c $@

obj/lex-desc.c : desc.lex 
	$(LEX) $< && mv lex.yy.c $@

obj/%.o : %.cc $(INC)
	$(CC) -c $< $(CFLAGS) -o $@

test : voldraw
	./voldraw -o output/1.vol < testfile 
	volboundary -i output/1.vol -v > output/1lite.vol && mv output/1lite.vol output/1.vol
	vol2geom output/1

clean :
	rm -f voldraw volgen vcfilt obj/*
	rm -rf doc

again : clean all

doc : 
	doxygen || true

check :
	@echo
	@echo "To do and fix-me :"
	@echo "------------------"
	@grep -E -n '(TODO|FIXME)' *.lex *.yacc *.cc *.h | sed 's/\([^:]*\):\([^:]*\).*\/\/*\(.*\)$$/\1 "\2" "\3"/' | xargs printf '%15s\t%4s\t%s\n' FILE LINE COMMENT 
	@echo
