
#LIBS = -L/usr/lib -L/usr/local/lib -lopencv -lhighgui -lfftw3 -lm -lstdc++ -lc

# where OpenCV & fftw3 sources might be
CXXFLAGS += -I/usr/local/include

# whether to try polar transformation
#CXXFLAGS += -DPOLAR

# doesn't work nicely, because it would give
# -I/usr/local/include/opencv - one level too much
# to use #include <> instead of #include ""
#CXXFLAGS += `opencv-config --cxxflags`

# in ../external are copies of fftw3 headers, so you
# can make this while having only a binary package
# of fftw, but not the "-dev" version
CXXFLAGS += -I../external

# Debugversion:
#CXXFLAGS += -DDEBUG -Wall -g

# Profiling:
#CXXFLAGS += -pg
#LDFLAGS += -pg

# Optimierte Version:
CXXFLAGS += -O3
LDFLAGS += -s -S -O3

# object files for dynamic libraries need to be compiled
# with this switch
CXXFLAGS += -fPIC

###########################################
# hopefully no user servicable code below #
###########################################

srcs = fftwext.cpp image.cpp polarline.cpp opencvext.cpp \
 micro.cpp microadam.cpp microeva.cpp \
 controller.cpp \
 recognition/videodevice.cpp \
 recognition/recognition.cpp \
 recognition/imagefile.cpp \
 recognition/canny.cpp \
 recognition/correlation.cpp \
 recognition/searchanglesadam.cpp \
 recognition/searchradius.cpp \
 recognition/gray.cpp \
 recognition/findleds.cpp \
 recognition/hsvrange.cpp \
 recognition/polar.cpp \
 output/output.cpp \
 output/canny.cpp \
 output/correlation.cpp \
 output/einzeichnen.cpp \
 output/preview.cpp \
 output/searchradius.cpp \
 output/graph.cpp \
 output/log.cpp \
 output/imageoutput.cpp \
 output/findleds.cpp \
 output/hsvcolorchooser.cpp \
 output/homeo2serial.cpp

objs = $(addsuffix .o, $(basename $(srcs)))
hdrs = $(addsuffix .h, $(basename $(srcs)))

# make dependency files
recognition/%.d: recognition/%.cpp
	$(CXX) -MM $(CXXFLAGS) $< > $@.$$$$; \
	sed 's,\($*\)\.o[ :]*,recognition/\1.o $@ : ,g' < $@.$$$$ > $@; \
	rm -f $@.$$$$

output/%.d: output/%.cpp
	$(CXX) -MM $(CXXFLAGS) $< > $@.$$$$; \
	sed 's,\($*\)\.o[ :]*,output/\1.o $@ : ,g' < $@.$$$$ > $@; \
	rm -f $@.$$$$

%.d: %.cpp
	$(CXX) -MM $(CXXFLAGS) $< > $@.$$$$; \
	sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
	rm -f $@.$$$$

libseemicro: libseemicro.so

libseemicro.a: $(objs)
	$(LD) -Ur -t -static $(objs) $(LIBS) -o libseemicro.a

libseemicro.so: $(objs)
	# Rene: Warum CC statt LD?
	$(CC) -shared $(objs) $(LIBS) -o libseemicro.so

doc:
	doxygen

clean:
	-rm -f *.o libseemicro.so libseemicro.a *.d
	-rm -f recognition/*.o recognition/*.d
	-rm -f output/*.o output/*.d
	-rm doc/html/*

.PHONY: clean libseemicro depend

depend: $(srcs:.cpp=.d)

include $(srcs:.cpp=.d)
