93 lines
2.7 KiB
Makefile
93 lines
2.7 KiB
Makefile
OS ?= $(shell uname)
|
|
|
|
JAVA := java
|
|
JAVAC := javac
|
|
|
|
ifeq "$(OS)" "Darwin"
|
|
MUPDF_JAVA := libmupdf_java64.jnilib
|
|
JAVA_CFLAGS := \
|
|
-I /Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/include \
|
|
-I /Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/include/darwin
|
|
JAVA_LDFLAGS :=
|
|
|
|
else
|
|
|
|
BITS := $(shell getconf LONG_BIT)
|
|
|
|
JAVA_HOME ?= /usr/lib/jvm/default-java
|
|
|
|
MUPDF_JAVA := 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
|
|
endif
|
|
|
|
default: $(MUPDF_JAVA) libmupdf.jar
|
|
|
|
MUPDF_CORE := ../../build/java/libmupdf.a ../../build/java/libmupdf-third.a
|
|
ifeq "$(OS)" "Linux"
|
|
$(MUPDF_CORE) : .FORCE
|
|
$(MAKE) -C ../.. OUT=build/java XCFLAGS=-fPIC USE_SYSTEM_FREETYPE=yes USE_SYSTEM_ZLIB=yes libs
|
|
else
|
|
$(MUPDF_CORE) : .FORCE
|
|
$(MAKE) -C ../.. OUT=build/java XCFLAGS=-fPIC libs
|
|
endif
|
|
|
|
LIBRARY_JAVA_SOURCES := $(sort $(wildcard src/com/artifex/mupdf/fitz/*.java))
|
|
LIBRARY_JAVA_OBJECTS := $(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)
|
|
$(JAVAC) $(JAVAC_FLAGS) -h ../../build/java/ $^
|
|
|
|
EXAMPLE_JAVA_SOURCES := $(sort $(wildcard example/*.java))
|
|
EXAMPLE_JAVA_OBJECTS := $(EXAMPLE_JAVA_SOURCES:%.java=%.class)
|
|
|
|
$(EXAMPLE_JAVA_OBJECTS) : $(EXAMPLE_JAVA_SOURCES)
|
|
$(JAVAC) $(JAVAC_FLAGS) -classpath .:src $^
|
|
|
|
libmupdf.jar : $(LIBRARY_JAVA_OBJECTS)
|
|
rm -f $@
|
|
jar cf $@ $^
|
|
|
|
mupdf_native.h : $(LIBRARY_JAVA_OBJECTS)
|
|
rm -f $@
|
|
cat $(sort $(wildcard ../../build/java/*.h)) > mupdf_native.h
|
|
|
|
mupdf_native.o : mupdf_native.c mupdf_native.h $(MUPDF_CORE)
|
|
$(CC) -g -o $@ -c $< -fPIC -Wall -Wextra -Wno-unused-parameter -I ../../include \
|
|
$(JAVA_CFLAGS)
|
|
|
|
$(MUPDF_JAVA) : mupdf_native.o $(MUPDF_CORE)
|
|
$(CC) -shared $(JAVA_LDFLAGS) -o $(MUPDF_JAVA) $^ $(JAVA_LIBS)
|
|
|
|
run: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS)
|
|
LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:. $(JAVA) -classpath .:src example.Viewer
|
|
|
|
gdb: $(MUPDF_JAVA) $(EXAMPLE_JAVA_OBJECTS)
|
|
LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:. gdb --args $(JAVA) -classpath .:src example.Viewer
|
|
|
|
clean:
|
|
rm -f src/com/artifex/mupdf/fitz/*.class
|
|
rm -f example/*.class
|
|
rm -f mupdf_native.o
|
|
rm -f libmupdf.jar
|
|
rm -f $(MUPDF_JAVA)
|
|
rm -f ../../build/java/*.h
|
|
|
|
nuke: clean
|
|
$(MAKE) -C ../.. OUT=build/java clean
|
|
|
|
.NOTPARALLEL : # disable -j option (it breaks since javac compiles all class files in one command)
|
|
.PHONY: .FORCE
|