TEST_LDADD = \
	-lgtest -lgtest_main -lpthread \
	simplestitcher.a

CFLAGS = -Wall -Werror
#LDFLAGS = -static
OPTFLAGS = -O3 -fprofile-use
TEST_FLAGS = -g -O0
LDADD = -lhighgui -lcv

SRCS = \
	stitcher.cc

TESTS =

all: depend simplestitcher $(TESTS)

check: $(TESTS:%_test=%_test.stamp)

clean: .PHONY

.PHONY:
	rm -f *.o *.dep *.stamp simplestitcher simplestitcher.a $(TESTS)

depend: $(SRCS:%.cc=%.dep) $(TESTS:%_test=%_test.dep)

%.dep: %.cc
	gcc -MM $(CFLAGS) $*.cc > $*.dep

-include $(SRCS:%.cc=%.dep) $(TESTS:%_test=%_test.dep)

%.o: %.cc
	gcc -c $(CFLAGS) $(OPTFLAGS) $*.cc -o $*.o

simplestitcher.a: $(SRCS:%.cc=%.o)
	ar crs simplestitcher.a $(SRCS:%.cc=%.o)

simplestitcher: simplestitcher.a main.cc
	g++ $(CFLAGS) $(OPTFLAGS) -o simplestitcher main.cc simplestitcher.a $(LDFLAGS) $(LDADD)
#	strip -s simplestitcher

%_test.dep: %_test.cc simplestitcher.a
	g++ -MM $(CFLAGS) $(TEST_FLAGS) $*_test.cc > $*_test.dep

%_test: %_test.cc simplestitcher.a
	g++ $(CFLAGS) $(TEST_FLAGS) -o $*_test $*_test.cc $(TEST_LDADD) $(LDADD)

%_test.stamp: %_test
	./$*_test
	touch $*_test.stamp
