#ARCH = Windows
ARCH = $(shell uname)
####### Compiler, tools and options 

CC       = gcc
CXX      = g++
LINK     = g++

ifneq ($(ARCH), Linux)
#ifeq ($(ARCH), Windows)

  CFLAGS   =  -mno-cygwin -pipe -Wall -O3
  CXXFLAGS =  -O2 -gdwarf-2 -Wall -mmmx -msse -msse2 -march=pentium4 -mno-cygwin -fomit-frame-pointer `sdl-config --cflags`

  #INCPATH  =  -I../imagesegment -I../opencv/include -I. -I/cygdrive/c/j2sdk1.4.2_09/include -I/cygdrive/c/j2sdk1.4.2_09/include/win32 -I../agg23/include -I../TNT -I../nasal++ -I../libsvm `freetype-config --cflags` -I../ttl/include -I../libdecodeqr
  INCPATH  =  -I../imagesegment -I../opencv/include -I. -I/cygdrive/c/Program\ Files/Java/jdk1.5.0_12/include -I/cygdrive/c/Program\ Files/Java/jdk1.5.0_12/include/win32 -I../agg23/include -I../TNT -I../nasal++ -I../libsvm `freetype-config --cflags` -I../ttl/include -I../libdecodeqr

  LFLAGS   =  -O2 -mno-cygwin -L../opencv/lib -L../ttl/lib -L.

  LIBS     =  cxcore100.dll cv100.dll highgui100.dll `sdl-config --libs` XpGateLib.lib MFeP2LIB.lib PGRFlyCapture.lib ../nasal++/nasal++.dll agg.dll
  PLUGIN_LIBS = cxcore100.dll cv100.dll highgui100.dll ../nasal++/nasal++.dll agg.dll display.dll ../libsvm/svm++.dll libdecodeqr.dll

  SUF = dll
  CAPTURE_SRCS = mfep1.cc mfep2.cc pgr.cc flea1.cc fireflymv.cc cvcam.cc

else
  #Linux
  CFLAGS   =  -pipe -Wall -O2 -g
  CXXFLAGS =  -O2 -g -Wall -mmmx -msse -msse2 -march=pentium4 -fomit-frame-pointer `sdl-config --cflags` `pkg-config --cflags opencv`

  INCPATH  = -I../BoK -Ithird_party/TNT -Ithird_party/nasal++ -Ithird_party/agg23/include
  LFLAGS   = -O3 

  LIBS     =  -lcxcore -lcv -lcvaux `sdl-config --libs`


endif


####### Files

HEADERS	= 
SOURCES	= PlateDetector.cpp depth.cpp image.cpp segment.cpp \
	PlateDetector2.cpp dirread-linux.cpp imagedisplay.cpp utf8.cpp \
	imagedrawer.cpp vision.cpp cvcam.cpp \
	hough.cpp pgr-linux.cpp

OBJECTS	= $(SOURCES:.cpp=.o)


ifneq ($(ARCH), Linux)
  #Windows
  TARGET  = 
else
  #Linux
  TARGET  = EllipseDetection.a main
endif

####### Implicit rules

.SUFFIXES: .c .cpp .cc .cxx .C .h .moc .java

.cpp.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cc.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cxx.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.C.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

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

.java.class:
	gcj -C $<

####### Build rules

all: $(TARGET)


#depth: depth.o image.o 
#	$(LINK) -mno-cygwin $(LFLAGS) -o $@ $^

EllipseDetection.a: experiment.o $(OBJECTS) third_party/nasal++/nasal.a third_party/agg23/src/libagg.a
	ar rv $@ $^
	#$(LINK) $(LFLAGS) -o $@ $^ $(LIBS)

third_party/nasal++/nasal.a:
	make -C third_party/nasal++

third_party/agg23/src/libagg.a:
	make -C third_party/agg23



csave: csave.o $(OBJECTS)
	$(LINK) $(LFLAGS) -o $@ $^ $(LIBS) ../BoK/BoK.a third_party/nasal++/nasal.a third_party/agg23/src/libagg.a  `pkg-config --libs opencv` `sdl-config --libs` 

main: main.o $(OBJECTS)
	$(LINK) $(LFLAGS) -o $@ $^ $(LIBS) ../BoK/BoK.a third_party/nasal++/nasal.a third_party/agg23/src/libagg.a  `pkg-config --libs opencv` `sdl-config --libs` -ldc1394_control


#%: %.cc
#
#%: %.o
#	$(LINK) $(LFLAGS) -o $@ $^ $(LIBPATH) $(LIBS)

.depend: $(SOURCES) $(HEADERS)
	$(CXX) $(CXXFLAGS) $(INCPATH) -MM -MG $^ > $@

.depend_capture: $(CAPTURE_SRCS)
	$(CXX) $(CXXFLAGS) $(INCPATH) -MM -MG $^ > $@

.depend_plugins: $(PLUGIN_SRCS)
	$(CXX) $(CXXFLAGS) $(INCPATH) -MM -MG $^ > $@

clean:
	rm -f $(OBJECTS) $(TARGET) .depend .depend_capture .depend_plugins
	rm -f *~ core *.o *.core *.moc imgprocess_wrap.cc


####### Sub-libraries

distclean: clean
	rm -f $(TARGET)

FORCE:

####### Compile

include .depend



