comparison mupdf-source/platform/java/Makefile @ 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 # GNU Makefile
2
3 -include ../../user.make
4
5 OS ?= $(shell uname)
6
7 JAVA := java
8 JAVAC := javac
9
10 ifndef build
11 build := release
12 endif
13
14 ifeq ($(build),debug)
15 BUILD_FLAGS := -DDEBUG -O0 -g
16 else ifeq ($(build),memento)
17 BUILD_FLAGS := -DDEBUG -O0 -g -DMEMENTO
18 else
19 BUILD_FLAGS := -DNDEBUG -O2
20 endif
21 BUILD_FLAGS += $(XCFLAGS)
22
23 ifndef OUT
24 OUT := build/java/$(build)
25 endif
26
27 ifeq ($(OS),Darwin)
28 MUPDF_JAVA := ../../$(OUT)/libmupdf_java64.jnilib
29 JAVA_VM := $(shell /usr/libexec/java_home)
30 JAVA_CFLAGS := \
31 -I $(JAVA_VM)/include \
32 -I $(JAVA_VM)/include/darwin
33 JAVA_LDFLAGS := -lstdc++
34
35 else
36
37 BITS := $(shell getconf LONG_BIT)
38
39 JAVA_HOME ?= /usr/lib/jvm/default-java
40
41 MUPDF_JAVA := ../../$(OUT)/libmupdf_java$(BITS).so
42 JAVA_CFLAGS := \
43 -I $(JAVA_HOME)/include \
44 -I $(JAVA_HOME)/include/linux \
45 $(shell pkg-config --cflags freetype2) \
46 $(shell pkg-config --cflags libcrypto)
47 JAVA_LIBS := \
48 $(shell pkg-config --libs freetype2) \
49 $(shell pkg-config --libs libcrypto) \
50 -lz
51 JAVA_LDFLAGS := \
52 -z noexecstack
53
54 ifeq ($(tesseract), yes)
55 ifeq ($(USE_SYSTEM_TESSERACT), yes)
56 JAVA_LIBS += \
57 $(shell pkg-config --libs lept) \
58 $(shell pkg-config --libs tesseract)
59
60 CONFIGFLAGS += tesseract=yes USE_SYSTEM_TESSERACT=yes
61 else
62 CONFIGFLAGS += tesseract=yes
63 endif
64 endif
65 endif
66
67 MUPDF_JAR := ../../$(OUT)/libmupdf.jar
68
69 EXAMPLE_JAVA_SOURCES := $(sort $(wildcard example/*.java))
70 EXAMPLE_JAVA_OBJECTS := $(subst example/,../../$(OUT)/example/,$(EXAMPLE_JAVA_SOURCES:%.java=%.class))
71
72 default: $(MUPDF_JAVA) $(MUPDF_JAR) $(EXAMPLE_JAVA_OBJECTS)
73
74 jar: $(MUPDF_JAR)
75
76 MUPDF_CORE := ../../$(OUT)/libmupdf.a ../../$(OUT)/libmupdf-third.a
77 ifeq "$(OS)" "Linux"
78 $(MUPDF_CORE) : .FORCE
79 $(MAKE) -C ../.. OUT=$(OUT) XCFLAGS=-fPIC build=$(build) USE_SYSTEM_FREETYPE=yes USE_SYSTEM_ZLIB=yes $(CONFIGFLAGS) libs
80 else
81 $(MUPDF_CORE) : .FORCE
82 $(MAKE) -C ../.. OUT=$(OUT) XCFLAGS=-fPIC build=$(build) $(CONFIGFLAGS) libs
83 endif
84
85 LIBRARY_JAVA_SOURCES := $(sort $(wildcard src/com/artifex/mupdf/fitz/*.java))
86 LIBRARY_JAVA_OBJECTS := $(subst src/,../../$(OUT)/,$(LIBRARY_JAVA_SOURCES:%.java=%.class))
87 LIBRARY_JAVA_CLASSES := $(subst src/com/artifex/mupdf/fitz/,com.artifex.mupdf.fitz.,$(LIBRARY_JAVA_SOURCES:%.java=%))
88
89 JAVAC_FLAGS := $(JAVAC_XFLAGS) -source 1.7 -target 1.7
90
91 $(LIBRARY_JAVA_OBJECTS) : $(LIBRARY_JAVA_SOURCES)
92 mkdir -p ../../$(OUT)
93 $(JAVAC) $(JAVAC_FLAGS) -h ../../$(OUT)/ -d ../../$(OUT)/ $^
94
95 $(EXAMPLE_JAVA_OBJECTS): $(EXAMPLE_JAVA_SOURCES)
96 $(JAVAC) $(JAVAC_FLAGS) -classpath ../../$(OUT) -d ../../$(OUT)/ $^
97
98 $(MUPDF_JAR) : $(LIBRARY_JAVA_OBJECTS)
99 rm -f $@
100 cd ../../$(OUT) && jar cf libmupdf.jar com
101
102 mupdf_native.h : $(LIBRARY_JAVA_OBJECTS)
103 rm -f $@
104 cat $(sort $(wildcard ../../$(OUT)/*.h)) > mupdf_native.h
105
106 ../../$(OUT)/mupdf_native.o : mupdf_native.c mupdf_native.h $(wildcard jni/*.c) $(MUPDF_CORE)
107 $(CC) -g -o $@ -c $< -fPIC -Wall -Wextra -Wno-unused-parameter -Wpedantic -I ../../include \
108 $(JAVA_CFLAGS) $(BUILD_FLAGS)
109
110 $(MUPDF_JAVA) : ../../$(OUT)/mupdf_native.o $(MUPDF_CORE)
111 $(CC) -shared $(JAVA_LDFLAGS) -o $(MUPDF_JAVA) $^ $(JAVA_LIBS) $(BUILD_FLAGS)
112
113 jshell: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR)
114 jshell --class-path ../../$(OUT)/ -R-Djava.library.path="../../$(OUT)" init.jshell $$MUPDF_ARGS
115
116 run: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR)
117 $(JAVA) -classpath ../../$(OUT)/ -Djava.library.path="../../$(OUT)" example.Viewer $$MUPDF_ARGS
118
119 examples: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR)
120
121 run-storytest: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR)
122 $(JAVA) -classpath ../../$(OUT)/ -Djava.library.path="../../$(OUT)" example.StoryTest $$MUPDF_ARGS
123
124 run-tracedevice: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR)
125 $(JAVA) -classpath ../../$(OUT)/ -Djava.library.path="../../$(OUT)" example.TraceDevice $$MUPDF_ARGS
126
127 run-pdftrace: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR)
128 $(JAVA) -classpath ../../$(OUT)/ -Djava.library.path="../../$(OUT)" example.PDFTrace $$MUPDF_ARGS
129
130 run-example: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR)
131 $(JAVA) -classpath ../../$(OUT)/ -Djava.library.path="../../$(OUT)" example.Example $$MUPDF_ARGS
132
133 run-multithreaded: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR)
134 $(JAVA) -classpath ../../$(OUT)/ -Djava.library.path="../../$(OUT)" example.MultiThreaded $$MUPDF_ARGS
135
136 run-multithreadedwithpool: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR)
137 $(JAVA) -classpath ../../$(OUT)/ -Djava.library.path="../../$(OUT)" example.MultiThreadedWithPool $$MUPDF_ARGS
138
139 gdb: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR)
140 gdb --args $(JAVA) -classpath ../../$(OUT) -Djava.library.path="../../$(OUT)" example.Viewer $$MUPDF_ARGS
141
142 clean:
143 rm -f $(LIBRARY_JAVA_OBJECTS) $(subst .class,\$$*.class,$(LIBRARY_JAVA_OBJECTS))
144 rm -f $(EXAMPLE_JAVA_OBJECTS) $(subst .class,\$$*.class,$(EXAMPLE_JAVA_OBJECTS))
145 rm -f ../../$(OUT)/mupdf_native.o
146 rm -fr ../../$(OUT)/resources
147 rm -fr ../../$(OUT)/source
148 rm -fr ../../$(OUT)/thirdparty
149 rm -f $(MUPDF_JAR)
150 rm -f $(MUPDF_JAVA)
151 rm -f $(MUPDF_CORE)
152 rm -f ../../$(OUT)/*.h
153
154 nuke: clean
155 $(MAKE) -C ../.. OUT=$(OUT) build=$(build) clean
156
157 .NOTPARALLEL : # disable -j option (it breaks since javac compiles all class files in one command)
158 .PHONY: .FORCE