summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2016-02-22 15:04:38 +0100
committerTor Andersson <tor.andersson@artifex.com>2016-02-29 16:03:34 +0100
commite1716629fd92f4580e6b213dc7be54b4935f09f9 (patch)
treeeeb43d8a1ae2cc8fddd09c058c3c415b41a7ca19
parente45a2f494d0a4f7e11c544d2098b0f5d1d199e58 (diff)
downloadmupdf-e1716629fd92f4580e6b213dc7be54b4935f09f9.tar.xz
jni: Update build files for moved java sources.
-rw-r--r--.gitattributes1
-rw-r--r--.gitignore4
-rw-r--r--Makefile3
-rw-r--r--platform/android/Makefile4
-rw-r--r--platform/android/build.xml18
-rw-r--r--platform/android/jni/Android.mk10
-rw-r--r--platform/android/jni/mupdf.c4
-rw-r--r--platform/android/src/com/artifex/mupdfdemo/MuPDFCore.java2
-rw-r--r--platform/java/Makefile51
-rw-r--r--platform/java/Makejar3
10 files changed, 93 insertions, 7 deletions
diff --git a/.gitattributes b/.gitattributes
index d48981b1..6f8a365f 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -9,6 +9,7 @@ Make* tabs
*.[chm] tabs
*.java tabs
*.xml tabs
+build.xml spaces
memento.* spaces
*.vcxproj* spaces
jmem* spaces
diff --git a/.gitignore b/.gitignore
index 2cfbd4b8..84b1b34f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,10 @@ build
DerivedData
generated
cscope.*
+*.class
+*.jar
+*.o
+*.so
*.epub
*.pdf
*.pnm
diff --git a/Makefile b/Makefile
index ee84fb34..49965e2f 100644
--- a/Makefile
+++ b/Makefile
@@ -356,6 +356,9 @@ tarball:
# --- Clean and Default ---
+java:
+ $(MAKE) -C platform/java
+
tags: $(shell find include source platform -name '*.[ch]')
ctags $^
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