diff options
author | Sebastian Rasmussen <sebras@gmail.com> | 2017-01-18 02:58:10 +0100 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2017-01-23 13:57:04 +0100 |
commit | 13788c56859fcd8a8e4999d7553a0864c0176a10 (patch) | |
tree | 723d934bb4fde202f3b4513eb3b8d3dd5960c21e /platform/java | |
parent | ad6807ba2a3fbd1c276ad5797a27ec771aeaf59b (diff) | |
download | mupdf-13788c56859fcd8a8e4999d7553a0864c0176a10.tar.xz |
android: Add ndk-build makefile to build JNI library for android viewers.
Run 'make android' to invoke ndk-build with the proper arguments.
The results are placed in build/android.
Diffstat (limited to 'platform/java')
-rw-r--r-- | platform/java/Android.mk | 276 | ||||
-rw-r--r-- | platform/java/mupdf_native.c | 1 | ||||
-rw-r--r-- | platform/java/src/com/artifex/mupdf/fitz/Context.java | 6 | ||||
-rw-r--r-- | platform/java/winmake.bat | 2 |
4 files changed, 280 insertions, 5 deletions
diff --git a/platform/java/Android.mk b/platform/java/Android.mk new file mode 100644 index 00000000..83cff536 --- /dev/null +++ b/platform/java/Android.mk @@ -0,0 +1,276 @@ +# Android makefile to be used with ndk-build. +# +# Run ndk-build with the following arguments: +# APP_BUILD_SCRIPT=platform/java/Android.mk (this file) +# APP_PROJECT_DIR=build/android (where you want the output) +# APP_PLATFORM=android-16 +# APP_OPTIM=release (or debug) +# APP_ABI=all (or armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, mips, mips64) +# +# The top-level Makefile will invoke ndk-build with appropriate arguments +# if you run 'make android'. +# +# LOCAL_C_INCLUDES paths are relative to the NDK root directory. +# LOCAL_SRC_FILES paths are relative to LOCAL_PATH. +# +# We make sure to use absolute paths everywhere, so this makefile works +# regardless of where it is called from. + +LOCAL_PATH := $(call my-dir) +MUPDF_PATH := $(realpath $(LOCAL_PATH)/../..) + +# --- Include pre-built ghostscript library if building with gproof support --- + +ifdef FZ_ENABLE_GPRF +include $(CLEAR_VARS) +LOCAL_MODULE := gsso +LOCAL_SRC_FILES := libgs.so +include $(PREBUILT_SHARED_LIBRARY) +endif + +# --- Build a local static library for core mupdf --- + +include $(CLEAR_VARS) + +LOCAL_MODULE := mupdf_core + +ifdef FZ_ENABLE_GPRF +LOCAL_CFLAGS += -DFZ_ENABLE_GPRF +endif + +LOCAL_C_INCLUDES := \ + $(MUPDF_PATH)/include \ + $(MUPDF_PATH)/generated \ + $(MUPDF_PATH)/scripts/freetype \ + $(MUPDF_PATH)/scripts/jpeg \ + $(MUPDF_PATH)/thirdparty/freetype/include \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src \ + $(MUPDF_PATH)/thirdparty/jbig2dec \ + $(MUPDF_PATH)/thirdparty/jpeg \ + $(MUPDF_PATH)/thirdparty/mujs \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2 \ + $(MUPDF_PATH)/thirdparty/zlib \ + +LOCAL_CFLAGS := \ + -ffunction-sections -fdata-sections \ + -DAA_BITS=8 \ + +LOCAL_SRC_FILES += \ + $(wildcard $(MUPDF_PATH)/source/fitz/*.c) \ + $(wildcard $(MUPDF_PATH)/source/pdf/*.c) \ + $(wildcard $(MUPDF_PATH)/source/xps/*.c) \ + $(wildcard $(MUPDF_PATH)/source/svg/*.c) \ + $(wildcard $(MUPDF_PATH)/source/cbz/*.c) \ + $(wildcard $(MUPDF_PATH)/source/gprf/*.c) \ + $(wildcard $(MUPDF_PATH)/source/html/*.c) \ + $(wildcard $(MUPDF_PATH)/generated/*.c) \ + +include $(BUILD_STATIC_LIBRARY) + +# --- Build a local static library for thirdparty libraries --- + +include $(CLEAR_VARS) + +LOCAL_MODULE := mupdf_thirdparty + +LOCAL_CPP_EXTENSION := .cc + +LOCAL_C_INCLUDES := \ + $(MUPDF_PATH)/include \ + $(MUPDF_PATH)/scripts/freetype \ + $(MUPDF_PATH)/scripts/jpeg \ + $(MUPDF_PATH)/thirdparty/freetype/include \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src \ + $(MUPDF_PATH)/thirdparty/jbig2dec \ + $(MUPDF_PATH)/thirdparty/jpeg \ + $(MUPDF_PATH)/thirdparty/mujs \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2 \ + $(MUPDF_PATH)/thirdparty/zlib \ + +LOCAL_CFLAGS := \ + -ffunction-sections -fdata-sections \ + -DFT2_BUILD_LIBRARY -DDARWIN_NO_CARBON \ + '-DFT_CONFIG_MODULES_H="slimftmodules.h"' \ + '-DFT_CONFIG_OPTIONS_H="slimftoptions.h"' \ + -DHAVE_STDINT_H \ + -DOPJ_STATIC -DOPJ_HAVE_INTTYPES_H -DOPJ_HAVE_STDINT_H -DUSE_JPIP \ + +LOCAL_CPPFLAGS := \ + -ffunction-sections -fdata-sections \ + -fno-rtti -fno-exceptions -fvisibility-inlines-hidden --std=c++0x \ + -DHAVE_OT -DHAVE_UCDN -DHB_NO_MT \ + -Dhb_malloc_impl=hb_malloc \ + -Dhb_calloc_impl=hb_calloc \ + -Dhb_realloc_impl=hb_realloc \ + -Dhb_free_impl=hb_free \ + +LOCAL_SRC_FILES += \ + $(MUPDF_PATH)/thirdparty/freetype/src/base/ftbase.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/base/ftbbox.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/base/ftbitmap.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/base/ftfntfmt.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/base/ftgasp.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/base/ftglyph.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/base/ftinit.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/base/ftstroke.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/base/ftsynth.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/base/ftsystem.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/base/fttype1.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/cff/cff.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/cid/type1cid.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/psaux/psaux.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/pshinter/pshinter.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/psnames/psnames.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/raster/raster.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/sfnt/sfnt.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/smooth/smooth.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/truetype/truetype.c \ + $(MUPDF_PATH)/thirdparty/freetype/src/type1/type1.c \ + +LOCAL_SRC_FILES += \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-blob.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-buffer-serialize.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-buffer.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-common.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-face.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-fallback-shape.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-font.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ft.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-font.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-layout.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-map.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-shape-complex-arabic.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-shape-complex-default.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-shape-complex-hangul.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-shape-complex-hebrew.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-shape-complex-indic-table.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-shape-complex-indic.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-shape-complex-myanmar.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-shape-complex-thai.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-shape-complex-tibetan.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-shape-complex-use-table.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-shape-complex-use.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-shape-fallback.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-shape-normalize.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-shape.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ot-tag.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-set.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-shape-plan.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-shape.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-shaper.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-ucdn.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-unicode.cc \ + $(MUPDF_PATH)/thirdparty/harfbuzz/src/hb-warning.cc \ + +LOCAL_SRC_FILES += \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2.c \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2_arith.c \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2_arith_iaid.c \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2_arith_int.c \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2_generic.c \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2_halftone.c \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2_huffman.c \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2_image.c \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2_metadata.c \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2_mmr.c \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2_page.c \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2_refinement.c \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2_segment.c \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2_symbol_dict.c \ + $(MUPDF_PATH)/thirdparty/jbig2dec/jbig2_text.c \ + +LOCAL_SRC_FILES += \ + $(MUPDF_PATH)/thirdparty/jpeg/jaricom.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jcomapi.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdapimin.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdapistd.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdarith.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdatadst.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdatasrc.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdcoefct.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdcolor.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jddctmgr.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdhuff.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdinput.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdmainct.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdmarker.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdmaster.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdmerge.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdpostct.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdsample.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jdtrans.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jerror.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jfdctflt.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jfdctfst.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jfdctint.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jidctflt.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jidctfst.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jidctint.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jmemmgr.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jquant1.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jquant2.c \ + $(MUPDF_PATH)/thirdparty/jpeg/jutils.c \ + +LOCAL_SRC_FILES += \ + $(MUPDF_PATH)/thirdparty/mujs/one.c \ + +LOCAL_SRC_FILES += \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/bio.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/cidx_manager.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/cio.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/dwt.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/event.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/function_list.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/image.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/invert.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/j2k.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/jp2.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/mct.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/mqc.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/openjpeg.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/phix_manager.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/pi.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/ppix_manager.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/raw.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/t1.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/t2.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/tcd.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/tgt.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/thix_manager.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/thread.c \ + $(MUPDF_PATH)/thirdparty/openjpeg/src/lib/openjp2/tpix_manager.c \ + +LOCAL_SRC_FILES += \ + $(MUPDF_PATH)/thirdparty/zlib/adler32.c \ + $(MUPDF_PATH)/thirdparty/zlib/compress.c \ + $(MUPDF_PATH)/thirdparty/zlib/crc32.c \ + $(MUPDF_PATH)/thirdparty/zlib/deflate.c \ + $(MUPDF_PATH)/thirdparty/zlib/inffast.c \ + $(MUPDF_PATH)/thirdparty/zlib/inflate.c \ + $(MUPDF_PATH)/thirdparty/zlib/inftrees.c \ + $(MUPDF_PATH)/thirdparty/zlib/trees.c \ + $(MUPDF_PATH)/thirdparty/zlib/uncompr.c \ + $(MUPDF_PATH)/thirdparty/zlib/zutil.c \ + +include $(BUILD_STATIC_LIBRARY) + +# --- Build the final JNI shared library --- + +include $(CLEAR_VARS) + +LOCAL_MODULE := mupdf_java + +LOCAL_C_INCLUDES := \ + $(MUPDF_PATH)/include + +LOCAL_CFLAGS := \ + -DHAVE_ANDROID + +LOCAL_SRC_FILES := \ + $(MUPDF_PATH)/platform/java/mupdf_native.c + +LOCAL_STATIC_LIBRARIES := mupdf_core mupdf_thirdparty +LOCAL_LDLIBS := -ljnigraphics -llog -lm +LOCAL_LDFLAGS := -Wl,--gc-sections + +include $(BUILD_SHARED_LIBRARY) diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c index 94c8b61c..cbb3dd7a 100644 --- a/platform/java/mupdf_native.c +++ b/platform/java/mupdf_native.c @@ -3917,7 +3917,6 @@ JNIEXPORT jstring JNICALL FUN(Document_proofNative)(JNIEnv *env, jobject self, jstring jCurrentPath, jstring jPrintProfile, jstring jDisplayProfile, jint inResolution) { #ifdef FZ_ENABLE_GPRF - fz_context *ctx = get_context(env); fz_document *doc = from_Document(env, self); char *tmp; diff --git a/platform/java/src/com/artifex/mupdf/fitz/Context.java b/platform/java/src/com/artifex/mupdf/fitz/Context.java index 7734a274..5ad384db 100644 --- a/platform/java/src/com/artifex/mupdf/fitz/Context.java +++ b/platform/java/src/com/artifex/mupdf/fitz/Context.java @@ -16,12 +16,12 @@ public class Context if (!inited) { inited = true; try { - System.loadLibrary("mupdf_java64"); + System.loadLibrary("mupdf_java"); } catch (UnsatisfiedLinkError e) { try { - System.loadLibrary("mupdf_java32"); + System.loadLibrary("mupdf_java64"); } catch (UnsatisfiedLinkError ee) { - System.loadLibrary("mupdf_java"); + System.loadLibrary("mupdf_java32"); } } if (initNative() < 0) diff --git a/platform/java/winmake.bat b/platform/java/winmake.bat index ac18b5f6..94608d9e 100644 --- a/platform/java/winmake.bat +++ b/platform/java/winmake.bat @@ -14,4 +14,4 @@ javac -source 1.7 -target 1.7 com/artifex/mupdf/fitz/*.java @copy ..\win32\%1\javaviewerlib.dll mupdf_java.dll /y @echo Packaging into jar (incomplete as missing manifest) -jar cf javaviewer.jar mupdf_java.dll com\artifex\mupdf\fitz\*.java example\viewer.java +jar cf mupdf-java-viewer.jar mupdf_java.dll com\artifex\mupdf\fitz\*.class example\*.class |