diff options
Diffstat (limited to 'platform')
-rw-r--r-- | platform/android/Makefile | 4 | ||||
-rw-r--r-- | platform/android/build.xml | 18 | ||||
-rw-r--r-- | platform/android/jni/Android.mk | 10 | ||||
-rw-r--r-- | platform/android/jni/mupdf.c | 4 | ||||
-rw-r--r-- | platform/android/src/com/artifex/mupdfdemo/MuPDFCore.java | 2 | ||||
-rw-r--r-- | platform/java/Makefile | 51 | ||||
-rw-r--r-- | platform/java/Makejar | 3 |
7 files changed, 85 insertions, 7 deletions
diff --git a/platform/android/Makefile b/platform/android/Makefile new file mode 100644 index 00000000..68c8d5b3 --- /dev/null +++ b/platform/android/Makefile @@ -0,0 +1,4 @@ +default: + $(MAKE) -C ../java -f Makejar + ndk-build + ant debug diff --git a/platform/android/build.xml b/platform/android/build.xml index 7cb2cdf8..1d6e5f10 100644 --- a/platform/android/build.xml +++ b/platform/android/build.xml @@ -39,6 +39,24 @@ application and should be checked into Version Control Systems. --> <loadproperties srcFile="project.properties" /> + <!-- This somewhat bulky and unpleasant piece of code is lifted + from stackoverflow, and serves to add the + platform/java/libmupdf.jar file to the produced .apk --> + <target name="-pre-compile"> + + <echo>ORIGINAL jars.path : ${toString:project.all.jars.path}</echo> + <path id="project.all.jars.path.hacked"> + <path path="${toString:project.all.jars.path}"/> + <path path="../java/libmupdf.jar"/> + </path> + + <path id="project.all.jars.path"> + <path path="${toString:project.all.jars.path.hacked}"/> + </path> + <echo>HACKED jars.path : ${toString:project.all.jars.path}</echo> + + </target> + <!-- quick check on sdk.dir --> <fail message="sdk.dir is missing. Make sure to generate local.properties using 'android update project'" diff --git a/platform/android/jni/Android.mk b/platform/android/jni/Android.mk index 5c0b2294..f9be3dde 100644 --- a/platform/android/jni/Android.mk +++ b/platform/android/jni/Android.mk @@ -16,10 +16,12 @@ LOCAL_C_INCLUDES := \ jni/andprof \ $(MUPDF_ROOT)/include \ $(MUPDF_ROOT)/source/fitz \ - $(MUPDF_ROOT)/source/pdf -LOCAL_CFLAGS := -LOCAL_MODULE := mupdf -LOCAL_SRC_FILES := mupdf.c mupdf_native.c + $(MUPDF_ROOT)/source/pdf \ + $(MUPDF_ROOT)/platform/java +LOCAL_CFLAGS := -DHAVE_ANDROID +LOCAL_MODULE := mupdf_java +LOCAL_SRC_FILES := mupdf.c \ + $(MUPDF_ROOT)/java/mupdf_native.c LOCAL_STATIC_LIBRARIES := mupdfcore mupdfthirdparty ifdef NDK_PROFILER LOCAL_CFLAGS += -pg -DNDK_PROFILER diff --git a/platform/android/jni/mupdf.c b/platform/android/jni/mupdf.c index aaade4e0..bc23b9ca 100644 --- a/platform/android/jni/mupdf.c +++ b/platform/android/jni/mupdf.c @@ -290,7 +290,7 @@ JNI_FN(MuPDFCore_openFile)(JNIEnv * env, jobject thiz, jstring jfilename) jclass clazz; #ifdef NDK_PROFILER - monstartup("libmupdf.so"); + monstartup("libmupdf_java.so"); #endif clazz = (*env)->GetObjectClass(env, thiz); @@ -440,7 +440,7 @@ JNI_FN(MuPDFCore_openBuffer)(JNIEnv * env, jobject thiz, jstring jmagic) const char *magic; #ifdef NDK_PROFILER - monstartup("libmupdf.so"); + monstartup("libmupdf_java.so"); #endif clazz = (*env)->GetObjectClass(env, thiz); diff --git a/platform/android/src/com/artifex/mupdfdemo/MuPDFCore.java b/platform/android/src/com/artifex/mupdfdemo/MuPDFCore.java index da3c20cd..80174416 100644 --- a/platform/android/src/com/artifex/mupdfdemo/MuPDFCore.java +++ b/platform/android/src/com/artifex/mupdfdemo/MuPDFCore.java @@ -12,7 +12,7 @@ public class MuPDFCore private static boolean gs_so_available = false; static { System.out.println("Loading dll"); - System.loadLibrary("mupdf"); + System.loadLibrary("mupdf_java"); System.out.println("Loaded dll"); if (gprfSupportedInternal()) { diff --git a/platform/java/Makefile b/platform/java/Makefile new file mode 100644 index 00000000..de7312b2 --- /dev/null +++ b/platform/java/Makefile @@ -0,0 +1,51 @@ +default: libmupdf_java.so libmupdf.jar + +MUPDF_CORE = ../../build/java/libmupdf.a ../../build/java/libmupdfthird.a + +LIBRARY_JAVA_SOURCES := $(sort $(wildcard com/artifex/mupdf/fitz/*.java)) +LIBRARY_JAVA_OBJECTS := $(LIBRARY_JAVA_SOURCES:%.java=%.class) +LIBRARY_JAVA_CLASSES := $(subst com/artifex/mupdf/fitz/,com.artifex.mupdf.fitz.,$(LIBRARY_JAVA_SOURCES:%.java=%)) + +VIEWER_JAVA_SOURCES := $(sort $(wildcard *.java)) +VIEWER_JAVA_OBJECTS := $(VIEWER_JAVA_SOURCES:%.java=%.class) + +$(MUPDF_CORE) : + $(MAKE) -C ../.. OUT=build/java XCFLAGS=-fPIC build=release libs + +$(LIBRARY_JAVA_OBJECTS) : $(LIBRARY_JAVA_SOURCES) + javac $^ + +libmupdf.jar : $(LIBRARY_JAVA_OBJECTS) + rm -f $@ + jar cf $@ $^ + +mupdf_native.h : $(LIBRARY_JAVA_OBJECTS) + rm -f $@ + javah -o $@ $(LIBRARY_JAVA_CLASSES) + +mupdf_native.o : mupdf_native.c mupdf_native.h + $(CC) -g -fPIC -Wall -Wextra -Wno-unused-parameter \ + -I /usr/lib/jvm/java-7-openjdk-amd64/include \ + -I /usr/lib/jvm/java-7-openjdk-amd64/include/linux \ + -I ../../include \ + -o $@ -c $< + +libmupdf_java.so : mupdf_native.o $(MUPDF_CORE) + $(CC) -shared -o $@ $^ -lcrypto + +$(VIEWER_JAVA_OBJECTS) : $(VIEWER_JAVA_SOURCES) + javac $^ + +viewer: libmupdf_java.so $(LIBRARY_JAVA_OBJECTS) $(VIEWER_JAVA_OBJECTS) + LD_LIBRARY_PATH=. java Viewer + +clean: + rm -f com/artifex/mupdf/fitz/*.class + rm -f *.class + rm -f mupdf_native.o + rm -f libmupdf_java.so + +nuke: clean + $(MAKE) -C ../.. OUT=build/java clean + +.NOTPARALLEL : # disable -j option (it breaks since javac compiles all class files in one command) diff --git a/platform/java/Makejar b/platform/java/Makejar new file mode 100644 index 00000000..7ab3e40f --- /dev/null +++ b/platform/java/Makejar @@ -0,0 +1,3 @@ +default: + javac com/artifex/mupdf/fitz/*.java + jar cf libmupdf.jar com/artifex/mupdf/fitz/*.class |