ifeq ($(OS), Windows_NT)
	LIBS=-largtable2 -lm
	CXXFLAGS=-g -ggdb -I.
	RM=del
else
	LIBS= `pkg-config --libs eigen3` -lm -largtable2
	CXXFLAGS= -fPIC `pkg-config --cflags eigen3` -I. -O3 -Wall -pedantic -std=c++11
	#CXXFLAGS= -fPIC `pkg-config --cflags eigen3` -g -ggdb -I. -Wall -W -lm -std=c++11
	RM=rm -f
	DEMOFLAGS= -lGL -lGLEW `sdl-config --cflags --libs`
	#-Wall -pedantic -W
endif
SRCS = $(wildcard src/*.h) $(wildcard src/util/*.cpp) $(wildcard src/util/*.h) $(wildcard src/*.cpp) $(wildcard src/*.c)

ARM_FLAGS=-march=armv6 -marm -mfloat-abi=softfp -mfpu=vfp

FW_DEPS_LIBS=`pkg-config --libs libdc1394-2`
FW_DEPS_CFLAGS=`pkg-config --cflags libdc1394-2` -DHAVE_FIREWIRE_LIB

CV_DEPS_LIBS=`pkg-config --libs opencv`
CV_DEPS_CFLAGS=`pkg-config --cflags opencv` -DUMF_USE_OPENCV

bins: bin/libumf.so bin/libumf.a bin/detect

all: depend all-cv-fw
all-win: all-cv-fw

all-cv: bins

all-wcv: bins

all-cv-fw: bins


#ifeq ($(OS), Windows_NT)
#all-cv: LIBS+=-lopencv_calib3d220d -lopencv_contrib220d -lopencv_core220d -lopencv_features2d220d -lopencv_ffmpeg220d -lopencv_flann220d -lopencv_gpu220d -lopencv_highgui220d -lopencv_imgproc220d -lopencv_legacy220d -lopencv_ml220d -lopencv_objdetect220d -lopencv_ts220d -lopencv_video220d
#all-cv: CXXFLAGS+=-I. -I$(PREFIX)OpenCV/opencv -DUMF_USE_OPENCV
#else 
all-cv: LIBS+=$(CV_DEPS_LIBS)
all-cv:	CXXFLAGS+=$(CV_DEPS_CFLAGS)
#endif

all-cv-fw: LIBS+= $(CV_DEPS_LIBS) $(FW_DEPS_LIBS)
all-cv-fw: CXXFLAGS+= $(CV_DEPS_CFLAGS) $(FW_DEPS_CFLAGS)
 

depend: $(SRCS)
	$(CXX) -std=c++0x -MM $^ | sed 's/^\(.*\).o: \([^/]*\/\)\1/\2\1.o: \2\1/g' > ./.depend
	
include .depend


.PHONY: all-cv


#%.o: %.cpp
#	g++ -c $(CXXFLAGS) $^
#
#%.o: %.c
#	gcc -c $(CXXFLAGS) $^

LIB_OBJECTS=src/util/stream_factory.o src/util/opencv_factory.o src/util/firewire_factory.o\
src/util/image.o src/util/draw.o src/util/umfdebug.o src/util/grid_util.o src/util/corner_detector.o\
src/util/epnp.o src/util/distort.o src/util/chromakey.o\
src/util/pnp_solver.o src/util/pnp_solver_epnp.o src/util/pnp_solver_opencv.o\
src/util/mask_tracker.o src/util/orientation_filter.o \
src/decisiontree.o src/edge_dir_detector.o src/edgel_detector.o src/grid_detector.o src/model.o \
src/umf.o src/marker.o

bin/libumf.so: $(LIB_OBJECTS)
	$(CXX) -shared -o $@ $^

bin/libumf.a: $(LIB_OBJECTS)
	ar rcs $@ $^

bin/detect: src/main.o bin/libumf.a
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS)

clean:
	$(RM) src/*.o src/*~ src/util/*~ src/*.gch bin/*.so bin/*.a src/util/*.o
