PACKAGE=swig
DOC=swig
PKGCFLAGS=
SWIG=@SWIG@
LIBS=@LIBS@
JAVAC=@JAVAC@
JAR=@JAR@
include ../Makefile.defs
DEFS=@DEFS@ -D_YAP_NOT_INSTALLED_=1 -DDESTDIR=\"$(DESTDIR)\"
YAP_EXTRAS=@YAP_EXTRAS@
srcdir=@srcdir@
CPPFLAGS= -I../.. -I$(srcdir)/../../H -I$(srcdir)/../../include  -I$(srcdir)/../../os -I$(srcdir)/../../OPTYap -I$(srcdir)/../../BEAM -I$(srcdir)/../../CXX
CXXFLAGS=  $(YAP_EXTRAS) $(DEFS) $(CPPFLAGS)

YAP_SWIG_INTERFACE= $(srcdir)/yap.i \
	$(srcdir)/../../CXX/yapi.hh \
	$(srcdir)/../../CXX/yapa.hh \
	$(srcdir)/../../CXX/yapdb.hh \
	$(srcdir)/../../CXX/yapie.hh \
	$(srcdir)/../../CXX/yapq.hh \
	$(srcdir)/../../CXX/yapi.cpp

JNI_SQLITE="$(srcdir)/android/jni/sqlite"

JAVA_SQLITE="$(srcdir)/android/src/org"

SQLITE=$(JNI_SQLITE) $(JAVA_SQLITE)

PYTHON_PROGRAMS = $(srcdir)/python/demo.py

ANDROID_PROGRAMS=$(srcdir)/android/JavaYap.java  $(SQLITE)

PROGRAMS= $(PYTHON_PROGRAMS) $(JAVA_PROGRAMS) $(ANDROID_PROGRAMS)

YAP_EXPORT_DLLS="$(DESTDIR)$(SOLIBDIR)"

YAP_EXPORT_PLS="$(DESTDIR)$(PLLIBDIR)"

YAP_EXPORT_SAVED_STATE="../../startup.yss"

PYTHON_PROGRAMS = $(srcdir)/python/demo.py

ANDROID_PROGRAMS=$(srcdir)/android/JavaYap.java  $(SQLITE)

SWIG_FILES= \
	$(srcdir)/yap.i

all: python java R

python: $(SWIG_FILES) python/_yap.so python/yap.py
	cp $(srcdir)/python/demo.py python

python/_yap.so: python/yap_wrap.o
	$(CXX) -shared $(LDSOFLAGS) -o python/_yap.so python/yap_wrap.o ../../yapi.o $(LIBS) @PYTHON_LIBS@ -L ../.. -lYap -lpthread

python/yap_wrap.cpp python/yap.py: $(YAP_SWIG_INTERFACE)
	mkdir -p python
	$(SWIG) -c++ -python  -outdir python -o $@ $(CXXFLAGS) -Wall $<

python/yap_wrap.o:  python/yap_wrap.cpp
	$(CXX) -c  @SHLIB_CXXFLAGS@ $(CXXFLAGS) @PYTHON_INCLUDES@ $< -o $@

java: jni/libyap.@SO@ java/yap.java
	cd java ; $(JAVAC) *.java; $(JAR) cvf yap.jar *.class

jni/libyap.@SO@: jni/yap_wrap.o
	$(CXX) -shared $(LDSOFLAGS) -o $@ ../../yapi.o  $< $(LIBS) @JPLLDFLAGS@ -L ../.. -lYap -lpthread

jni/yap_wrap.cpp java/yap.java: $(YAP_SWIG_INTERFACE)
	$(SWIG) -c++ -java  -package pt.up.fc.dcc.yap -outdir java -o jni/yap_wrap.cpp $(CXXFLAGS) -Wall $<

jni/yap_wrap.o:  jni/yap_wrap.cpp
	$(CXX) -c  @SHLIB_CXXFLAGS@ $(CXXFLAGS) @JPLCFLAGS@  $< -o $@

# depends on make install on top-level
# also, should have an android device running, say
#   emulator -avd first &
#
# adb uninstall org.swig.simple  ( if not the first time )
# adb install bin/JavaYap-debug.apk
#
#
android:  JavaYap-debug.apk

JavaYap-debug.apk: android/libs/armeabi/libexample.so
	( cd android && ant debug )

android/libs/armeabi/libexample.so: android/jni/Android.mk android/jni/Application.mk android/jni/yap_wrap.cpp
	( cd android/jni && NDK_DEBUG=1 ndk-build )

android/jni/Application.mk: android/jni/Android.mk
	cp $(srcdir)/android/jni/Application.mk android/jni

android/jni/Android.mk: android/AndroidManifest.xml
	cp Android.mk android/jni
	cp $(srcdir)/android/JavaYap.java android/src/pt/up/fc/dcc/yap
	cp $(srcdir)/android/main.xml android/res/layout
	cp -r $(JNI_SQLITE) android/jni
	cp -r $(JAVA_SQLITE) android/src


android/AndroidManifest.xml: $(ANDROID_PKG)
	android create project --target $(ANDROID_TARGET) --name JavaYap --path ./android --activity JavaYap --package pt.up.fc.dcc.yap
	mkdir -p android/assets
	mkdir -p android/assets/share
	mkdir -p android/assets/share/Yap
	mkdir -p android/assets/lib
	mkdir -p android/assets/lib/Yap
	mkdir -p android/jni
	mkdir -p android/usr

android/jni/yap_wrap.cpp:  $(YAP_SWIG_INTERFACE) android/AndroidManifest.xml
	$(SWIG) -c++ -java -I$(srcdir)/../../CXX -package pt.up.fc.dcc.yap -outdir android/src/pt/up/fc/dcc/yap -o $@ $<

install-android: android
	adb install -r android/bin/JavaYap-debug.apk

R:


yap.i: $(srcdir)/../../../../include/YapInterface.h

install: all


clean:
	rm -fr android/libs/armeabi/libexample.so JavaYap-debug.apk android/jni/Application.mk \
	android/jni/Android.mk android/jni/yap_wrap.cpp python/_yap.so jni/yap_wrap.o \
	python/yap_wrap.cpp python/yap.py jni/yap_wrap.cpp java/yap.java

distclean: clean
	rm -f *def Makefile


##########