JVMPATH=/usr/lib/jvm/java-6-openjdk

CXX=g++
CFLAGS=-O1 -g#-Wall
SO_FLAGS=--shared -fPIC
INCLUDE=-I/usr/include -I/usr/local/include/OpenNI -I.
JVMINCLUDE=-I$(JVMPATH)/include
JAVAC=javac
JFLAGS=

LIB_DIRS=-L/usr/lib -L/usr/local/lib64
LFLAGS=$(LIB_DIRS) -lOpenNI -lXnVFeatures -lXnVHandGenerator
TESTLFLAGS=$(LIB_DIRS) -lglut
LIBFREENECTSYNC=-L/usr/local/lib -lfreenect_sync

all: test libHandTracker.so

HandTracker.class: HandTracker.java Point3D.java
	$(JAVAC) $(JFLAGS) HandTracker.java Point3D.java

HandTracker.h: HandTracker.class
	javah -jni HandTracker

libHandTracker.so: GestureRecognizer.o HandTracker.class HandTracker.h HandTracker.cpp Makefile
	$(CXX) $(SO_FLAGS) $(JVMINCLUDE) $(INCLUDE) -o libHandTracker.so HandTracker.cpp GestureRecognizer.o $(LFLAGS)

test: Makefile GestureRecognizer.o SceneDrawerMain.o SceneDrawer.o
	$(CXX) -o test GestureRecognizer.o SceneDrawerMain.o SceneDrawer.o $(LFLAGS) $(TESTLFLAGS)

SceneDrawer.o: SceneDrawer.h SceneDrawer.cpp
	$(CXX) $(CFLAGS) -c SceneDrawer.cpp $(INCLUDE)

SceneDrawerMain.o: SceneDrawer.h SceneDrawerMain.cpp
	$(CXX) $(CFLAGS) -c SceneDrawerMain.cpp $(INCLUDE)

GestureRecognizer.o: GestureRecognizer.h GestureRecognizer.cpp
	$(CXX) $(CFLAGS) -fPIC -c GestureRecognizer.cpp $(INCLUDE)

clean:
	rm -f *.o *.so *.class test

