Android.mk 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  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. LOCAL_PATH := $(call my-dir)
  22. MUPDF_PATH := $(realpath $(LOCAL_PATH)/../..)
  23. ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
  24. HAVE_NEON := yes
  25. endif
  26. ifeq ($(TARGET_ARCH_ABI),x86_64)
  27. HAVE_AVX := yes
  28. HAVE_AVX2 := yes
  29. HAVE_FMA := yes
  30. HAVE_SSE4_1 := yes
  31. endif
  32. include $(MUPDF_PATH)/Makelists
  33. ifeq ($(USE_TESSERACT),yes)
  34. ifeq ($(USE_LEPTONICA),)
  35. USE_LEPTONICA := yes
  36. endif
  37. endif
  38. # --- Build a local static library for core mupdf ---
  39. include $(CLEAR_VARS)
  40. LOCAL_MODULE := mupdf_core
  41. LOCAL_C_INCLUDES := $(MUPDF_PATH)/include
  42. LOCAL_CFLAGS += -ffunction-sections -fdata-sections
  43. LOCAL_CFLAGS += -D_FILE_OFFSET_BITS=32
  44. LOCAL_CFLAGS += -DTOFU_NOTO
  45. LOCAL_CFLAGS += -DTOFU_CJK
  46. LOCAL_CFLAGS += -DTOFU_SIL
  47. LOCAL_CFLAGS += -DAA_BITS=8
  48. LOCAL_CFLAGS += -DFZ_ENABLE_BARCODE=0
  49. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(FREETYPE_CFLAGS)))
  50. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(GUMBO_CFLAGS)))
  51. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(HARFBUZZ_CFLAGS)))
  52. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(JBIG2DEC_CFLAGS)))
  53. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(LCMS2_CFLAGS)))
  54. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(LIBJPEG_CFLAGS)))
  55. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(MUJS_CFLAGS)))
  56. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(OPENJPEG_CFLAGS)))
  57. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(BROTLI_CFLAGS)))
  58. ifdef USE_TESSERACT
  59. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(TESSERACT_CFLAGS)))
  60. endif
  61. ifdef USE_LEPTONICA
  62. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(LEPTONICA_CFLAGS)))
  63. endif
  64. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(EXTRACT_CFLAGS)))
  65. LOCAL_CFLAGS += $(filter-out -I%,$(FREETYPE_CFLAGS))
  66. LOCAL_CFLAGS += $(filter-out -I%,$(GUMBO_CFLAGS))
  67. LOCAL_CFLAGS += $(filter-out -I%,$(HARFBUZZ_CFLAGS))
  68. LOCAL_CFLAGS += $(filter-out -I%,$(JBIG2DEC_CFLAGS))
  69. LOCAL_CFLAGS += $(filter-out -I%,$(LCMS2_CFLAGS))
  70. LOCAL_CFLAGS += $(filter-out -I%,$(LIBJPEG_CFLAGS))
  71. LOCAL_CFLAGS += $(filter-out -I%,$(MUJS_CFLAGS))
  72. LOCAL_CFLAGS += $(filter-out -I%,$(OPENJPEG_CFLAGS))
  73. LOCAL_CFLAGS += $(filter-out -I%,$(BROTLI_CFLAGS))
  74. ifdef USE_TESSERACT
  75. LOCAL_CFLAGS += -DHAVE_TESSERACT
  76. LOCAL_CFLAGS += $(filter-out -I%,$(TESSERACT_CFLAGS))
  77. endif
  78. ifdef USE_LEPTONICA
  79. LOCAL_CFLAGS += -DHAVE_LEPTONICA
  80. LOCAL_CFLAGS += $(filter-out -I%,$(LEPTONICA_CFLAGS))
  81. endif
  82. LOCAL_CFLAGS += $(filter-out -I%,$(EXTRACT_CFLAGS))
  83. LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/fitz/*.c)
  84. LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/fitz/*.cpp)
  85. LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/pdf/*.c)
  86. LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/xps/*.c)
  87. LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/svg/*.c)
  88. LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/cbz/*.c)
  89. LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/html/*.c)
  90. LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/source/helpers/pkcs7/*.c)
  91. LOCAL_SRC_FILES += $(wildcard $(MUPDF_PATH)/generated/resources/fonts/urw/*.c)
  92. LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
  93. include $(BUILD_STATIC_LIBRARY)
  94. # --- Build local static libraries for thirdparty libraries ---
  95. include $(CLEAR_VARS)
  96. LOCAL_MODULE += mupdf_thirdparty_freetype
  97. LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(FREETYPE_SRC))
  98. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(FREETYPE_CFLAGS) $(FREETYPE_BUILD_CFLAGS)))
  99. LOCAL_CFLAGS += $(filter-out -I%,$(FREETYPE_CFLAGS) $(FREETYPE_BUILD_CFLAGS))
  100. LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
  101. include $(BUILD_STATIC_LIBRARY)
  102. include $(CLEAR_VARS)
  103. LOCAL_MODULE += mupdf_thirdparty_gumbo
  104. LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(GUMBO_SRC))
  105. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(GUMBO_CFLAGS) $(GUMBO_BUILD_CFLAGS)))
  106. LOCAL_CFLAGS += $(filter-out -I%,$(GUMBO_CFLAGS) $(GUMBO_BUILD_CFLAGS))
  107. LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
  108. include $(BUILD_STATIC_LIBRARY)
  109. include $(CLEAR_VARS)
  110. LOCAL_MODULE += mupdf_thirdparty_jbig2dec
  111. LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(JBIG2DEC_SRC))
  112. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(JBIG2DEC_CFLAGS) $(JBIG2DEC_BUILD_CFLAGS)))
  113. LOCAL_CFLAGS += $(filter-out -I%,$(JBIG2DEC_CFLAGS) $(JBIG2DEC_BUILD_CFLAGS))
  114. LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
  115. include $(BUILD_STATIC_LIBRARY)
  116. include $(CLEAR_VARS)
  117. LOCAL_MODULE += mupdf_thirdparty_harfbuzz
  118. LOCAL_CPP_EXTENSION := .cc
  119. LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(HARFBUZZ_SRC))
  120. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(HARFBUZZ_CFLAGS) $(HARFBUZZ_BUILD_CFLAGS)))
  121. LOCAL_CPPFLAGS += $(filter-out -I%,$(HARFBUZZ_CFLAGS) $(HARFBUZZ_BUILD_CFLAGS))
  122. LOCAL_CPPFLAGS += $(MUPDF_EXTRA_CPPFLAGS)
  123. include $(BUILD_STATIC_LIBRARY)
  124. include $(CLEAR_VARS)
  125. LOCAL_MODULE += mupdf_thirdparty_lcms2
  126. LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
  127. LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(LCMS2_SRC))
  128. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(LCMS2_CFLAGS) $(LCMS2_BUILD_CFLAGS)))
  129. LOCAL_CFLAGS += $(filter-out -I%,$(LCMS2_CFLAGS) $(LCMS2_BUILD_CFLAGS))
  130. include $(BUILD_STATIC_LIBRARY)
  131. include $(CLEAR_VARS)
  132. LOCAL_MODULE += mupdf_thirdparty_libjpeg
  133. LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(LIBJPEG_SRC))
  134. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(LIBJPEG_CFLAGS) $(LIBJPEG_BUILD_CFLAGS)))
  135. LOCAL_CFLAGS += $(filter-out -I%,$(LIBJPEG_CFLAGS) $(LIBJPEG_BUILD_CFLAGS))
  136. LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
  137. include $(BUILD_STATIC_LIBRARY)
  138. include $(CLEAR_VARS)
  139. LOCAL_MODULE += mupdf_thirdparty_mujs
  140. LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(MUJS_SRC))
  141. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(MUJS_CFLAGS) $(MUJS_BUILD_CFLAGS)))
  142. LOCAL_CFLAGS += $(filter-out -I%,$(MUJS_CFLAGS) $(MUJS_BUILD_CFLAGS))
  143. LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
  144. include $(BUILD_STATIC_LIBRARY)
  145. include $(CLEAR_VARS)
  146. LOCAL_MODULE += mupdf_thirdparty_openjpeg
  147. LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(OPENJPEG_SRC))
  148. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(OPENJPEG_CFLAGS) $(OPENJPEG_BUILD_CFLAGS)))
  149. LOCAL_CFLAGS += $(filter-out -I%,$(OPENJPEG_CFLAGS) $(OPENJPEG_BUILD_CFLAGS))
  150. LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
  151. include $(BUILD_STATIC_LIBRARY)
  152. include $(CLEAR_VARS)
  153. LOCAL_MODULE += mupdf_thirdparty_brotli
  154. LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(BROTLI_SRC))
  155. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(BROTLI_CFLAGS) $(BROTLI_BUILD_CFLAGS)))
  156. LOCAL_CFLAGS += $(filter-out -I%,$(BROTLI_CFLAGS) $(BROTLI_BUILD_CFLAGS))
  157. LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
  158. include $(BUILD_STATIC_LIBRARY)
  159. ifdef USE_TESSERACT
  160. # --- Build local static library for tesseract ---
  161. include $(CLEAR_VARS)
  162. LOCAL_MODULE += mupdf_thirdparty_tesseract
  163. LOCAL_C_INCLUDES := $(MUPDF_PATH)/include
  164. LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(TESSERACT_SRC))
  165. LOCAL_SRC_FILES += $(MUPDF_PATH)/source/fitz/tessocr.cpp
  166. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(TESSERACT_CFLAGS) $(TESSERACT_BUILD_CFLAGS)))
  167. LOCAL_CFLAGS += $(filter-out -I%,$(TESSERACT_CFLAGS) $(TESSERACT_BUILD_CFLAGS))
  168. LOCAL_CFLAGS += -Wno-sign-compare
  169. LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
  170. LOCAL_CPP_FEATURES := exceptions
  171. include $(BUILD_STATIC_LIBRARY)
  172. endif
  173. ifdef USE_LEPTONICA
  174. # --- Build local static library for leptonica ---
  175. include $(CLEAR_VARS)
  176. LOCAL_MODULE += mupdf_thirdparty_leptonica
  177. LOCAL_C_INCLUDES := $(MUPDF_PATH)/include
  178. LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(LEPTONICA_SRC))
  179. LOCAL_SRC_FILES += $(MUPDF_PATH)/source/fitz/leptonica-wrap.c
  180. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(LEPTONICA_CFLAGS) $(LEPTONICA_BUILD_CFLAGS)))
  181. LOCAL_CFLAGS += $(filter-out -I%,$(LEPTONICA_CFLAGS) $(LEPTONICA_BUILD_CFLAGS))
  182. LOCAL_CFLAGS += -Wno-sign-compare -DANDROID_BUILD
  183. LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
  184. include $(BUILD_STATIC_LIBRARY)
  185. endif # USE_LEPTONICA
  186. include $(CLEAR_VARS)
  187. LOCAL_MODULE += mupdf_thirdparty_extract
  188. LOCAL_SRC_FILES += $(patsubst %,$(MUPDF_PATH)/%,$(EXTRACT_SRC))
  189. LOCAL_C_INCLUDES += $(patsubst -I%,$(MUPDF_PATH)/%,$(filter -I%,$(EXTRACT_CFLAGS) $(EXTRACT_BUILD_CFLAGS)))
  190. LOCAL_CFLAGS += $(filter-out -I%,$(EXTRACT_CFLAGS) $(EXTRACT_BUILD_CFLAGS))
  191. LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
  192. include $(BUILD_STATIC_LIBRARY)
  193. # --- Build the final JNI shared library ---
  194. include $(CLEAR_VARS)
  195. LOCAL_MODULE := mupdf_java
  196. LOCAL_C_INCLUDES += $(MUPDF_PATH)/include
  197. LOCAL_CFLAGS += -DHAVE_ANDROID
  198. LOCAL_CFLAGS += $(MUPDF_EXTRA_CFLAGS)
  199. LOCAL_SRC_FILES += $(MUPDF_PATH)/platform/java/mupdf_native.c
  200. ifdef ADD_SOURCE_FILES
  201. LOCAL_SRC_FILES += $(ADD_SOURCE_FILES)
  202. LOCAL_CFLAGS += $(ADD_C_FLAGS)
  203. LOCAL_C_INCLUDES += $(ADD_C_INCLUDES)
  204. endif
  205. LOCAL_STATIC_LIBRARIES += mupdf_core
  206. LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_freetype
  207. LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_gumbo
  208. LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_harfbuzz
  209. LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_jbig2dec
  210. LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_lcms2
  211. LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_libjpeg
  212. LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_mujs
  213. LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_openjpeg
  214. LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_brotli
  215. ifdef USE_LEPTONICA
  216. LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_leptonica
  217. endif
  218. ifdef USE_TESSERACT
  219. LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_tesseract
  220. endif
  221. LOCAL_STATIC_LIBRARIES += mupdf_thirdparty_extract
  222. LOCAL_LDLIBS += $(MUPDF_EXTRA_LDLIBS)
  223. LOCAL_LDLIBS += -ljnigraphics
  224. LOCAL_LDLIBS += -llog
  225. LOCAL_LDLIBS += -lz
  226. LOCAL_LDLIBS += -lm
  227. LOCAL_LDFLAGS := -Wl,--gc-sections
  228. LOCAL_LDFLAGS += $(MUPDF_EXTRA_LDFLAGS)
  229. include $(BUILD_SHARED_LIBRARY)