Mercurial > hgrepos > Python2 > PyMuPDF
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mupdf-source/platform/java/Makefile Mon Sep 15 11:43:07 2025 +0200 @@ -0,0 +1,158 @@ +# GNU Makefile + +-include ../../user.make + +OS ?= $(shell uname) + +JAVA := java +JAVAC := javac + +ifndef build + build := release +endif + +ifeq ($(build),debug) + BUILD_FLAGS := -DDEBUG -O0 -g +else ifeq ($(build),memento) + BUILD_FLAGS := -DDEBUG -O0 -g -DMEMENTO +else + BUILD_FLAGS := -DNDEBUG -O2 +endif +BUILD_FLAGS += $(XCFLAGS) + +ifndef OUT + OUT := build/java/$(build) +endif + +ifeq ($(OS),Darwin) +MUPDF_JAVA := ../../$(OUT)/libmupdf_java64.jnilib +JAVA_VM := $(shell /usr/libexec/java_home) +JAVA_CFLAGS := \ + -I $(JAVA_VM)/include \ + -I $(JAVA_VM)/include/darwin +JAVA_LDFLAGS := -lstdc++ + +else + +BITS := $(shell getconf LONG_BIT) + +JAVA_HOME ?= /usr/lib/jvm/default-java + +MUPDF_JAVA := ../../$(OUT)/libmupdf_java$(BITS).so +JAVA_CFLAGS := \ + -I $(JAVA_HOME)/include \ + -I $(JAVA_HOME)/include/linux \ + $(shell pkg-config --cflags freetype2) \ + $(shell pkg-config --cflags libcrypto) +JAVA_LIBS := \ + $(shell pkg-config --libs freetype2) \ + $(shell pkg-config --libs libcrypto) \ + -lz +JAVA_LDFLAGS := \ + -z noexecstack + +ifeq ($(tesseract), yes) +ifeq ($(USE_SYSTEM_TESSERACT), yes) +JAVA_LIBS += \ + $(shell pkg-config --libs lept) \ + $(shell pkg-config --libs tesseract) + +CONFIGFLAGS += tesseract=yes USE_SYSTEM_TESSERACT=yes +else +CONFIGFLAGS += tesseract=yes +endif +endif +endif + +MUPDF_JAR := ../../$(OUT)/libmupdf.jar + +EXAMPLE_JAVA_SOURCES := $(sort $(wildcard example/*.java)) +EXAMPLE_JAVA_OBJECTS := $(subst example/,../../$(OUT)/example/,$(EXAMPLE_JAVA_SOURCES:%.java=%.class)) + +default: $(MUPDF_JAVA) $(MUPDF_JAR) $(EXAMPLE_JAVA_OBJECTS) + +jar: $(MUPDF_JAR) + +MUPDF_CORE := ../../$(OUT)/libmupdf.a ../../$(OUT)/libmupdf-third.a +ifeq "$(OS)" "Linux" +$(MUPDF_CORE) : .FORCE + $(MAKE) -C ../.. OUT=$(OUT) XCFLAGS=-fPIC build=$(build) USE_SYSTEM_FREETYPE=yes USE_SYSTEM_ZLIB=yes $(CONFIGFLAGS) libs +else +$(MUPDF_CORE) : .FORCE + $(MAKE) -C ../.. OUT=$(OUT) XCFLAGS=-fPIC build=$(build) $(CONFIGFLAGS) libs +endif + +LIBRARY_JAVA_SOURCES := $(sort $(wildcard src/com/artifex/mupdf/fitz/*.java)) +LIBRARY_JAVA_OBJECTS := $(subst src/,../../$(OUT)/,$(LIBRARY_JAVA_SOURCES:%.java=%.class)) +LIBRARY_JAVA_CLASSES := $(subst src/com/artifex/mupdf/fitz/,com.artifex.mupdf.fitz.,$(LIBRARY_JAVA_SOURCES:%.java=%)) + +JAVAC_FLAGS := $(JAVAC_XFLAGS) -source 1.7 -target 1.7 + +$(LIBRARY_JAVA_OBJECTS) : $(LIBRARY_JAVA_SOURCES) + mkdir -p ../../$(OUT) + $(JAVAC) $(JAVAC_FLAGS) -h ../../$(OUT)/ -d ../../$(OUT)/ $^ + +$(EXAMPLE_JAVA_OBJECTS): $(EXAMPLE_JAVA_SOURCES) + $(JAVAC) $(JAVAC_FLAGS) -classpath ../../$(OUT) -d ../../$(OUT)/ $^ + +$(MUPDF_JAR) : $(LIBRARY_JAVA_OBJECTS) + rm -f $@ + cd ../../$(OUT) && jar cf libmupdf.jar com + +mupdf_native.h : $(LIBRARY_JAVA_OBJECTS) + rm -f $@ + cat $(sort $(wildcard ../../$(OUT)/*.h)) > mupdf_native.h + +../../$(OUT)/mupdf_native.o : mupdf_native.c mupdf_native.h $(wildcard jni/*.c) $(MUPDF_CORE) + $(CC) -g -o $@ -c $< -fPIC -Wall -Wextra -Wno-unused-parameter -Wpedantic -I ../../include \ + $(JAVA_CFLAGS) $(BUILD_FLAGS) + +$(MUPDF_JAVA) : ../../$(OUT)/mupdf_native.o $(MUPDF_CORE) + $(CC) -shared $(JAVA_LDFLAGS) -o $(MUPDF_JAVA) $^ $(JAVA_LIBS) $(BUILD_FLAGS) + +jshell: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR) + jshell --class-path ../../$(OUT)/ -R-Djava.library.path="../../$(OUT)" init.jshell $$MUPDF_ARGS + +run: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR) + $(JAVA) -classpath ../../$(OUT)/ -Djava.library.path="../../$(OUT)" example.Viewer $$MUPDF_ARGS + +examples: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR) + +run-storytest: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR) + $(JAVA) -classpath ../../$(OUT)/ -Djava.library.path="../../$(OUT)" example.StoryTest $$MUPDF_ARGS + +run-tracedevice: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR) + $(JAVA) -classpath ../../$(OUT)/ -Djava.library.path="../../$(OUT)" example.TraceDevice $$MUPDF_ARGS + +run-pdftrace: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR) + $(JAVA) -classpath ../../$(OUT)/ -Djava.library.path="../../$(OUT)" example.PDFTrace $$MUPDF_ARGS + +run-example: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR) + $(JAVA) -classpath ../../$(OUT)/ -Djava.library.path="../../$(OUT)" example.Example $$MUPDF_ARGS + +run-multithreaded: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR) + $(JAVA) -classpath ../../$(OUT)/ -Djava.library.path="../../$(OUT)" example.MultiThreaded $$MUPDF_ARGS + +run-multithreadedwithpool: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR) + $(JAVA) -classpath ../../$(OUT)/ -Djava.library.path="../../$(OUT)" example.MultiThreadedWithPool $$MUPDF_ARGS + +gdb: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS) $(MUPDF_JAR) + gdb --args $(JAVA) -classpath ../../$(OUT) -Djava.library.path="../../$(OUT)" example.Viewer $$MUPDF_ARGS + +clean: + rm -f $(LIBRARY_JAVA_OBJECTS) $(subst .class,\$$*.class,$(LIBRARY_JAVA_OBJECTS)) + rm -f $(EXAMPLE_JAVA_OBJECTS) $(subst .class,\$$*.class,$(EXAMPLE_JAVA_OBJECTS)) + rm -f ../../$(OUT)/mupdf_native.o + rm -fr ../../$(OUT)/resources + rm -fr ../../$(OUT)/source + rm -fr ../../$(OUT)/thirdparty + rm -f $(MUPDF_JAR) + rm -f $(MUPDF_JAVA) + rm -f $(MUPDF_CORE) + rm -f ../../$(OUT)/*.h + +nuke: clean + $(MAKE) -C ../.. OUT=$(OUT) build=$(build) clean + +.NOTPARALLEL : # disable -j option (it breaks since javac compiles all class files in one command) +.PHONY: .FORCE
