comparison mupdf-source/platform/java/Android.mk @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
comparison
equal deleted inserted replaced
1:1d09e1dec1d9 2:b50eed0cc0ef
1 # Android makefile to be used with ndk-build.
2 #
3 # Run ndk-build with the following arguments:
4 # APP_BUILD_SCRIPT=platform/java/Android.mk (this file)
5 # APP_PROJECT_DIR=build/android (where you want the output)
6 # APP_PLATFORM=android-16
7 # APP_OPTIM=release (or debug)
8 # APP_ABI=all (or armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, mips, mips64)
9 #
10 # The top-level Makefile will invoke ndk-build with appropriate arguments
11 # if you run 'make android'.
12 #
13 # Use the MUPDF_EXTRA_CFLAGS, MUPDF_EXTRA_CPPFLAGS, MUPDF_EXTRA_LDFLAGS,
14 # and MUPDF_EXTRA_LDLIBS variables to add more compiler flags.
15 #
16 # LOCAL_C_INCLUDES paths are relative to the NDK root directory.
17 # LOCAL_SRC_FILES paths are relative to LOCAL_PATH.
18 #
19 # We make sure to use absolute paths everywhere, so this makefile works
20 # regardless of where it is called from.
21
22 LOCAL_PATH := $(call my-dir)
23 MUPDF_PATH := $(realpath $(LOCAL_PATH)/../..)
24
25 ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
26 HAVE_NEON := yes
27 endif
28
29 ifeq ($(TARGET_ARCH_ABI),x86_64)
30 HAVE_AVX := yes
31 HAVE_AVX2 := yes
32 HAVE_FMA := yes
33 HAVE_SSE4_1 := yes
34 endif
35
36 include $(MUPDF_PATH)/Makelists
37
38 ifeq ($(USE_TESSERACT),yes)
39 ifeq ($(USE_LEPTONICA),)
40 USE_LEPTONICA := yes
41 endif
42 endif
43
44 # --- Build a local static library for core mupdf ---
45
46 include $(CLEAR_VARS)
47
48 LOCAL_MODULE := mupdf_core
49
50 LOCAL_C_INCLUDES := $(MUPDF_PATH)/include
51
52 LOCAL_CFLAGS += -ffunction-sections -fdata-sections
53 LOCAL_CFLAGS += -D_FILE_OFFSET_BITS=32
54 LOCAL_CFLAGS += -DTOFU_NOTO
55 LOCAL_CFLAGS += -DTOFU_CJK
56 LOCAL_CFLAGS += -DTOFU_SIL
57 LOCAL_CFLAGS += -DAA_BITS=8
58 LOCAL_CFLAGS += -DFZ_ENABLE_BARCODE=0
59
60 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(FREETYPE_CFLAGS)))
61 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(GUMBO_CFLAGS)))
62 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(HARFBUZZ_CFLAGS)))
63 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(JBIG2DEC_CFLAGS)))
64 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(LCMS2_CFLAGS)))
65 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(LIBJPEG_CFLAGS)))
66 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(MUJS_CFLAGS)))
67 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(OPENJPEG_CFLAGS)))
68 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(BROTLI_CFLAGS)))
69
70 ifdef USE_TESSERACT
71 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(TESSERACT_CFLAGS)))
72 endif
73 ifdef USE_LEPTONICA
74 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(LEPTONICA_CFLAGS)))
75 endif
76
77 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(EXTRACT_CFLAGS)))
78
79 LOCAL_CFLAGS += $(filter-out -I%,$(FREETYPE_CFLAGS))
80 LOCAL_CFLAGS += $(filter-out -I%,$(GUMBO_CFLAGS))
81 LOCAL_CFLAGS += $(filter-out -I%,$(HARFBUZZ_CFLAGS))
82 LOCAL_CFLAGS += $(filter-out -I%,$(JBIG2DEC_CFLAGS))
83 LOCAL_CFLAGS += $(filter-out -I%,$(LCMS2_CFLAGS))
84 LOCAL_CFLAGS += $(filter-out -I%,$(LIBJPEG_CFLAGS))
85 LOCAL_CFLAGS += $(filter-out -I%,$(MUJS_CFLAGS))
86 LOCAL_CFLAGS += $(filter-out -I%,$(OPENJPEG_CFLAGS))
87 LOCAL_CFLAGS += $(filter-out -I%,$(BROTLI_CFLAGS))
88
89 ifdef USE_TESSERACT
90 LOCAL_CFLAGS += -DHAVE_TESSERACT
91 LOCAL_CFLAGS += $(filter-out -I%,$(TESSERACT_CFLAGS))
92 endif
93 ifdef USE_LEPTONICA
94 LOCAL_CFLAGS += -DHAVE_LEPTONICA
95 LOCAL_CFLAGS += $(filter-out -I%,$(LEPTONICA_CFLAGS))
96 endif
97
98 LOCAL_CFLAGS += $(filter-out -I%,$(EXTRACT_CFLAGS))
99
100 LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/fitz/*.c)
101 LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/fitz/*.cpp)
102 LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/pdf/*.c)
103 LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/xps/*.c)
104 LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/svg/*.c)
105 LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/cbz/*.c)
106 LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/html/*.c)
107 LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/helpers/pkcs7/*.c)
108
109 LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/generated/resources/fonts/urw/*.c)
110
111 LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
112
113 LOCAL_SHORT_COMMANDS := true
114 include $(BUILD_STATIC_LIBRARY)
115
116 # --- Build local static libraries for thirdparty libraries ---
117
118 include $(CLEAR_VARS)
119 LOCAL_MODULE += mupdf_thirdparty_freetype
120 LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(FREETYPE_SRC))
121 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(FREETYPE_CFLAGS) $(FREETYPE_BUILD_CFLAGS)))
122 LOCAL_CFLAGS += $(filter-out -I%,$(FREETYPE_CFLAGS) $(FREETYPE_BUILD_CFLAGS))
123 LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
124 include $(BUILD_STATIC_LIBRARY)
125
126 include $(CLEAR_VARS)
127 LOCAL_MODULE += mupdf_thirdparty_gumbo
128 LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(GUMBO_SRC))
129 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(GUMBO_CFLAGS) $(GUMBO_BUILD_CFLAGS)))
130 LOCAL_CFLAGS += $(filter-out -I%,$(GUMBO_CFLAGS) $(GUMBO_BUILD_CFLAGS))
131 LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
132 include $(BUILD_STATIC_LIBRARY)
133
134 include $(CLEAR_VARS)
135 LOCAL_MODULE += mupdf_thirdparty_jbig2dec
136 LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(JBIG2DEC_SRC))
137 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(JBIG2DEC_CFLAGS) $(JBIG2DEC_BUILD_CFLAGS)))
138 LOCAL_CFLAGS += $(filter-out -I%,$(JBIG2DEC_CFLAGS) $(JBIG2DEC_BUILD_CFLAGS))
139 LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
140 include $(BUILD_STATIC_LIBRARY)
141
142 include $(CLEAR_VARS)
143 LOCAL_MODULE += mupdf_thirdparty_harfbuzz
144 LOCAL_CPP_EXTENSION := .cc
145 LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(HARFBUZZ_SRC))
146 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(HARFBUZZ_CFLAGS) $(HARFBUZZ_BUILD_CFLAGS)))
147 LOCAL_CPPFLAGS += $(filter-out -I%,$(HARFBUZZ_CFLAGS) $(HARFBUZZ_BUILD_CFLAGS))
148 LOCAL_CPPFLAGS += $(MUPDF_EXTRA_CPPFLAGS)
149 include $(BUILD_STATIC_LIBRARY)
150
151 include $(CLEAR_VARS)
152 LOCAL_MODULE += mupdf_thirdparty_lcms2
153 LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
154 LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(LCMS2_SRC))
155 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(LCMS2_CFLAGS) $(LCMS2_BUILD_CFLAGS)))
156 LOCAL_CFLAGS += $(filter-out -I%,$(LCMS2_CFLAGS) $(LCMS2_BUILD_CFLAGS))
157 include $(BUILD_STATIC_LIBRARY)
158
159 include $(CLEAR_VARS)
160 LOCAL_MODULE += mupdf_thirdparty_libjpeg
161 LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(LIBJPEG_SRC))
162 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(LIBJPEG_CFLAGS) $(LIBJPEG_BUILD_CFLAGS)))
163 LOCAL_CFLAGS += $(filter-out -I%,$(LIBJPEG_CFLAGS) $(LIBJPEG_BUILD_CFLAGS))
164 LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
165 include $(BUILD_STATIC_LIBRARY)
166
167 include $(CLEAR_VARS)
168 LOCAL_MODULE += mupdf_thirdparty_mujs
169 LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(MUJS_SRC))
170 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(MUJS_CFLAGS) $(MUJS_BUILD_CFLAGS)))
171 LOCAL_CFLAGS += $(filter-out -I%,$(MUJS_CFLAGS) $(MUJS_BUILD_CFLAGS))
172 LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
173 include $(BUILD_STATIC_LIBRARY)
174
175 include $(CLEAR_VARS)
176 LOCAL_MODULE += mupdf_thirdparty_openjpeg
177 LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(OPENJPEG_SRC))
178 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(OPENJPEG_CFLAGS) $(OPENJPEG_BUILD_CFLAGS)))
179 LOCAL_CFLAGS += $(filter-out -I%,$(OPENJPEG_CFLAGS) $(OPENJPEG_BUILD_CFLAGS))
180 LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
181 include $(BUILD_STATIC_LIBRARY)
182
183 include $(CLEAR_VARS)
184 LOCAL_MODULE += mupdf_thirdparty_brotli
185 LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(BROTLI_SRC))
186 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(BROTLI_CFLAGS) $(BROTLI_BUILD_CFLAGS)))
187 LOCAL_CFLAGS += $(filter-out -I%,$(BROTLI_CFLAGS) $(BROTLI_BUILD_CFLAGS))
188 LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
189 include $(BUILD_STATIC_LIBRARY)
190
191 ifdef USE_TESSERACT
192 # --- Build local static library for tesseract ---
193
194 include $(CLEAR_VARS)
195 LOCAL_MODULE += mupdf_thirdparty_tesseract
196 LOCAL_C_INCLUDES := $(MUPDF_PATH)/include
197 LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(TESSERACT_SRC))
198 LOCAL_SRC_FILES += $(MUPDF_PATH)/source/fitz/tessocr.cpp
199 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(TESSERACT_CFLAGS) $(TESSERACT_BUILD_CFLAGS)))
200 LOCAL_CFLAGS += $(filter-out -I%,$(TESSERACT_CFLAGS) $(TESSERACT_BUILD_CFLAGS))
201 LOCAL_CFLAGS += -Wno-sign-compare
202 LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
203 LOCAL_CPP_FEATURES := exceptions
204 include $(BUILD_STATIC_LIBRARY)
205
206 endif
207
208 ifdef USE_LEPTONICA
209 # --- Build local static library for leptonica ---
210
211 include $(CLEAR_VARS)
212 LOCAL_MODULE += mupdf_thirdparty_leptonica
213 LOCAL_C_INCLUDES := $(MUPDF_PATH)/include
214 LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(LEPTONICA_SRC))
215 LOCAL_SRC_FILES += $(MUPDF_PATH)/source/fitz/leptonica-wrap.c
216 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(LEPTONICA_CFLAGS) $(LEPTONICA_BUILD_CFLAGS)))
217 LOCAL_CFLAGS += $(filter-out -I%,$(LEPTONICA_CFLAGS) $(LEPTONICA_BUILD_CFLAGS))
218 LOCAL_CFLAGS += -Wno-sign-compare -DANDROID_BUILD
219 LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
220 include $(BUILD_STATIC_LIBRARY)
221
222 endif # USE_LEPTONICA
223
224 include $(CLEAR_VARS)
225 LOCAL_MODULE += mupdf_thirdparty_extract
226 LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(EXTRACT_SRC))
227 LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(EXTRACT_CFLAGS) $(EXTRACT_BUILD_CFLAGS)))
228 LOCAL_CFLAGS += $(filter-out -I%,$(EXTRACT_CFLAGS) $(EXTRACT_BUILD_CFLAGS))
229 LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
230 include $(BUILD_STATIC_LIBRARY)
231
232 # --- Build the final JNI shared library ---
233
234 include $(CLEAR_VARS)
235
236 LOCAL_MODULE := mupdf_java
237
238 LOCAL_C_INCLUDES += $(MUPDF_PATH)/include
239
240 LOCAL_CFLAGS += -DHAVE_ANDROID
241 LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
242
243 LOCAL_SRC_FILES += $(MUPDF_PATH)/platform/java/mupdf_native.c
244
245 ifdef ADD_SOURCE_FILES
246 LOCAL_SRC_FILES += $(ADD_SOURCE_FILES)
247 LOCAL_CFLAGS += $(ADD_C_FLAGS)
248 LOCAL_C_INCLUDES += $(ADD_C_INCLUDES)
249 endif
250
251 LOCAL_STATIC_LIBRARIES += mupdf_core
252 LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_freetype
253 LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_gumbo
254 LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_harfbuzz
255 LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_jbig2dec
256 LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_lcms2
257 LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_libjpeg
258 LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_mujs
259 LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_openjpeg
260 LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_brotli
261
262 ifdef USE_LEPTONICA
263 LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_leptonica
264 endif
265 ifdef USE_TESSERACT
266 LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_tesseract
267 endif
268
269 LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_extract
270
271 LOCAL_LDLIBS += $(MUPDF_EXTRA_LDLIBS)
272 LOCAL_LDLIBS += -ljnigraphics
273 LOCAL_LDLIBS += -llog
274 LOCAL_LDLIBS += -lz
275 LOCAL_LDLIBS += -lm
276
277 LOCAL_LDFLAGS := -Wl,--gc-sections
278 LOCAL_LDFLAGS += $(MUPDF_EXTRA_LDFLAGS)
279
280 LOCAL_SHORT_COMMANDS := true
281
282 include $(BUILD_SHARED_LIBRARY)