summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitattributes6
-rw-r--r--.gitignore3
-rw-r--r--CHANGES5
-rw-r--r--Makefile402
-rw-r--r--Makerules277
-rw-r--r--Makethird1013
-rw-r--r--platform/java/Android.mk1
-rw-r--r--scripts/freetype/slimftoptions.h1
8 files changed, 642 insertions, 1066 deletions
diff --git a/.gitattributes b/.gitattributes
index ee6c99f4..c297def4 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,11 +1,13 @@
# Macros:
[attr]tabs whitespace=trailing-space,space-before-tab,indent-with-non-tab,tabwidth=4
[attr]spaces whitespace=trailing-space,space-before-tab,tabs-in-indent
+[attr]makefile whitespace=trailing-space,space-before-tab,indent-with-non-tab,tabwidth=8
# Source files:
* text=auto
-Make* tabs
-*.mk tabs
+Make* makefile
+*.mk makefile
+*.make makefile
*.[chm] tabs
*.java tabs
*.xml tabs
diff --git a/.gitignore b/.gitignore
index de324cd5..ef1d8dc9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,8 @@
# Optional thirdparty libraryes
thirdparty/luratech
thirdparty/jpegxr
+thirdparty/mapping-resources-pdf
+thirdparty/cmap-resources
# Generated files:
build
@@ -19,6 +21,7 @@ cscope.*
.gradle
*.xcworkspace
*.xcuserdatad
+user.make
# Test files:
*.pdf
diff --git a/CHANGES b/CHANGES
index 5f61a01b..ab3a742c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,8 @@
+* Build system simplifications:
+ * Auto-generated CMap, ICC, and JS source files are checked in to git.
+ * Embedded CMap resources are now generated by a python script.
+ * Embedded font resources are linked directly if using GNU ld.
+
List of changes in MuPDF 1.13.0
* This is primarily a bugfix release.
diff --git a/Makefile b/Makefile
index a88bb42c..2437f858 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,14 @@
# GNU Makefile
-build ?= release
+-include user.make
-OUT := build/$(build)
+ifndef build
+ build := release
+endif
+
+ifndef OUT
+ OUT := build/$(build)
+endif
default: all
@@ -17,174 +23,116 @@ include Makethird
CFLAGS += $(XCFLAGS) -Iinclude
LIBS += $(XLIBS) -lm
-LIBS += $(FREETYPE_LIBS)
-LIBS += $(HARFBUZZ_LIBS)
-LIBS += $(JBIG2DEC_LIBS)
-LIBS += $(JPEGXR_LIB)
-LIBS += $(LCMS2_LIBS)
-LIBS += $(LIBCRYPTO_LIBS)
-LIBS += $(LIBJPEG_LIBS)
-LIBS += $(LURATECH_LIBS)
-LIBS += $(MUJS_LIBS)
-LIBS += $(OPENJPEG_LIBS)
-LIBS += $(ZLIB_LIBS)
-
-CFLAGS += $(FREETYPE_CFLAGS)
-CFLAGS += $(HARFBUZZ_CFLAGS)
-CFLAGS += $(JBIG2DEC_CFLAGS)
-CFLAGS += $(JPEGXR_CFLAGS)
-CFLAGS += $(LCMS2_CFLAGS)
-CFLAGS += $(LIBCRYPTO_CFLAGS)
-CFLAGS += $(LIBJPEG_CFLAGS)
-CFLAGS += $(LURATECH_CFLAGS)
-CFLAGS += $(MUJS_CFLAGS)
-CFLAGS += $(OPENJPEG_CFLAGS)
-CFLAGS += $(ZLIB_CFLAGS)
-
-ALL_DIR := $(OUT)/generated
-ALL_DIR += $(OUT)/scripts
-ALL_DIR += $(OUT)/source/fitz
-ALL_DIR += $(OUT)/source/pdf
-ALL_DIR += $(OUT)/source/xps
-ALL_DIR += $(OUT)/source/svg
-ALL_DIR += $(OUT)/source/cbz
-ALL_DIR += $(OUT)/source/html
-ALL_DIR += $(OUT)/source/gprf
-ALL_DIR += $(OUT)/source/tools
-ALL_DIR += $(OUT)/source/helpers
-ALL_DIR += $(OUT)/source/helpers/mu-threads
-ALL_DIR += $(OUT)/source/helpers/pkcs7
-ALL_DIR += $(OUT)/platform/x11
-ALL_DIR += $(OUT)/platform/x11/curl
-ALL_DIR += $(OUT)/platform/gl
+ifneq ($(threading),no)
+ ifeq ($(HAVE_PTHREAD),yes)
+ THREADING_CFLAGS := $(PTHREAD_CFLAGS) -DHAVE_PTHREAD
+ THREADING_LIBS := $(PTHREAD_LIBS)
+ endif
+endif
+
+ifeq ($(HAVE_WIN32),yes)
+ WIN32_LIBS := -lcomdlg32 -lgdi32
+ WIN32_LDFLAGS := -Wl,-subsystem,windows
+endif
# --- Commands ---
-ifneq "$(verbose)" "yes"
-QUIET_AR = @ echo ' ' ' ' AR $@ ;
-QUIET_CC = @ echo ' ' ' ' CC $@ ;
-QUIET_CXX = @ echo ' ' ' ' CXX $@ ;
-QUIET_GEN = @ echo ' ' ' ' GEN $@ ;
-QUIET_LINK = @ echo ' ' ' ' LINK $@ ;
-QUIET_MKDIR = @ echo ' ' ' ' MKDIR $@ ;
-QUIET_RM = @ echo ' ' ' ' RM $@ ;
-QUIET_TAGS = @ echo ' ' ' ' TAGS $@ ;
-QUIET_WINDRES = @ echo ' ' ' ' WINDRES $@ ;
-QUIET_OBJCOPY = @ echo ' ' ' ' OBJCOPY $@ ;
+ifneq ($(verbose),yes)
+ QUIET_AR = @ echo " AR $@" ;
+ QUIET_RANLIB = @ echo " RANLIB $@" ;
+ QUIET_CC = @ echo " CC $@" ;
+ QUIET_CXX = @ echo " CXX $@" ;
+ QUIET_GEN = @ echo " GEN $@" ;
+ QUIET_LINK = @ echo " LINK $@" ;
+ QUIET_RM = @ echo " RM $@" ;
+ QUIET_TAGS = @ echo " TAGS $@" ;
+ QUIET_WINDRES = @ echo " WINDRES $@" ;
+ QUIET_OBJCOPY = @ echo " OBJCOPY $@" ;
endif
-CC_CMD = $(QUIET_CC) $(CC) $(CFLAGS) -o $@ -c $<
-CXX_CMD = $(QUIET_CXX) $(CXX) $(filter-out -Wdeclaration-after-statement,$(CFLAGS)) -o $@ -c $<
-AR_CMD = $(QUIET_AR) $(AR) cr $@ $^
-LINK_CMD = $(QUIET_LINK) $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
-MKDIR_CMD = $(QUIET_MKDIR) mkdir -p $@
-RM_CMD = $(QUIET_RM) rm -f $@
+MKTGTDIR = mkdir -p $(dir $@)
+CC_CMD = $(QUIET_CC) $(MKTGTDIR) ; $(CC) $(CFLAGS) -MMD -MP -o $@ -c $<
+CXX_CMD = $(QUIET_CXX) $(MKTGTDIR) ; $(CXX) $(CFLAGS) -MMD -MP -o $@ -c $<
+AR_CMD = $(QUIET_AR) $(MKTGTDIR) ; $(AR) cr $@ $^
+ifdef RANLIB
+ RANLIB_CMD = $(QUIET_RANLIB) $(RANLIB) $@
+endif
+LINK_CMD = $(QUIET_LINK) $(MKTGTDIR) ; $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
TAGS_CMD = $(QUIET_TAGS) ctags $^
-WINDRES_CMD = $(QUIET_WINDRES) $(WINDRES) $< $@
-OBJCOPY_CMD = $(QUIET_OBJCOPY) mkdir -p $(dir $@) ; $(LD) -r -b binary -o $@ $<
+WINDRES_CMD = $(QUIET_WINDRES) $(MKTGTDIR) ; $(WINDRES) $< $@
+OBJCOPY_CMD = $(QUIET_OBJCOPY) $(MKTGTDIR) ; $(LD) -r -b binary -o $@ $<
# --- Rules ---
-$(ALL_DIR) $(OUT) generated :
- $(MKDIR_CMD)
-
$(OUT)/%.a :
- $(RM_CMD)
$(AR_CMD)
$(RANLIB_CMD)
-$(OUT)/%.exe: $(OUT)/%.o | $(ALL_DIR)
+$(OUT)/%.exe: %.c
$(LINK_CMD)
-$(OUT)/source/helpers/mu-threads/%.o : source/helpers/mu-threads/%.c | $(ALL_DIR)
+$(OUT)/source/helpers/mu-threads/%.o : source/helpers/mu-threads/%.c
$(CC_CMD) $(THREADING_CFLAGS)
-$(OUT)/source/helpers/pkcs7/%.o : source/helpers/pkcs7/%.c | $(ALL_DIR)
+$(OUT)/source/helpers/pkcs7/%.o : source/helpers/pkcs7/%.c
$(CC_CMD)
-$(OUT)/source/tools/%.o : source/tools/%.c | $(ALL_DIR)
- $(CC_CMD) $(THREADING_CFLAGS)
+$(OUT)/source/tools/%.o : source/tools/%.c
+ $(CC_CMD) -Wall $(THIRD_CFLAGS) $(THREADING_CFLAGS)
-$(OUT)/generated/%.o : generated/%.c | $(ALL_DIR)
- @ mkdir -p $(dir $@)
+$(OUT)/generated/%.o : generated/%.c
$(CC_CMD) -O0
-$(OUT)/platform/x11/%.o : platform/x11/%.c | $(ALL_DIR)
- $(CC_CMD) $(X11_CFLAGS)
+$(OUT)/platform/x11/%.o : platform/x11/%.c
+ $(CC_CMD) -Wall $(X11_CFLAGS)
-$(OUT)/platform/x11/%.o: platform/x11/%.rc | $(ALL_DIR)
- $(WINDRES_CMD)
+$(OUT)/platform/x11/curl/%.o : platform/x11/%.c
+ $(CC_CMD) -Wall $(X11_CFLAGS) $(CURL_CFLAGS) -DHAVE_CURL
-$(OUT)/platform/x11/curl/%.o : platform/x11/%.c | $(ALL_DIR)
- $(CC_CMD) $(X11_CFLAGS) $(CURL_CFLAGS) -DHAVE_CURL
+$(OUT)/platform/gl/%.o : platform/gl/%.c
+ $(CC_CMD) -Wall $(GLUT_CFLAGS)
-$(OUT)/platform/gl/%.o : platform/gl/%.c | $(ALL_DIR)
- $(CC_CMD) $(GLUT_CFLAGS)
+$(OUT)/source/%.o : source/%.c
+ $(CC_CMD) -Wall -Wdeclaration-after-statement $(THIRD_CFLAGS)
-$(OUT)/%.o : %.c | $(ALL_DIR)
- $(CC_CMD)
+$(OUT)/platform/%.o : platform/%.c
+ $(CC_CMD) -Wall
-$(OUT)/%.o : %.cpp | $(ALL_DIR)
- $(CXX_CMD)
+$(OUT)/%.o: %.rc
+ $(WINDRES_CMD)
.PRECIOUS : $(OUT)/%.o # Keep intermediates from chained rules
+.PRECIOUS : $(OUT)/%.exe # Keep intermediates from chained rules
# --- File lists ---
-FITZ_HDR := include/mupdf/fitz.h $(wildcard include/mupdf/fitz/*.h)
-PDF_HDR := include/mupdf/pdf.h $(wildcard include/mupdf/pdf/*.h)
-THREAD_HDR := include/mupdf/helpers/mu-threads.h
-PKCS7_HDR := $(sort $(wildcard include/mupdf/helpers/pkcs7-*.h))
-
-FITZ_SRC := $(sort $(wildcard source/fitz/*.c))
-PDF_SRC := $(sort $(wildcard source/pdf/*.c))
-XPS_SRC := $(sort $(wildcard source/xps/*.c))
-SVG_SRC := $(sort $(wildcard source/svg/*.c))
-CBZ_SRC := $(sort $(wildcard source/cbz/*.c))
-HTML_SRC := $(sort $(wildcard source/html/*.c))
-GPRF_SRC := $(sort $(wildcard source/gprf/*.c))
-THREAD_SRC := $(sort $(wildcard source/helpers/mu-threads/*.c))
-PKCS7_SRC := $(wildcard source/helpers/pkcs7/pkcs7-check.c)
-ifeq "$(HAVE_LIBCRYPTO)" "yes"
-PKCS7_SRC += $(wildcard source/helpers/pkcs7/pkcs7-openssl.c)
-endif
+THIRD_OBJ := $(THIRD_SRC:%.c=$(OUT)/%.o)
+THIRD_OBJ := $(THIRD_OBJ:%.cc=$(OUT)/%.o)
+
+MUPDF_SRC := $(sort $(wildcard source/fitz/*.c))
+MUPDF_SRC += $(sort $(wildcard source/pdf/*.c))
+MUPDF_SRC += $(sort $(wildcard source/xps/*.c))
+MUPDF_SRC += $(sort $(wildcard source/svg/*.c))
+MUPDF_SRC += $(sort $(wildcard source/html/*.c))
+MUPDF_SRC += $(sort $(wildcard source/cbz/*.c))
+MUPDF_SRC += $(sort $(wildcard source/gprf/*.c))
+
+MUPDF_OBJ := $(MUPDF_SRC:%.c=$(OUT)/%.o)
-FITZ_SRC_HDR := $(wildcard source/fitz/*.h)
-PDF_SRC_HDR := $(wildcard source/pdf/*.h)
-XPS_SRC_HDR := $(wildcard source/xps/*.h)
-SVG_SRC_HDR := $(wildcard source/svg/*.h)
-HTML_SRC_HDR := $(wildcard source/html/*.h)
-GPRF_SRC_HDR := $(wildcard source/gprf/*.h)
-
-FITZ_OBJ := $(FITZ_SRC:%.c=$(OUT)/%.o)
-PDF_OBJ := $(PDF_SRC:%.c=$(OUT)/%.o)
-XPS_OBJ := $(XPS_SRC:%.c=$(OUT)/%.o)
-SVG_OBJ := $(SVG_SRC:%.c=$(OUT)/%.o)
-CBZ_OBJ := $(CBZ_SRC:%.c=$(OUT)/%.o)
-HTML_OBJ := $(HTML_SRC:%.c=$(OUT)/%.o)
-GPRF_OBJ := $(GPRF_SRC:%.c=$(OUT)/%.o)
+THREAD_SRC := source/helpers/mu-threads/mu-threads.c
THREAD_OBJ := $(THREAD_SRC:%.c=$(OUT)/%.o)
+
+PKCS7_SRC := source/helpers/pkcs7/pkcs7-check.c
+ifeq ($(HAVE_LIBCRYPTO),yes)
+ PKCS7_SRC += source/helpers/pkcs7/pkcs7-openssl.c
+endif
PKCS7_OBJ := $(PKCS7_SRC:%.c=$(OUT)/%.o)
-SIGNATURE_OBJ := $(OUT)/platform/x11/pdfapp.o $(OUT)/source/tools/pdfsign.o
-
-$(FITZ_OBJ) : $(FITZ_HDR) $(FITZ_SRC_HDR)
-$(PDF_OBJ) : $(FITZ_HDR) $(PDF_HDR) $(PDF_SRC_HDR)
-$(PDF_OBJ) : $(FITZ_SRC_HDR) # ugh, ugly hack for fitz-imp.h + colorspace-imp.h
-$(XPS_OBJ) : $(FITZ_HDR) $(XPS_HDR) $(XPS_SRC_HDR)
-$(XPS_OBJ) : $(FITZ_SRC_HDR) # ugh, ugly hack for fitz-imp.h
-$(SVG_OBJ) : $(FITZ_HDR) $(SVG_HDR) $(SVG_SRC_HDR)
-$(CBZ_OBJ) : $(FITZ_HDR) $(CBZ_HDR) $(CBZ_SRC_HDR)
-$(HTML_OBJ) : $(FITZ_HDR) $(HTML_HDR) $(HTML_SRC_HDR)
-$(GPRF_OBJ) : $(FITZ_HDR) $(GPRF_HDR) $(GPRF_SRC_HDR)
-$(THREAD_OBJ) : $(THREAD_HDR)
-$(PKCS7_OBJ) : $(FITZ_HDR) $(PDF_HDR) $(PKCS7_HDR)
-$(SIGNATURE_OBJ) : $(PKCS7_HDR)
# --- Generated embedded font files ---
HEXDUMP_EXE := $(OUT)/scripts/hexdump.exe
-FONT_BIN := $(sort $(wildcard resources/fonts/urw/*.cff))
+FONT_BIN := $(sort $(wildcard resources/fonts/urw/*.cff))
FONT_BIN += $(sort $(wildcard resources/fonts/han/*.ttc))
FONT_BIN += $(sort $(wildcard resources/fonts/droid/*.ttf))
FONT_BIN += $(sort $(wildcard resources/fonts/noto/*.otf))
@@ -193,50 +141,46 @@ FONT_BIN += $(sort $(wildcard resources/fonts/sil/*.cff))
FONT_GEN := $(FONT_BIN:%=generated/%.c)
-generated/%.cff.c : %.cff $(HEXDUMP_EXE) ; $(QUIET_GEN) mkdir -p $(dir $@) ; $(HEXDUMP_EXE) -s $@ $<
-generated/%.otf.c : %.otf $(HEXDUMP_EXE) ; $(QUIET_GEN) mkdir -p $(dir $@) ; $(HEXDUMP_EXE) -s $@ $<
-generated/%.ttf.c : %.ttf $(HEXDUMP_EXE) ; $(QUIET_GEN) mkdir -p $(dir $@) ; $(HEXDUMP_EXE) -s $@ $<
-generated/%.ttc.c : %.ttc $(HEXDUMP_EXE) ; $(QUIET_GEN) mkdir -p $(dir $@) ; $(HEXDUMP_EXE) -s $@ $<
+generated/%.cff.c : %.cff $(HEXDUMP_EXE) ; $(QUIET_GEN) $(MKTGTDIR) ; $(HEXDUMP_EXE) -s $@ $<
+generated/%.otf.c : %.otf $(HEXDUMP_EXE) ; $(QUIET_GEN) $(MKTGTDIR) ; $(HEXDUMP_EXE) -s $@ $<
+generated/%.ttf.c : %.ttf $(HEXDUMP_EXE) ; $(QUIET_GEN) $(MKTGTDIR) ; $(HEXDUMP_EXE) -s $@ $<
+generated/%.ttc.c : %.ttc $(HEXDUMP_EXE) ; $(QUIET_GEN) $(MKTGTDIR) ; $(HEXDUMP_EXE) -s $@ $<
-ifeq "$(OS)" "Linux"
- FONT_OBJ := $(FONT_BIN:%=$(OUT)/%.o)
+ifeq ($(OS),Linux)
+ MUPDF_OBJ += $(FONT_BIN:%=$(OUT)/%.o)
$(OUT)/%.cff.o : %.cff ; $(OBJCOPY_CMD)
$(OUT)/%.otf.o : %.otf ; $(OBJCOPY_CMD)
$(OUT)/%.ttf.o : %.ttf ; $(OBJCOPY_CMD)
$(OUT)/%.ttc.o : %.ttc ; $(OBJCOPY_CMD)
else
- FONT_OBJ := $(FONT_GEN:%.c=$(OUT)/%.o)
+ MUPDF_OBJ += $(FONT_GEN:%.c=$(OUT)/%.o)
endif
generate: $(FONT_GEN)
# --- Generated ICC profiles ---
-source/fitz/icc/gray.icc.h: resources/icc/gray.icc
- $(QUIET_GEN) xxd -i $< | sed 's/unsigned/static const unsigned/' > $@
-source/fitz/icc/rgb.icc.h: resources/icc/rgb.icc
- $(QUIET_GEN) xxd -i $< | sed 's/unsigned/static const unsigned/' > $@
-source/fitz/icc/cmyk.icc.h: resources/icc/cmyk.icc
- $(QUIET_GEN) xxd -i $< | sed 's/unsigned/static const unsigned/' > $@
-source/fitz/icc/lab.icc.h: resources/icc/lab.icc
+source/fitz/icc/%.icc.h: resources/icc/%.icc
$(QUIET_GEN) xxd -i $< | sed 's/unsigned/static const unsigned/' > $@
-generate: source/fitz/icc/gray.icc.h source/fitz/icc/rgb.icc.h source/fitz/icc/cmyk.icc.h source/fitz/icc/lab.icc.h
+generate: source/fitz/icc/gray.icc.h
+generate: source/fitz/icc/rgb.icc.h
+generate: source/fitz/icc/cmyk.icc.h
+generate: source/fitz/icc/lab.icc.h
# --- Generated CMap files ---
CMAP_GEN := $(notdir $(sort $(wildcard resources/cmaps/*)))
CMAP_GEN := $(CMAP_GEN:%=source/pdf/cmaps/%.h)
-source/pdf/cmaps/%.h: resources/cmaps/%
- $(MKTGTDIR)
+source/pdf/cmaps/%.h: resources/cmaps/% scripts/cmapdump.py
$(QUIET_GEN) python scripts/cmapdump.py > $@ $<
generate: $(CMAP_GEN)
# --- Generated embedded javascript files ---
-source/pdf/js/util.js.h: source/pdf/js/util.js scripts/jsdump.sed
+source/pdf/js/%.js.h: source/pdf/js/%.js scripts/jsdump.sed
$(QUIET_GEN) sed -f scripts/jsdump.sed < $< > $@
generate: source/pdf/js/util.js.h
@@ -244,34 +188,9 @@ generate: source/pdf/js/util.js.h
# --- Library ---
MUPDF_LIB = $(OUT)/libmupdf.a
-THIRD_LIB = $(OUT)/libmupdfthird.a
-THREAD_LIB = $(OUT)/libmuthreads.a
-PKCS7_LIB = $(OUT)/libmupkcs7.a
-
-MUPDF_OBJ := \
- $(FITZ_OBJ) \
- $(PDF_OBJ) \
- $(CMAP_OBJ) \
- $(FONT_OBJ) \
- $(JAVASCRIPT_OBJ) \
- $(XPS_OBJ) \
- $(SVG_OBJ) \
- $(CBZ_OBJ) \
- $(HTML_OBJ) \
- $(GPRF_OBJ) \
- $(ICC_OBJ)
-
-THIRD_OBJ := \
- $(FREETYPE_OBJ) \
- $(HARFBUZZ_OBJ) \
- $(JBIG2DEC_OBJ) \
- $(JPEGXR_OBJ) \
- $(LIBJPEG_OBJ) \
- $(LURATECH_OBJ) \
- $(MUJS_OBJ) \
- $(OPENJPEG_OBJ) \
- $(ZLIB_OBJ) \
- $(LCMS2_OBJ)
+THIRD_LIB = $(OUT)/libmupdf-third.a
+THREAD_LIB = $(OUT)/libmupdf-threads.a
+PKCS7_LIB = $(OUT)/libmupdf-pkcs7.a
$(MUPDF_LIB) : $(MUPDF_OBJ)
$(THIRD_LIB) : $(THIRD_OBJ)
@@ -280,83 +199,106 @@ $(PKCS7_LIB) : $(PKCS7_OBJ)
INSTALL_LIBS := $(MUPDF_LIB) $(THIRD_LIB)
-# --- Tools and Apps ---
+# --- Main tools and viewers ---
-MUTOOL_EXE := $(OUT)/mutool
-MUTOOL_SRC := source/tools/mutool.c source/tools/muconvert.c source/tools/mudraw.c source/tools/murun.c source/tools/mutrace.c source/tools/cmapdump.c
+MUTOOL_SRC := source/tools/mutool.c
+MUTOOL_SRC += source/tools/muconvert.c
+MUTOOL_SRC += source/tools/mudraw.c
+MUTOOL_SRC += source/tools/murun.c
+MUTOOL_SRC += source/tools/mutrace.c
+MUTOOL_SRC += source/tools/cmapdump.c
MUTOOL_SRC += $(sort $(wildcard source/tools/pdf*.c))
MUTOOL_OBJ := $(MUTOOL_SRC:%.c=$(OUT)/%.o)
-$(MUTOOL_OBJ) : $(FITZ_HDR) $(PDF_HDR)
-$(MUTOOL_EXE) : $(MUTOOL_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(THREAD_LIB) $(PKCS7_LIB)
- $(LINK_CMD) $(THREADING_LIBS)
+MUTOOL_EXE := $(OUT)/mutool
+$(MUTOOL_EXE) : $(MUTOOL_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(PKCS7_LIB) $(THREAD_LIB)
+ $(LINK_CMD) $(THIRD_LIBS) $(THREADING_LIBS)
+INSTALL_APPS += $(MUTOOL_EXE)
+
+ifeq ($(HAVE_GLUT),yes)
+ MUVIEW_GLUT_SRC += $(sort $(wildcard platform/gl/*.c))
+ MUVIEW_GLUT_OBJ := $(MUVIEW_GLUT_SRC:%.c=$(OUT)/%.o)
+ MUVIEW_GLUT_EXE := $(OUT)/mupdf-gl
+ $(MUVIEW_GLUT_EXE) : $(MUVIEW_GLUT_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(GLUT_LIB)
+ $(LINK_CMD) $(THIRD_LIBS) $(WIN32_LDFLAGS) $(GLUT_LIBS)
+ INSTALL_APPS += $(MUVIEW_GLUT_EXE)
+endif
+
+ifeq ($(HAVE_X11),yes)
+ MUVIEW_X11_EXE := $(OUT)/mupdf-x11
+ MUVIEW_X11_OBJ += $(OUT)/platform/x11/pdfapp.o
+ MUVIEW_X11_OBJ += $(OUT)/platform/x11/x11_main.o
+ MUVIEW_X11_OBJ += $(OUT)/platform/x11/x11_image.o
+ $(MUVIEW_X11_EXE) : $(MUVIEW_X11_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(PKCS7_LIB)
+ $(LINK_CMD) $(THIRD_LIBS) $(X11_LIBS)
+ INSTALL_APPS += $(MUVIEW_X11_EXE)
+endif
+
+ifeq ($(HAVE_WIN32),yes)
+ MUVIEW_WIN32_EXE := $(OUT)/mupdf-w32
+ MUVIEW_WIN32_OBJ += $(OUT)/platform/x11/pdfapp.o
+ MUVIEW_WIN32_OBJ += $(OUT)/platform/x11/win_main.o
+ MUVIEW_WIN32_OBJ += $(OUT)/platform/x11/win_res.o
+ $(MUVIEW_WIN32_EXE) : $(MUVIEW_WIN32_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(PKCS7_LIB)
+ $(LINK_CMD) $(THIRD_LIBS) $(WIN32_LDFLAGS) $(WIN32_LIBS)
+ INSTALL_APPS += $(MUVIEW_WIN32_EXE)
+endif
+
+# --- Extra tools and viewers ---
-MURASTER_EXE := $(OUT)/muraster
MURASTER_OBJ := $(OUT)/source/tools/muraster.o
-$(MURASTER_OBJ) : $(FITZ_HDR)
+MURASTER_EXE := $(OUT)/muraster
$(MURASTER_EXE) : $(MURASTER_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(THREAD_LIB)
- $(LINK_CMD) $(THREADING_LIBS)
+ $(LINK_CMD) $(THIRD_LIBS) $(THREADING_LIBS)
+EXTRA_APPS += $(MURASTER_EXE)
-MJSGEN_EXE := $(OUT)/mjsgen
MJSGEN_OBJ := $(OUT)/source/tools/mjsgen.o
-$(MJSGEN_OBJ) : $(FITZ_HDR) $(PDF_HDR)
+MJSGEN_EXE := $(OUT)/mjsgen
$(MJSGEN_EXE) : $(MJSGEN_OBJ) $(MUPDF_LIB) $(THIRD_LIB)
- $(LINK_CMD)
+ $(LINK_CMD) $(THIRD_LIBS)
+EXTRA_APPS += $(MJSGEN_EXE)
-MUJSTEST_EXE := $(OUT)/mujstest
MUJSTEST_OBJ := $(addprefix $(OUT)/platform/x11/, jstest_main.o pdfapp.o)
-$(MUJSTEST_OBJ) : $(FITZ_HDR) $(PDF_HDR)
+MUJSTEST_EXE := $(OUT)/mujstest
$(MUJSTEST_EXE) : $(MUJSTEST_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(PKCS7_LIB)
- $(LINK_CMD)
+ $(LINK_CMD) $(THIRD_LIBS)
+EXTRA_APPS += $(MUJSTEST_EXE)
-ifeq "$(HAVE_X11)" "yes"
-MUVIEW_X11_EXE := $(OUT)/mupdf-x11
-MUVIEW_X11_OBJ := $(addprefix $(OUT)/platform/x11/, x11_main.o x11_image.o pdfapp.o)
-$(MUVIEW_X11_OBJ) : $(FITZ_HDR) $(PDF_HDR)
-$(MUVIEW_X11_EXE) : $(MUVIEW_X11_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(PKCS7_LIB)
- $(LINK_CMD) $(X11_LIBS)
-
-ifeq "$(HAVE_CURL)" "yes"
-MUVIEW_X11_CURL_EXE := $(OUT)/mupdf-x11-curl
-MUVIEW_X11_CURL_OBJ := $(addprefix $(OUT)/platform/x11/curl/, x11_main.o x11_image.o pdfapp.o curl_stream.o)
-$(MUVIEW_X11_CURL_OBJ) : $(FITZ_HDR) $(PDF_HDR)
-$(MUVIEW_X11_CURL_EXE) : $(MUVIEW_X11_CURL_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(CURL_LIB) $(PKCS7_LIB)
- $(LINK_CMD) $(X11_LIBS) $(CURL_LIBS) $(SYS_CURL_DEPS)
+ifeq ($(HAVE_X11),yes)
+ifeq ($(HAVE_CURL),yes)
+ MUVIEW_X11_CURL_EXE := $(OUT)/mupdf-x11-curl
+ MUVIEW_X11_CURL_OBJ += $(OUT)/platform/x11/curl/pdfapp.o
+ MUVIEW_X11_CURL_OBJ += $(OUT)/platform/x11/curl/x11_main.o
+ MUVIEW_X11_CURL_OBJ += $(OUT)/platform/x11/curl/x11_image.o
+ MUVIEW_X11_CURL_OBJ += $(OUT)/platform/x11/curl/curl_stream.o
+ $(MUVIEW_X11_CURL_EXE) : $(MUVIEW_X11_CURL_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(PKCS7_LIB) $(CURL_LIB)
+ $(LINK_CMD) $(THIRD_LIBS) $(X11_LIBS) $(CURL_LIBS)
+ EXTRA_APPS += $(MUVIEW_X11_CURL_EXE)
endif
endif
-ifeq "$(HAVE_GLUT)" "yes"
-MUVIEW_GLUT_EXE := $(OUT)/mupdf-gl
-MUVIEW_GLUT_OBJ := $(addprefix $(OUT)/platform/gl/, gl-font.o gl-input.o gl-main.o)
-$(MUVIEW_GLUT_OBJ) : $(FITZ_HDR) $(PDF_HDR) platform/gl/gl-app.h
-$(MUVIEW_GLUT_EXE) : $(MUVIEW_GLUT_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(GLUT_LIB)
- $(LINK_CMD) $(GLUT_LIB) $(GLUT_LIBS)
-endif
+# --- Generated dependencies ---
-ifeq "$(HAVE_WIN32)" "yes"
-MUVIEW_WIN32_EXE := $(OUT)/mupdf
-MUVIEW_WIN32_OBJ := $(addprefix $(OUT)/platform/x11/, win_main.o pdfapp.o win_res.o)
-$(MUVIEW_WIN32_OBJ) : $(FITZ_HDR) $(PDF_HDR)
-$(MUVIEW_WIN32_EXE) : $(MUVIEW_WIN32_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(PKCS7_LIB)
- $(LINK_CMD) $(WIN32_LIBS)
-endif
+-include $(MUPDF_OBJ:%.o=%.d)
+-include $(PKCS7_OBJ:%.o=%.d)
+-include $(THREAD_OBJ:%.o=%.d)
+-include $(THIRD_OBJ:%.o=%.d)
+-include $(GLUT_OBJ:%.o=%.d)
+-include $(CURL_OBJ:%.o=%.d)
-MUVIEW_EXE := $(MUVIEW_X11_EXE) $(MUVIEW_WIN32_EXE) $(MUVIEW_GLUT_EXE)
-MUVIEW_CURL_EXE := $(MUVIEW_X11_CURL_EXE) $(MUVIEW_WIN32_CURL_EXE)
+-include $(MUTOOL_OBJ:%.o=%.d)
+-include $(MUVIEW_GLUT_OBJ:%.o=%.d)
+-include $(MUVIEW_X11_OBJ:%.o=%.d)
+-include $(MUVIEW_WIN32_OBJ:%.o=%.d)
-INSTALL_APPS := $(MUTOOL_EXE) $(MUVIEW_EXE)
-EXTRA_APPS += $(MURASTER_EXE)
-EXTRA_APPS += $(MUVIEW_CURL_EXE)
-EXTRA_APPS += $(MUJSTEST_EXE)
-EXTRA_APPS += $(MJSGEN_EXE)
+-include $(MURASTER_OBJ:%.o=%.d)
+-include $(MUVIEW_X11_CURL_OBJ:%.o=%.d)
# --- Examples ---
-examples: $(OUT)/example $(OUT)/multi-threaded
-
$(OUT)/example: docs/examples/example.c $(MUPDF_LIB) $(THIRD_LIB)
- $(LINK_CMD) $(CFLAGS)
+ $(LINK_CMD) $(CFLAGS) $(THIRD_LIBS)
$(OUT)/multi-threaded: docs/examples/multi-threaded.c $(MUPDF_LIB) $(THIRD_LIB)
- $(LINK_CMD) $(CFLAGS) -lpthread
+ $(LINK_CMD) $(CFLAGS) $(THIRD_LIBS) -lpthread
# --- Update version string header ---
@@ -370,7 +312,7 @@ version:
%.txt: %.1
nroff -man $< | col -b | expand > $@
-MAN_FILES := $(wildcard docs/man/*.1)
+MAN_FILES := $(sort $(wildcard docs/man/*.1))
TXT_FILES := $(MAN_FILES:%.1=%.txt)
catman: $(TXT_FILES)
diff --git a/Makerules b/Makerules
index 57065f32..068e813f 100644
--- a/Makerules
+++ b/Makerules
@@ -1,145 +1,146 @@
# Configuration for the Makefile
-OS ?= $(shell uname)
+OS := $(shell uname)
OS := $(OS:MINGW%=MINGW)
OS := $(OS:MSYS%=MINGW)
OS := $(OS:Windows_NT=MINGW)
OS := $(OS:Darwin=MACOS)
-HAVE_LIBDL ?= yes
-
-CFLAGS += -Wall -Wdeclaration-after-statement
-
-ifeq (,$(findstring -fembed-bitcode,$(XCFLAGS)))
-# clang does not support these in combination with -fembed-bitcode
-CFLAGS += -ffunction-sections -fdata-sections
+ifeq ($(findstring -fembed-bitcode,$(XCFLAGS)),)
+ # clang does not support these in combination with -fembed-bitcode
+ CFLAGS += -ffunction-sections -fdata-sections
endif
-ifeq "$(OS)" "MACOS"
-LDREMOVEUNREACH := -Wl,-dead_strip
+ifeq ($(OS),MACOS)
+ LDREMOVEUNREACH := -Wl,-dead_strip
else
-LDREMOVEUNREACH := -Wl,--gc-sections
+ LDREMOVEUNREACH := -Wl,--gc-sections
endif
-SANITIZE_FLAGS := -fsanitize=address
+SANITIZE_FLAGS += -fsanitize=address
SANITIZE_FLAGS += -fsanitize=leak
-ifeq "$(build)" "debug"
-CFLAGS += -pipe -g
-LDFLAGS += -g
-else ifeq "$(build)" "release"
-CFLAGS += -pipe -O2 -DNDEBUG -fomit-frame-pointer
-LDFLAGS += $(LDREMOVEUNREACH) -Wl,-s
-else ifeq "$(build)" "small"
-CFLAGS += -pipe -Os -DNDEBUG -fomit-frame-pointer
-LDFLAGS += $(LDREMOVEUNREACH) -Wl,-s
-else ifeq "$(build)" "valgrind"
-CFLAGS += -pipe -O2 -DNDEBUG -DPACIFY_VALGRIND -fno-omit-frame-pointer
-LDFLAGS += $(LDREMOVEUNREACH) -Wl,-s
-else ifeq "$(build)" "sanitize"
-CFLAGS += -pipe -g -fno-omit-frame-pointer $(SANITIZE_FLAGS)
-LDFLAGS += -g $(SANITIZE_FLAGS)
-else ifeq "$(build)" "sanitize-release"
-CFLAGS += -pipe -O2 -DNDEBUG -fno-omit-frame-pointer $(SANITIZE_FLAGS)
-LDFLAGS += $(LDREMOVEUNREACH) -Wl,-s $(SANITIZE_FLAGS)
-else ifeq "$(build)" "profile"
-CFLAGS += -pipe -O2 -DNDEBUG -pg
-LDFLAGS += -pg
-else ifeq "$(build)" "coverage"
-CFLAGS += -pipe -g -pg -fprofile-arcs -ftest-coverage
-LIBS += -lgcov
-else ifeq "$(build)" "native"
-CFLAGS += -pipe -O2 -DNDEBUG -fomit-frame-pointer -march=native -mfpmath=sse
-LDFLAGS += $(LDREMOVEUNREACH) -Wl,-s
-else ifeq "$(build)" "memento"
-CFLAGS += -pipe -g -DMEMENTO
-LDFLAGS += -g -d -rdynamic
-ifeq "$(HAVE_LIBDL)" "yes"
-CFLAGS += -DHAVE_LIBDL
-LIBS += -ldl
-endif
-else ifeq "$(build)" "gperf"
-CFLAGS += -pipe -O2 -DNDEBUG -fomit-frame-pointer -DGPERF
-LIBS += -lprofiler
+ifeq ($(build),debug)
+ CFLAGS += -pipe -g
+ LDFLAGS += -g
+else ifeq ($(build),release)
+ CFLAGS += -pipe -O2 -DNDEBUG -fomit-frame-pointer
+ LDFLAGS += $(LDREMOVEUNREACH) -Wl,-s
+else ifeq ($(build),small)
+ CFLAGS += -pipe -Os -DNDEBUG -fomit-frame-pointer
+ LDFLAGS += $(LDREMOVEUNREACH) -Wl,-s
+else ifeq ($(build),valgrind)
+ CFLAGS += -pipe -O2 -DNDEBUG -DPACIFY_VALGRIND -fno-omit-frame-pointer
+ LDFLAGS += $(LDREMOVEUNREACH) -Wl,-s
+else ifeq ($(build),sanitize)
+ CFLAGS += -pipe -g -fno-omit-frame-pointer $(SANITIZE_FLAGS)
+ LDFLAGS += -g $(SANITIZE_FLAGS)
+else ifeq ($(build),sanitize-release)
+ CFLAGS += -pipe -O2 -DNDEBUG -fno-omit-frame-pointer $(SANITIZE_FLAGS)
+ LDFLAGS += $(LDREMOVEUNREACH) -Wl,-s $(SANITIZE_FLAGS)
+else ifeq ($(build),profile)
+ CFLAGS += -pipe -O2 -DNDEBUG -pg
+ LDFLAGS += -pg
+else ifeq ($(build),coverage)
+ CFLAGS += -pipe -g -pg -fprofile-arcs -ftest-coverage
+ LIBS += -lgcov
+else ifeq ($(build),native)
+ CFLAGS += -pipe -O2 -DNDEBUG -fomit-frame-pointer -march=native -mfpmath=sse
+ LDFLAGS += $(LDREMOVEUNREACH) -Wl,-s
+else ifeq ($(build),memento)
+ CFLAGS += -pipe -g -DMEMENTO
+ LDFLAGS += -g -d -rdynamic
+ ifneq ($(HAVE_LIBDL),no)
+ CFLAGS += -DHAVE_LIBDL
+ LIBS += -ldl
+ endif
+else ifeq ($(build),gperf)
+ CFLAGS += -pipe -O2 -DNDEBUG -fomit-frame-pointer -DGPERF
+ LIBS += -lprofiler
else
-$(error unknown build setting: '$(build)')
-endif
-
-# Windows (MINGW) build doesn't use system libraries.
-ifeq "$(OS)" "MINGW"
-
-WINDRES := windres
-HAVE_X11 ?= no
-HAVE_WIN32 := yes
-
-# Mac OS X doesn't have pkg-config so we hard code paths.
-else ifeq "$(OS)" "MACOS"
-
-HAVE_X11 ?= no
-
-HAVE_GLUT ?= yes
-SYS_GLUT_CFLAGS := -Wno-deprecated-declarations
-SYS_GLUT_LIBS := -framework GLUT -framework OpenGL
-
-CC = xcrun cc
-AR = xcrun ar
-LD = xcrun ld
-RANLIB_CMD = xcrun ranlib $@
-
-# Linux uses pkg-config for system libraries.
-else ifeq "$(OS)" "Linux"
-
-HAVE_PTHREAD := yes
-SYS_PTHREAD_CFLAGS :=
-SYS_PTHREAD_LIBS := -lpthread
-
-HAVE_GLUT := yes
-SYS_GLUT_CFLAGS :=
-SYS_GLUT_LIBS := -lglut -lGL
-
-ifeq "$(shell pkg-config --exists 'libcrypto >= 1.1.0' && echo yes)" "yes"
-HAVE_LIBCRYPTO := yes
-SYS_LIBCRYPTO_CFLAGS := -DHAVE_LIBCRYPTO $(shell pkg-config --cflags libcrypto)
-SYS_LIBCRYPTO_LIBS := $(shell pkg-config --libs libcrypto)
-endif
-
-ifeq "$(shell pkg-config --exists libcurl && echo yes)" "yes"
-HAVE_CURL := yes
-SYS_CURL_CFLAGS := $(shell pkg-config --cflags libcurl)
-SYS_CURL_LIBS := $(shell pkg-config --libs libcurl)
-ifeq "$(shell pkg-config --exists openssl && echo yes)" "yes"
-HAVE_OPENSSL_SSL := yes
-SYS_CURL_CFLAGS += $(shell pkg-config --cflags openssl)
-SYS_CURL_DEPS += $(shell pkg-config --libs openssl)
-endif
-endif
-SYS_CURL_DEPS += -lpthread -lrt
-
-ifeq "$(shell pkg-config --exists x11 xext && echo yes)" "yes"
-HAVE_X11 := yes
-SYS_X11_CFLAGS := $(shell pkg-config --cflags x11 xext)
-SYS_X11_LIBS := $(shell pkg-config --libs x11 xext)
-endif
-
-ifeq "$(shell pkg-config --exists harfbuzz && echo yes)" "yes"
-SYS_HARFBUZZ_CFLAGS := $(shell pkg-config --cflags harfbuzz)
-SYS_HARFBUZZ_LIBS := $(shell pkg-config --libs harfbuzz)
-endif
-
-ifeq "$(shell pkg-config --exists freetype2 && echo yes)" "yes"
-SYS_FREETYPE_CFLAGS := $(shell pkg-config --cflags freetype2)
-SYS_FREETYPE_LIBS := $(shell pkg-config --libs freetype2)
-endif
-
-ifeq "$(shell pkg-config --exists libopenjp2 && echo yes)" "yes"
-SYS_OPENJPEG_CFLAGS := $(shell pkg-config --cflags libopenjp2)
-SYS_OPENJPEG_LIBS := $(shell pkg-config --libs libopenjp2)
+ $(error unknown build setting: '$(build)')
endif
+# Default system libraries
+SYS_FREETYPE_LIBS := -lfreetype2
+SYS_HARFBUZZ_LIBS := -lharfbuzz
SYS_JBIG2DEC_LIBS := -ljbig2dec
+SYS_JPEGXR_LIBS := -ljpegxr
+SYS_LCMS2_LIBS := -llcms2-art
SYS_LIBJPEG_LIBS := -ljpeg
+SYS_MUJS_LIBS := -lmujs
+SYS_OPENJPEG_LIBS := -lopenjp2
SYS_ZLIB_LIBS := -lz
+ifeq ($(OS),MINGW)
+ WINDRES := windres
+ HAVE_WIN32 := yes
+
+else ifeq ($(OS),MACOS)
+ HAVE_GLUT := yes
+ SYS_GLUT_CFLAGS := -Wno-deprecated-declarations
+ SYS_GLUT_LIBS := -framework GLUT -framework OpenGL
+ CC = xcrun cc
+ AR = xcrun ar
+ LD = xcrun ld
+ RANLIB = xcrun ranlib
+
+else ifeq ($(OS),Linux)
+ ifeq ($(shell pkg-config --exists freetype2 && echo yes),yes)
+ SYS_FREETYPE_CFLAGS := $(shell pkg-config --cflags freetype2)
+ SYS_FREETYPE_LIBS := $(shell pkg-config --libs freetype2)
+ endif
+ ifeq ($(shell pkg-config --exists harfbuzz && echo yes),yes)
+ SYS_HARFBUZZ_CFLAGS := $(shell pkg-config --cflags harfbuzz)
+ SYS_HARFBUZZ_LIBS := $(shell pkg-config --libs harfbuzz)
+ endif
+ ifeq ($(shell pkg-config --exists lcms2 && echo yes),yes)
+ SYS_LCMS2_CFLAGS := $(shell pkg-config --cflags lcms2)
+ SYS_LCMS2_LIBS := $(shell pkg-config --libs lcms2)
+ endif
+ ifeq ($(shell pkg-config --exists libjpeg && echo yes),yes)
+ SYS_LIBJPEG_CFLAGS := $(shell pkg-config --cflags libjpeg)
+ SYS_LIBJPEG_LIBS := $(shell pkg-config --libs libjpeg)
+ endif
+ ifeq ($(shell pkg-config --exists libopenjp2 && echo yes),yes)
+ SYS_OPENJPEG_CFLAGS := $(shell pkg-config --cflags libopenjp2)
+ SYS_OPENJPEG_LIBS := $(shell pkg-config --libs libopenjp2)
+ endif
+ ifeq ($(shell pkg-config --exists zlib && echo yes),yes)
+ SYS_ZLIB_CFLAGS := $(shell pkg-config --cflags zlib)
+ SYS_ZLIB_LIBS := $(shell pkg-config --libs zlib)
+ endif
+
+ HAVE_CURL := $(shell pkg-config --exists libcurl && echo yes)
+ ifeq ($(HAVE_CURL),yes)
+ SYS_CURL_CFLAGS := $(shell pkg-config --cflags libcurl)
+ SYS_CURL_LIBS := $(shell pkg-config --libs libcurl)
+ endif
+
+ HAVE_GLUT := yes
+ ifeq ($(HAVE_GLUT),yes)
+ SYS_GLUT_CFLAGS :=
+ SYS_GLUT_LIBS := -lglut -lGL
+ endif
+
+ HAVE_X11 := $(shell pkg-config --exists x11 xext && echo yes)
+ ifeq ($(HAVE_X11),yes)
+ X11_CFLAGS := $(shell pkg-config --cflags x11 xext)
+ X11_LIBS := $(shell pkg-config --libs x11 xext)
+ endif
+
+ HAVE_LIBCRYPTO := $(shell pkg-config --exists 'libcrypto >= 1.1.0' && echo yes)
+ ifeq ($(HAVE_LIBCRYPTO),yes)
+ LIBCRYPTO_CFLAGS := $(shell pkg-config --cflags libcrypto) -DHAVE_LIBCRYPTO
+ LIBCRYPTO_LIBS := $(shell pkg-config --libs libcrypto)
+ endif
+
+ HAVE_PTHREAD := yes
+ ifeq ($(HAVE_PTHREAD),yes)
+ PTHREAD_CFLAGS :=
+ PTHREAD_LIBS := -lpthread
+ endif
+
endif
# The following section is an example of how to simply do cross-compilation
@@ -161,10 +162,9 @@ CXX = arm-none-linux-gnueabi-g++
LD = arm-none-linux-gnueabi-gcc
AR = arm-none-linux-gnueabi-ar
CFLAGS += -O3 -mfpu=neon -mcpu=cortex-a8 -mfloat-abi=softfp -ftree-vectorize -ffast-math -fsingle-precision-constant
-CROSSCOMPILE=yes
HAVE_PTHREAD := yes
-SYS_PTHREAD_CFLAGS :=
-SYS_PTHREAD_LIBS := -lpthread
+PTHREAD_CFLAGS :=
+PTHREAD_LIBS := -lpthread
endif
ifeq "$(OS)" "webos-pre-cross"
@@ -173,7 +173,6 @@ CXX = arm-none-linux-gnueabi-g++
LD = arm-none-linux-gnueabi-gcc
AR = arm-none-linux-gnueabi-ar
CFLAGS += -O3 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -ftree-vectorize -ffast-math -fsingle-precision-constant
-CROSSCOMPILE=yes
endif
ifeq "$(OS)" "webos-pixi-cross"
@@ -182,7 +181,6 @@ CXX = arm-none-linux-gnueabi-g++
LD = arm-none-linux-gnueabi-gcc
AR = arm-none-linux-gnueabi-ar
CFLAGS += -O3 -mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp -ffast-math -fsingle-precision-constant
-CROSSCOMPILE=yes
endif
ifeq "$(OS)" "w64_x86-cross-mingw32"
@@ -191,7 +189,6 @@ CXX = i686-w64-mingw32-g++
LD = i686-w64-mingw32-gcc
AR = i686-w64-mingw32-ar
WINDRES = i686-w64-mingw32-windres
-CROSSCOMPILE=yes
HAVE_WIN32=yes
endif
@@ -201,7 +198,6 @@ CXX = x86_64-w64-mingw32-g++
LD = x86_64-w64-mingw32-gcc
AR = x86_64-w64-mingw32-ar
WINDRES = x86-64-mingw32-windres
-CROSSCOMPILE=yes
HAVE_WIN32=yes
endif
@@ -214,7 +210,6 @@ CXX = $(PNACL_CXX)
LD = $(PNACL_LD)
AR = $(PNACL_LIB)
CFLAGS += -D__NACL__
-CROSSCOMPILE=yes
# Don't install libjpeg, libz, or libfreetype, since these are already
# provided by naclports and the versions compiled here cause problems
@@ -230,12 +225,11 @@ endif
# The following section works for both device and simulator builds.
ifeq "$(OS)" "ios"
-CC = xcrun cc
-CXX = xcrun c++
-AR = xcrun ar
-LD = xcrun ld
-RANLIB_CMD = xcrun ranlib $@
-CROSSCOMPILE=yes
+ CC = xcrun cc
+ CXX = xcrun c++
+ AR = xcrun ar
+ LD = xcrun ld
+ RANLIB = xcrun ranlib
endif
ifeq "$(OS)" "tizen-arm"
@@ -245,7 +239,6 @@ CC = $(TIZEN_TOOLS)gcc $(TIZEN_FLAGS)
CXX = $(TIZEN_TOOLS)g++ $(TIZEN_FLAGS)
AR = $(TIZEN_TOOLS)ar
LD = $(TIZEN_TOOLS)ld $(TIZEN_FLAGS)
-CROSSCOMPILE=yes
endif
ifeq "$(OS)" "tizen-x86"
@@ -255,16 +248,4 @@ CC = $(TIZEN_TOOLS)gcc $(TIZEN_FLAGS)
CXX = $(TIZEN_TOOLS)g++ $(TIZEN_FLAGS)
AR = $(TIZEN_TOOLS)ar $(TIZEN_FLAGS)
LD = $(TIZEN_TOOLS)ld $(TIZEN_FLAGS)
-CROSSCOMPILE=yes
-endif
-
-ifeq "$(HAVE_WIN32)" "yes"
-WIN32_LIBS=-lcomdlg32 -lgdi32
-LDFLAGS += -Wl,-subsystem,windows
-endif
-
-# TODO: If crosscompiling, why not just call "make libs" instead of this exception?
-ifeq "$(CROSSCOMPILE)" "yes"
-HAVE_X11 ?= no
-HAVE_GLUT ?= no
endif
diff --git a/Makethird b/Makethird
index 0ba7c85a..5b310919 100644
--- a/Makethird
+++ b/Makethird
@@ -1,758 +1,399 @@
# GNU Makefile for third party libraries used by MuPDF
-#
-# If thirdparty libraries are supplied, they will be built as
-# static libraries.
-#
-# Use 'git submodule init' and 'git submodule update' to check
-# out the thirdparty libraries from git.
-
-FREETYPE_DIR := thirdparty/freetype
-HARFBUZZ_DIR := thirdparty/harfbuzz
-JBIG2DEC_DIR := thirdparty/jbig2dec
-JPEGXR_DIR := thirdparty/jpegxr
-LCMS2_DIR := thirdparty/lcms2
-LIBJPEG_DIR := thirdparty/libjpeg
-LURATECH_DIR := thirdparty/luratech
-MUJS_DIR := thirdparty/mujs
-OPENJPEG_DIR := thirdparty/openjpeg/src/lib/openjp2
-ZLIB_DIR := thirdparty/zlib
-
-CURL_DIR := thirdparty/curl
-GLUT_DIR := thirdparty/freeglut
-# --- MuJS ---
+ifeq ($(USE_SYSTEM_LIBS),yes)
+ USE_SYSTEM_FREETYPE := yes
+ USE_SYSTEM_HARFBUZZ := yes
+ USE_SYSTEM_JBIG2DEC := yes
+ USE_SYSTEM_JPEGXR := no # not available
+ USE_SYSTEM_LCMS2 := no # need lcms2-art fork
+ USE_SYSTEM_LIBJPEG := yes
+ USE_SYSTEM_MUJS := no # not available
+ USE_SYSTEM_OPENJPEG := yes
+ USE_SYSTEM_ZLIB := yes
+ USE_SYSTEM_GLUT := yes
+ USE_SYSTEM_CURL := yes
+endif
-ifneq "$(wildcard $(MUJS_DIR)/README)" ""
+ifeq ($(OS),MACOS)
+ USE_SYSTEM_GLUT := yes
+endif
-MUJS_OUT := $(OUT)/thirdparty/mujs
-MUJS_SRC := one.c
+# --- FREETYPE 2 ---
-MUJS_OBJ := $(addprefix $(MUJS_OUT)/, $(MUJS_SRC:%.c=%.o))
+ifeq ($(USE_SYSTEM_FREETYPE),yes)
+ FREETYPE_CFLAGS += $(SYS_FREETYPE_CFLAGS)
+ THIRD_CFLAGS += $(FREETYPE_CFLAGS)
+ THIRD_LIBS += $(SYS_FREETYPE_LIBS)
+else
-$(MUJS_OUT)/one.o: $(wildcard $(MUJS_DIR)/js*.c $(MUJS_DIR)/utf*.c $(MUJS_DIR)/regex.c $(MUJS_DIR)/*.h)
+FREETYPE_CFLAGS += -Iscripts/freetype -Ithirdparty/freetype/include
+
+THIRD_SRC += thirdparty/freetype/src/base/ftbase.c
+THIRD_SRC += thirdparty/freetype/src/base/ftbbox.c
+THIRD_SRC += thirdparty/freetype/src/base/ftbitmap.c
+THIRD_SRC += thirdparty/freetype/src/base/ftdebug.c
+THIRD_SRC += thirdparty/freetype/src/base/ftfntfmt.c
+THIRD_SRC += thirdparty/freetype/src/base/ftgasp.c
+THIRD_SRC += thirdparty/freetype/src/base/ftglyph.c
+THIRD_SRC += thirdparty/freetype/src/base/ftinit.c
+THIRD_SRC += thirdparty/freetype/src/base/ftlcdfil.c
+THIRD_SRC += thirdparty/freetype/src/base/ftstroke.c
+THIRD_SRC += thirdparty/freetype/src/base/ftsynth.c
+THIRD_SRC += thirdparty/freetype/src/base/ftsystem.c
+THIRD_SRC += thirdparty/freetype/src/base/fttype1.c
+THIRD_SRC += thirdparty/freetype/src/cff/cff.c
+THIRD_SRC += thirdparty/freetype/src/cid/type1cid.c
+THIRD_SRC += thirdparty/freetype/src/psaux/psaux.c
+THIRD_SRC += thirdparty/freetype/src/pshinter/pshinter.c
+THIRD_SRC += thirdparty/freetype/src/psnames/psnames.c
+THIRD_SRC += thirdparty/freetype/src/raster/raster.c
+THIRD_SRC += thirdparty/freetype/src/sfnt/sfnt.c
+THIRD_SRC += thirdparty/freetype/src/smooth/smooth.c
+THIRD_SRC += thirdparty/freetype/src/truetype/truetype.c
+THIRD_SRC += thirdparty/freetype/src/type1/type1.c
+
+THIRD_CFLAGS += $(FREETYPE_CFLAGS)
+
+$(OUT)/thirdparty/freetype/%.o: thirdparty/freetype/%.c
+ $(CC_CMD) $(FREETYPE_CFLAGS) \
+ -DFT_CONFIG_MODULES_H=\"slimftmodules.h\" \
+ -DFT_CONFIG_OPTIONS_H=\"slimftoptions.h\" \
+ -DFT2_BUILD_LIBRARY
-$(MUJS_OUT):
- $(MKDIR_CMD)
-$(MUJS_OUT)/%.o: $(MUJS_DIR)/%.c | $(MUJS_OUT)
- $(CC_CMD)
+endif
-MUJS_CFLAGS := -I$(MUJS_DIR)
+# --- HARFBUZZ ---
+ifeq ($(USE_SYSTEM_HARFBUZZ),yes)
+ THIRD_CFLAGS += $(SYS_HARFBUZZ_CFLAGS)
+ THIRD_LIBS += $(SYS_HARFBUZZ_LIBS)
else
-MUJS_CFLAGS := -DFZ_ENABLE_JS=0
+THIRD_SRC += thirdparty/harfbuzz/src/hb-blob.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-buffer.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-buffer-serialize.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-common.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-face.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-fallback-shape.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-font.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ft.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-font.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-layout.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-map.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-shape-complex-arabic.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-shape-complex-default.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-shape-complex-hangul.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-shape-complex-hebrew.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-shape-complex-indic-table.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-shape-complex-indic.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-shape-complex-myanmar.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-shape-complex-thai.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-shape-complex-tibetan.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-shape-complex-use-table.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-shape-complex-use.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-shape-fallback.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-shape-normalize.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-shape.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ot-tag.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-set.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-shape-plan.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-shape.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-shaper.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-ucdn.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-unicode.cc
+THIRD_SRC += thirdparty/harfbuzz/src/hb-warning.cc
+
+THIRD_CFLAGS += -Ithirdparty/harfbuzz/src
+
+$(OUT)/thirdparty/harfbuzz/%.o: thirdparty/harfbuzz/%.cc
+ $(CXX_CMD) $(FREETYPE_CFLAGS) \
+ -DHAVE_OT -DHAVE_UCDN -DHB_NO_MT \
+ -Dhb_malloc_impl=fz_hb_malloc \
+ -Dhb_calloc_impl=fz_hb_calloc \
+ -Dhb_free_impl=fz_hb_free \
+ -Dhb_realloc_impl=fz_hb_realloc \
+ -fno-rtti -fno-exceptions -fvisibility-inlines-hidden
endif
-# --- FreeType 2 ---
-
-ifneq "$(wildcard $(FREETYPE_DIR)/README)" ""
-
-FREETYPE_OUT := $(OUT)/thirdparty/freetype
-FREETYPE_SRC := \
- ftbase.c \
- ftbbox.c \
- ftbitmap.c \
- ftdebug.c \
- ftfntfmt.c \
- ftgasp.c \
- ftglyph.c \
- ftinit.c \
- ftstroke.c \
- ftsynth.c \
- ftsystem.c \
- fttype1.c \
- cff.c \
- psaux.c \
- pshinter.c \
- psnames.c \
- raster.c \
- sfnt.c \
- smooth.c \
- truetype.c \
- type1.c \
- type1cid.c \
-
-FREETYPE_OBJ := $(addprefix $(FREETYPE_OUT)/, $(FREETYPE_SRC:%.c=%.o))
-
-$(FREETYPE_OUT):
- $(MKDIR_CMD)
-
-FT_CFLAGS := -Wno-unused-function \
- -DFT2_BUILD_LIBRARY -DDARWIN_NO_CARBON \
- '-DFT_CONFIG_MODULES_H="slimftmodules.h"' \
- '-DFT_CONFIG_OPTIONS_H="slimftoptions.h"'
-
-$(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/base/%.c | $(FREETYPE_OUT)
- $(CC_CMD) $(FT_CFLAGS)
-$(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/cff/%.c | $(FREETYPE_OUT)
- $(CC_CMD) $(FT_CFLAGS)
-$(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/cid/%.c | $(FREETYPE_OUT)
- $(CC_CMD) $(FT_CFLAGS)
-$(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/psaux/%.c | $(FREETYPE_OUT)
- $(CC_CMD) $(FT_CFLAGS)
-$(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/pshinter/%.c | $(FREETYPE_OUT)
- $(CC_CMD) $(FT_CFLAGS)
-$(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/psnames/%.c | $(FREETYPE_OUT)
- $(CC_CMD) $(FT_CFLAGS)
-$(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/raster/%.c | $(FREETYPE_OUT)
- $(CC_CMD) $(FT_CFLAGS)
-$(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/smooth/%.c | $(FREETYPE_OUT)
- $(CC_CMD) $(FT_CFLAGS)
-$(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/sfnt/%.c | $(FREETYPE_OUT)
- $(CC_CMD) $(FT_CFLAGS)
-$(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/truetype/%.c | $(FREETYPE_OUT)
- $(CC_CMD) $(FT_CFLAGS)
-$(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/type1/%.c | $(FREETYPE_OUT)
- $(CC_CMD) $(FT_CFLAGS)
-
-FREETYPE_CFLAGS := -Iscripts/freetype -I$(FREETYPE_DIR)/include
+# --- JPEG-XR ---
+
+ifeq ($(HAVE_JPEGXR),yes)
+ifeq ($(USE_SYSTEM_JPEGXR),yes)
+ THIRD_CFLAGS += $(SYS_JPEGXR_CFLAGS) -DHAVE_JPEGXR
+ THIRD_LIBS += $(SYS_JPEGXR_LIBS)
else
-FREETYPE_CFLAGS := $(SYS_FREETYPE_CFLAGS)
-FREETYPE_LIBS := $(SYS_FREETYPE_LIBS)
+
+THIRD_SRC += thirdparty/jpegxr/Software/algo.c
+THIRD_SRC += thirdparty/jpegxr/Software/api.c
+THIRD_SRC += thirdparty/jpegxr/Software/cr_parse.c
+THIRD_SRC += thirdparty/jpegxr/Software/flags.c
+THIRD_SRC += thirdparty/jpegxr/Software/init.c
+THIRD_SRC += thirdparty/jpegxr/Software/io.c
+THIRD_SRC += thirdparty/jpegxr/Software/jpegxr_pixelformat.c
+THIRD_SRC += thirdparty/jpegxr/Software/r_parse.c
+THIRD_SRC += thirdparty/jpegxr/Software/r_strip.c
+THIRD_SRC += thirdparty/jpegxr/Software/r_tile_frequency.c
+THIRD_SRC += thirdparty/jpegxr/Software/r_tile_spatial.c
+THIRD_SRC += thirdparty/jpegxr/Software/x_strip.c
+
+THIRD_CFLAGS += -Ithirdparty/jpegxr
+THIRD_CFLAGS += -Ithirdparty/jpegxr/Software
+THIRD_CFLAGS += -DHAVE_JPEGXR
+
+$(OUT)/thirdparty/jpegxr/%.o: thirdparty/jpegxr/%.c
+ $(CC_CMD) -Ithirdparty/jpegxr -Ithirdparty/jpegxr/Software -Wno-tautological-compare
+
+endif
endif
-# --- HarfBuzz ---
-
-ifneq "$(wildcard $(HARFBUZZ_DIR)/README)" ""
-
-HARFBUZZ_OUT := $(OUT)/thirdparty/harfbuzz
-HARFBUZZ_SRC := \
- hb-blob.cc \
- hb-buffer.cc \
- hb-buffer-serialize.cc \
- hb-common.cc \
- hb-face.cc \
- hb-fallback-shape.cc \
- hb-font.cc \
- hb-ft.cc \
- hb-ot-font.cc \
- hb-ot-layout.cc \
- hb-ot-map.cc \
- hb-ot-shape-complex-arabic.cc \
- hb-ot-shape-complex-default.cc \
- hb-ot-shape-complex-hangul.cc \
- hb-ot-shape-complex-hebrew.cc \
- hb-ot-shape-complex-indic-table.cc \
- hb-ot-shape-complex-indic.cc \
- hb-ot-shape-complex-myanmar.cc \
- hb-ot-shape-complex-thai.cc \
- hb-ot-shape-complex-tibetan.cc \
- hb-ot-shape-complex-use-table.cc \
- hb-ot-shape-complex-use.cc \
- hb-ot-shape-fallback.cc \
- hb-ot-shape-normalize.cc \
- hb-ot-shape.cc \
- hb-ot-tag.cc \
- hb-set.cc \
- hb-shape-plan.cc \
- hb-shape.cc \
- hb-shaper.cc \
- hb-ucdn.cc \
- hb-unicode.cc \
- hb-warning.cc
-
-# hb-coretext.cc
-# hb-directwrite.cc
-# hb-glib.cc
-# hb-gobject-structs.cc
-# hb-graphite2.cc
-# hb-icu.cc
-# hb-uniscribe.cc
-
-HARFBUZZ_OBJ := $(addprefix $(HARFBUZZ_OUT)/, $(HARFBUZZ_SRC:%.cc=%.o))
-
-$(HARFBUZZ_OUT):
- $(MKDIR_CMD)
-$(HARFBUZZ_OUT)/%.o: $(HARFBUZZ_DIR)/src/%.cc | $(HARFBUZZ_OUT)
- $(CXX_CMD) -DHAVE_OT -DHAVE_UCDN -DHB_NO_MT $(FREETYPE_CFLAGS) \
- -Dhb_malloc_impl=fz_hb_malloc -Dhb_calloc_impl=fz_hb_calloc \
- -Dhb_free_impl=fz_hb_free -Dhb_realloc_impl=fz_hb_realloc \
- -fno-rtti -fno-exceptions -fvisibility-inlines-hidden --std=gnu++0x
-
-HARFBUZZ_CFLAGS := -I$(HARFBUZZ_DIR)/src
+# --- LIBJPEG ---
+
+ifeq ($(USE_SYSTEM_LIBJPEG),yes)
+ THIRD_CFLAGS += $(SYS_LIBJPEG_CFLAGS) -DSHARE_JPEG
+ THIRD_LIBS += $(SYS_LIBJPEG_LIBS)
else
-HARFBUZZ_CFLAGS := $(SYS_HARFBUZZ_CFLAGS)
-HARFBUZZ_LIBS := $(SYS_HARFBUZZ_LIBS)
+
+THIRD_SRC += thirdparty/libjpeg/jaricom.c
+THIRD_SRC += thirdparty/libjpeg/jcomapi.c
+THIRD_SRC += thirdparty/libjpeg/jdapimin.c
+THIRD_SRC += thirdparty/libjpeg/jdapistd.c
+THIRD_SRC += thirdparty/libjpeg/jdarith.c
+THIRD_SRC += thirdparty/libjpeg/jdatadst.c
+THIRD_SRC += thirdparty/libjpeg/jdatasrc.c
+THIRD_SRC += thirdparty/libjpeg/jdcoefct.c
+THIRD_SRC += thirdparty/libjpeg/jdcolor.c
+THIRD_SRC += thirdparty/libjpeg/jddctmgr.c
+THIRD_SRC += thirdparty/libjpeg/jdhuff.c
+THIRD_SRC += thirdparty/libjpeg/jdinput.c
+THIRD_SRC += thirdparty/libjpeg/jdmainct.c
+THIRD_SRC += thirdparty/libjpeg/jdmarker.c
+THIRD_SRC += thirdparty/libjpeg/jdmaster.c
+THIRD_SRC += thirdparty/libjpeg/jdmerge.c
+THIRD_SRC += thirdparty/libjpeg/jdpostct.c
+THIRD_SRC += thirdparty/libjpeg/jdsample.c
+THIRD_SRC += thirdparty/libjpeg/jdtrans.c
+THIRD_SRC += thirdparty/libjpeg/jerror.c
+THIRD_SRC += thirdparty/libjpeg/jfdctflt.c
+THIRD_SRC += thirdparty/libjpeg/jfdctfst.c
+THIRD_SRC += thirdparty/libjpeg/jfdctint.c
+THIRD_SRC += thirdparty/libjpeg/jidctflt.c
+THIRD_SRC += thirdparty/libjpeg/jidctfst.c
+THIRD_SRC += thirdparty/libjpeg/jidctint.c
+THIRD_SRC += thirdparty/libjpeg/jmemmgr.c
+THIRD_SRC += thirdparty/libjpeg/jquant1.c
+THIRD_SRC += thirdparty/libjpeg/jquant2.c
+THIRD_SRC += thirdparty/libjpeg/jutils.c
+
+THIRD_CFLAGS += -Iscripts/libjpeg -Ithirdparty/libjpeg
+
+$(OUT)/thirdparty/libjpeg/%.o: thirdparty/libjpeg/%.c
+ $(CC_CMD) -Iscripts/libjpeg
+
endif
-# --- LURATECH ---
+# --- LCMS2 ---
-ifneq "$(wildcard $(LURATECH_DIR)/ldf_jb2)$(wildcard $(LURATECH_DIR)/lwf_jp2)" ""
-
-LURATECH_OUT := $(OUT)/thirdparty/luratech
-LURATECH_SRC := \
- jb2_adt_cache.c \
- jb2_adt_decoder_halftone_region.c \
- jb2_adt_encoder_text_region.c \
- jb2_adt_huffman_tree.c \
- jb2_adt_symbol_instance.c \
- jb2_adt_context_ref_encoder.c \
- jb2_adt_context_ref_buffer.c \
- jb2_adt_context_ref_encoder.c \
- jb2_adt_mq_encoder.c \
- jb2_adt_decoder_text_region.c \
- jb2_adt_huffman_table_user_defined.c \
- jb2_adt_mmr_tables.c \
- jb2_adt_huffman_table_symbol.c \
- jb2_adt_component.c \
- jb2_adt_context_buffer.c \
- jb2_adt_context_decoder.c \
- jb2_adt_context_encoder.c \
- jb2_adt_context_ref_decoder.c \
- jb2_adt_decoder_collective_bitmap.c \
- jb2_adt_decoder_generic_region.c \
- jb2_adt_decoder_pattern_dict.c \
- jb2_adt_decoder_symbol_dict.c \
- jb2_adt_encoder_symbol_dict.c \
- jb2_adt_external_cache.c \
- jb2_adt_file.c \
- jb2_adt_file_extras.c \
- jb2_adt_handle_document.c \
- jb2_adt_huffman_decoder.c \
- jb2_adt_huffman_encoder.c \
- jb2_adt_huffman_table.c \
- jb2_adt_huffman_table_standard.c \
- jb2_adt_location.c \
- jb2_adt_memory.c \
- jb2_adt_message.c \
- jb2_adt_mmr_decoder.c \
- jb2_adt_mq_decoder.c \
- jb2_adt_mq_encoder.c \
- jb2_adt_mq_state.c \
- jb2_adt_pattern_dict.c \
- jb2_adt_pdf_file.c \
- jb2_adt_pdf_stream.c \
- jb2_adt_props_decompress.c \
- jb2_adt_read_bit_buffer.c \
- jb2_adt_read_data.c \
- jb2_adt_render_common.c \
- jb2_adt_render_generic_region.c \
- jb2_adt_render_halftone_region.c \
- jb2_adt_render_text_region.c \
- jb2_adt_run_array.c \
- jb2_adt_segment_array.c \
- jb2_adt_segment.c \
- jb2_adt_segment_end_of_stripe.c \
- jb2_adt_segment_generic_region.c \
- jb2_adt_segment_halftone_region.c \
- jb2_adt_segment_page_info.c \
- jb2_adt_segment_pattern_dict.c \
- jb2_adt_segment_region.c \
- jb2_adt_segment_symbol_dict.c \
- jb2_adt_segment_table.c \
- jb2_adt_segment_text_region.c \
- jb2_adt_segment_types.c \
- jb2_adt_stack.c \
- jb2_adt_symbol.c \
- jb2_adt_symbol_dict.c \
- jb2_adt_symbol_unify.c \
- jb2_adt_write_bits.c \
- jb2_adt_write_data.c \
- jb2_adt_write_pdf.c \
- jb2_common.c \
- jb2_license_dummy.c \
- jp2_adt_band_array.c \
- jp2_adt_band_buffer.c \
- jp2_adt_block_array.c \
- jp2_adt_cache.c \
- jp2_adt_comp.c \
- jp2_adt_component_array.c \
- jp2_adt_decomp.c \
- jp2_adt_ebcot_decoder.c \
- jp2_adt_external_cache.c \
- jp2_adt_image.c \
- jp2_adt_memory.c \
- jp2_adt_mq_decoder.c \
- jp2_adt_mq_state.c \
- jp2_adt_packet_decoder.c \
- jp2_adt_precinct_array.c \
- jp2_adt_rate.c \
- jp2_adt_rate_list.c \
- jp2_adt_read_bits.c \
- jp2_adt_read_data.c \
- jp2_adt_reader_requirements.c \
- jp2_adt_resolution_array.c \
- jp2_adt_tile_array.c \
- jp2_adt_tlm_marker_array.c \
- jp2_adt_write_data.c \
- jp2_buffer.c \
- jp2c_code_cb.c \
- jp2c_coder.c \
- jp2c_codestream.c \
- jp2c_file_format.c \
- jp2c_format.c \
- jp2c_memory.c \
- jp2_code_cb.c \
- jp2_common.c \
- jp2c_progression.c \
- jp2c_quant.c \
- jp2c_wavelet.c \
- jp2c_wavelet_lifting.c \
- jp2c_weights.c \
- jp2c_write.c \
- jp2d_codestream.c \
- jp2d_decoder.c \
- jp2d_file_format.c \
- jp2d_format.c \
- jp2d_image.c \
- jp2d_memory.c \
- jp2d_partial_decoding.c \
- jp2d_progression.c \
- jp2d_quant.c \
- jp2d_scale.c \
- jp2d_wavelet.c \
- jp2d_wavelet_lifting.c \
- jp2d_write.c \
- jp2_icc.c \
- jp2_license.c \
- jp2_packet.c \
- jp2_tag_tree.c
-
-LURATECH_OBJ := $(addprefix $(LURATECH_OUT)/, $(LURATECH_SRC:%.c=%.o))
-
-$(LURATECH_OUT):
- $(MKDIR_CMD)
-$(LURATECH_OUT)/%.o: $(LURATECH_DIR)/ldf_jb2/source/common/%.c | $(LURATECH_OUT)
- $(CC_CMD) \
- -I$(LURATECH_DIR)/ldf_jb2/source/common \
- -DLINUX
-$(LURATECH_OUT)/%.o: $(LURATECH_DIR)/ldf_jb2/source/compress/%.c | $(LURATECH_OUT)
- $(CC_CMD) \
- -I$(LURATECH_DIR)/ldf_jb2/source/common \
- -DLINUX
-$(LURATECH_OUT)/%.o: $(LURATECH_DIR)/lwf_jp2/library/source/%.c | $(LURATECH_OUT)
- $(CC_CMD) \
- -I$(LURATECH_DIR)/ldf_jb2/source/common \
- -DLINUX
-
-LURATECH_CFLAGS := \
--I$(LURATECH_DIR)/ldf_jb2/source/common \
- -I$(LURATECH_DIR)/ldf_jb2/source/libraries \
- -I$(LURATECH_DIR)/ldf_jb2/source/compress \
- -I$(LURATECH_DIR)/lwf_jp2/library/source \
- -DHAVE_LURATECH
-
-else # --- LURATECH ---
+ifeq ($(USE_SYSTEM_LCMS2),yes)
+ THIRD_CFLAGS += $(SYS_LCMS2_CFLAGS)
+ THIRD_LIBS += $(SYS_LCMS2_CFLAGS)
+else
-# --- JBIG2DEC ---
+THIRD_SRC += $(sort $(wildcard thirdparty/lcms2/src/cms*.c))
-ifneq "$(wildcard $(JBIG2DEC_DIR)/README)" ""
-
-JBIG2DEC_OUT := $(OUT)/thirdparty/jbig2dec
-JBIG2DEC_SRC := \
- jbig2.c \
- jbig2_arith.c \
- jbig2_arith_iaid.c \
- jbig2_arith_int.c \
- jbig2_generic.c \
- jbig2_halftone.c \
- jbig2_huffman.c \
- jbig2_image.c \
- jbig2_metadata.c \
- jbig2_mmr.c \
- jbig2_page.c \
- jbig2_refinement.c \
- jbig2_segment.c \
- jbig2_symbol_dict.c \
- jbig2_text.c
-
-JBIG2DEC_OBJ := $(addprefix $(JBIG2DEC_OUT)/, $(JBIG2DEC_SRC:%.c=%.o))
-
-$(JBIG2DEC_OUT):
- $(MKDIR_CMD)
-$(JBIG2DEC_OUT)/%.o: $(JBIG2DEC_DIR)/%.c | $(JBIG2DEC_OUT)
- $(CC_CMD) -DHAVE_STDINT_H -DJBIG_EXTERNAL_MEMENTO_H=\"mupdf/memento.h\"
+THIRD_CFLAGS += -Ithirdparty/lcms2/include
+
+$(OUT)/thirdparty/lcms2/%.o: thirdparty/lcms2/%.c
+ $(CC_CMD) -Ithirdparty/lcms2/include
-JBIG2DEC_CFLAGS := -I$(JBIG2DEC_DIR)
-else
-JBIG2DEC_CFLAGS := $(SYS_JBIG2DEC_CFLAGS)
-JBIG2DEC_LIBS := $(SYS_JBIG2DEC_LIBS)
endif
-# --- OpenJPEG ---
-
-ifneq "$(wildcard $(OPENJPEG_DIR)/openjpeg.h)" ""
-
-OPENJPEG_OUT := $(OUT)/thirdparty/openjpeg
-OPENJPEG_SRC := \
- bio.c \
- cio.c \
- dwt.c \
- event.c \
- function_list.c \
- image.c \
- invert.c \
- j2k.c \
- jp2.c \
- mct.c \
- mqc.c \
- openjpeg.c \
- pi.c \
- raw.c \
- t1.c \
- t2.c \
- tcd.c \
- tgt.c \
- thread.c
-
-OPENJPEG_OBJ := $(addprefix $(OPENJPEG_OUT)/, $(OPENJPEG_SRC:%.c=%.o))
-
-$(OPENJPEG_OUT):
- $(MKDIR_CMD)
-$(OPENJPEG_OUT)/%.o: $(OPENJPEG_DIR)/%.c | $(OPENJPEG_OUT)
- $(CC_CMD) $(OPENJPEG_CFLAGS)
+# --- MuJS ---
-OPENJPEG_CFLAGS += -I$(OPENJPEG_DIR) -DOPJ_STATIC -DOPJ_HAVE_STDINT_H -DOPJ_HAVE_INTTYPES_H
+ifeq ($(USE_SYSTEM_MUJS),yes)
+ THIRD_CFLAGS += $(SYS_MUJS_CFLAGS)
+ THIRD_LIBS += $(SYS_MUJS_LIBS)
else
-OPENJPEG_CFLAGS := $(SYS_OPENJPEG_CFLAGS)
-OPENJPEG_LIBS := $(SYS_OPENJPEG_LIBS)
+
+THIRD_SRC += thirdparty/mujs/one.c
+THIRD_CFLAGS += -Ithirdparty/mujs
+
+$(OUT)/thirdparty/mujs/%.o: thirdparty/mujs/%.c
+ $(CC_CMD)
+
endif
-endif # --- LURATECH ---
-
-# --- JPEG library from IJG ---
-
-ifneq "$(wildcard $(LIBJPEG_DIR)/README)" ""
-
-LIBJPEG_OUT := $(OUT)/thirdparty/libjpeg
-LIBJPEG_SRC := \
- jaricom.c \
- jcomapi.c \
- jdapimin.c \
- jdapistd.c \
- jdarith.c \
- jdatadst.c \
- jdatasrc.c \
- jdcoefct.c \
- jdcolor.c \
- jddctmgr.c \
- jdhuff.c \
- jdinput.c \
- jdmainct.c \
- jdmarker.c \
- jdmaster.c \
- jdmerge.c \
- jdpostct.c \
- jdsample.c \
- jdtrans.c \
- jerror.c \
- jfdctflt.c \
- jfdctfst.c \
- jfdctint.c \
- jidctflt.c \
- jidctfst.c \
- jidctint.c \
- jmemmgr.c \
- jquant1.c \
- jquant2.c \
- jutils.c \
-
-LIBJPEG_OBJ := $(addprefix $(LIBJPEG_OUT)/, $(LIBJPEG_SRC:%.c=%.o))
-
-$(LIBJPEG_OUT):
- $(MKDIR_CMD)
-$(LIBJPEG_OUT)/%.o: $(LIBJPEG_DIR)/%.c | $(LIBJPEG_OUT)
- $(CC_CMD) -Dmain=xxxmain
-
-LIBJPEG_CFLAGS := -Iscripts/libjpeg -I$(LIBJPEG_DIR)
+# --- ZLIB ---
+
+ifeq ($(USE_SYSTEM_ZLIB),yes)
+ THIRD_CFLAGS += $(SYS_ZLIB_CFLAGS)
+ THIRD_LIBS += $(SYS_ZLIB_LIBS)
else
-LIBJPEG_CFLAGS := $(SYS_LIBJPEG_CFLAGS) -DSHARE_JPEG
-LIBJPEG_LIBS := $(SYS_LIBJPEG_LIBS)
-endif
-# --- jpegxr ---
+THIRD_SRC += thirdparty/zlib/adler32.c
+THIRD_SRC += thirdparty/zlib/compress.c
+THIRD_SRC += thirdparty/zlib/crc32.c
+THIRD_SRC += thirdparty/zlib/deflate.c
+THIRD_SRC += thirdparty/zlib/inffast.c
+THIRD_SRC += thirdparty/zlib/inflate.c
+THIRD_SRC += thirdparty/zlib/inftrees.c
+THIRD_SRC += thirdparty/zlib/trees.c
+THIRD_SRC += thirdparty/zlib/uncompr.c
+THIRD_SRC += thirdparty/zlib/zutil.c
+
+THIRD_CFLAGS += -Ithirdparty/zlib
-ifneq "$(wildcard $(JPEGXR_DIR)/T835E.pdf)" ""
+$(OUT)/thirdparty/zlib/%.o: thirdparty/zlib/%.c
+ $(CC_CMD) -DHAVE_UNISTD_H -DHAVE_STDARG_H
-JPEGXR_OUT := $(OUT)/thirdparty/jpegxr
-JPEGXR_SRC := \
- algo.c \
- api.c \
- flags.c \
- init.c \
- io.c \
- cr_parse.c \
- jpegxr_pixelformat.c \
- r_parse.c \
- r_strip.c \
- r_tile_spatial.c \
- r_tile_frequency.c \
- x_strip.c
+endif
-JPEGXR_OBJ := $(addprefix $(JPEGXR_OUT)/, $(JPEGXR_SRC:%.c=%.o))
+# --- LURATECH ---
-$(JPEGXR_OUT):
- $(MKDIR_CMD)
+ifeq ($(HAVE_LURATECH),yes)
-$(JPEGXR_OUT)/%.o: $(JPEGXR_DIR)/Software/%.c | $(JPEGXR_OUT)
- $(CC_CMD) $(JPEGXR_CFLAGS)
+THIRD_SRC += $(sort $(wildcard thirdparty/luratech/ldf_jb2/source/common/*.c))
+THIRD_SRC += $(sort $(wildcard thirdparty/luratech/ldf_jb2/source/compress/*.c))
+THIRD_SRC += $(sort $(wildcard thirdparty/luratech/lwf_jp2/library/source/*.c))
-JPEGXR_CFLAGS := \
- -I$(JPEGXR_DIR) \
- -I$(JPEGXR_DIR)/Software \
- -DHAVE_JPEGXR
+LURATECH_CFLAGS += -Ithirdparty/luratech/ldf_jb2/source/libraries
+LURATECH_CFLAGS += -Ithirdparty/luratech/ldf_jb2/source/compress
+LURATECH_CFLAGS += -Ithirdparty/luratech/ldf_jb2/source/common
+LURATECH_CFLAGS += -Ithirdparty/luratech/lwf_jp2/library/source
-endif
+THIRD_CFLAGS += $(LURATECH_CFLAGS) -DHAVE_LURATECH=1
-# --- ZLIB ---
+$(OUT)/thirdparty/luratech/%.o: thirdparty/luratech/%.c
+ $(CC_CMD) -DLINUX $(LURATECH_CFLAGS) -Wno-tautological-compare -Wno-absolute-value
-ifneq "$(wildcard $(ZLIB_DIR)/README)" ""
-
-ZLIB_OUT := $(OUT)/thirdparty/zlib
-ZLIB_SRC := \
- adler32.c \
- compress.c \
- crc32.c \
- deflate.c \
- inffast.c \
- inflate.c \
- inftrees.c \
- trees.c \
- uncompr.c \
- zutil.c \
- gzlib.c \
- gzwrite.c \
- gzclose.c \
- gzread.c \
-
-ZLIB_OBJ := $(addprefix $(ZLIB_OUT)/, $(ZLIB_SRC:%.c=%.o))
-
-$(ZLIB_OUT):
- $(MKDIR_CMD)
-$(ZLIB_OUT)/%.o: $(ZLIB_DIR)/%.c | $(ZLIB_OUT)
- $(CC_CMD) -Dverbose=-1 -DHAVE_UNISTD_H -DHAVE_STDARG_H
-
-ZLIB_CFLAGS := -I$(ZLIB_DIR)
-else
-ZLIB_CFLAGS := $(SYS_ZLIB_CFLAGS)
-ZLIB_LIBS := $(SYS_ZLIB_LIBS)
-endif
+else # HAVE_LURATECH
-# --- LCMS2 ---
+# --- JBIG2DEC ---
-ifneq "$(wildcard $(LCMS2_DIR)/INSTALL)" ""
-
-LCMS2_OUT := $(OUT)/lcms2
-LCMS2_SRC := \
- cmsalpha.c \
- cmscam02.c \
- cmscgats.c \
- cmscnvrt.c \
- cmserr.c \
- cmsgamma.c \
- cmsgmt.c \
- cmshalf.c \
- cmsintrp.c \
- cmsio0.c \
- cmsio1.c \
- cmslut.c \
- cmsmd5.c \
- cmsmtrx.c \
- cmsnamed.c \
- cmsopt.c \
- cmspack.c \
- cmspcs.c \
- cmsplugin.c \
- cmsps2.c \
- cmssamp.c \
- cmssm.c \
- cmstypes.c \
- cmsvirt.c \
- cmswtpnt.c \
- cmsxform.c \
-
-LCMS2_OBJ := $(addprefix $(LCMS2_OUT)/, $(LCMS2_SRC:%.c=%.o))
-
-$(LCMS2_OUT):
- $(MKDIR_CMD)
-$(LCMS2_OUT)/%.o: $(LCMS2_DIR)/src/%.c | $(LCMS2_OUT)
- $(CC_CMD) -I$(LCMS2_DIR)/include
-
-LCMS2_CFLAGS := -I$(LCMS2_DIR)/include
+ifeq ($(USE_SYSTEM_JBIG2DEC),yes)
+ THIRD_CFLAGS += $(SYS_JBIG2DEC_CFLAGS)
+ THIRD_LIBS += $(SYS_JBIG2DEC_LIBS)
else
-LCMS2_CFLAGS := -DNO_ICC
-endif
-# --- cURL ---
-
-ifneq "$(wildcard $(CURL_DIR)/README)" ""
+THIRD_SRC += thirdparty/jbig2dec/jbig2.c
+THIRD_SRC += thirdparty/jbig2dec/jbig2_arith.c
+THIRD_SRC += thirdparty/jbig2dec/jbig2_arith_iaid.c
+THIRD_SRC += thirdparty/jbig2dec/jbig2_arith_int.c
+THIRD_SRC += thirdparty/jbig2dec/jbig2_generic.c
+THIRD_SRC += thirdparty/jbig2dec/jbig2_halftone.c
+THIRD_SRC += thirdparty/jbig2dec/jbig2_huffman.c
+THIRD_SRC += thirdparty/jbig2dec/jbig2_image.c
+THIRD_SRC += thirdparty/jbig2dec/jbig2_metadata.c
+THIRD_SRC += thirdparty/jbig2dec/jbig2_mmr.c
+THIRD_SRC += thirdparty/jbig2dec/jbig2_page.c
+THIRD_SRC += thirdparty/jbig2dec/jbig2_refinement.c
+THIRD_SRC += thirdparty/jbig2dec/jbig2_segment.c
+THIRD_SRC += thirdparty/jbig2dec/jbig2_symbol_dict.c
+THIRD_SRC += thirdparty/jbig2dec/jbig2_text.c
+
+THIRD_CFLAGS += -Ithirdparty/jbig2dec
+
+$(OUT)/thirdparty/jbig2dec/%.o: thirdparty/jbig2dec/%.c
+ $(CC_CMD) -DHAVE_STDINT_H -DJBIG_EXTERNAL_MEMENTO_H=\"mupdf/memento.h\"
-CURL_LIB := $(OUT)/libcurl.a
-CURL_OUT := $(OUT)/thirdparty/curl
-CURL_SRC := \
- base64.c \
- conncache.c \
- connect.c \
- content_encoding.c \
- curl_addrinfo.c \
- dotdot.c \
- easy.c \
- escape.c \
- fileinfo.c \
- formdata.c \
- getenv.c \
- getinfo.c \
- hash.c \
- hostcheck.c \
- hostip4.c \
- hostip.c \
- hostsyn.c \
- http.c \
- http_chunks.c \
- if2ip.c \
- llist.c \
- mprintf.c \
- multi.c \
- netrc.c \
- nonblock.c \
- openssl.c \
- parsedate.c \
- pipeline.c \
- progress.c \
- select.c \
- sendf.c \
- share.c \
- slist.c \
- speedcheck.c \
- splay.c \
- strcase.c \
- strdup.c \
- strerror.c \
- timeval.c \
- transfer.c \
- url.c \
- version.c \
- vtls.c \
- warnless.c \
- wildcard.c
-
-$(CURL_LIB): $(addprefix $(CURL_OUT)/, $(CURL_SRC:%.c=%.o))
-
-$(CURL_OUT):
- $(MKDIR_CMD)
-
-CRL_CFLAGS := -DHAVE_CONFIG_H -DBUILDING_LIBCURL -DCURL_STATICLIB \
- -DCURL_DISABLE_LDAP -I$(CURL_DIR)/include -I$(CURL_DIR)/lib
-ifeq "$(HAVE_OPENSSL_SSL)" "yes"
-CRL_CFLAGS += -DUSE_OPENSSL
endif
-$(CURL_OUT)/%.o: $(CURL_DIR)/lib/%.c | $(CURL_OUT)
- $(CC_CMD) $(CRL_CFLAGS)
+# --- OPENJPEG ---
-$(CURL_OUT)/%.o: $(CURL_DIR)/lib/vtls/%.c | $(CURL_OUT)
- $(CC_CMD) $(CRL_CFLAGS)
-
-CURL_CFLAGS := -I$(CURL_DIR)/include
-CURL_LIBS := $(SYS_CURL_DEPS)
+ifeq ($(USE_SYSTEM_OPENJPEG),yes)
+ THIRD_CFLAGS += $(SYS_OPENJPEG_CFLAGS)
+ THIRD_LIBS += $(SYS_OPENJPEG_LIBS)
+else
-HAVE_CURL := yes
+OPENJPEG_CFLAGS += -Ithirdparty/openjpeg/src/lib/openjp2
+OPENJPEG_CFLAGS += -DOPJ_STATIC
+OPENJPEG_CFLAGS += -DOPJ_HAVE_STDINT_H -DOPJ_HAVE_INTTYPES_H
+
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/bio.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/cio.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/dwt.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/event.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/function_list.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/image.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/invert.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/j2k.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/jp2.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/mct.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/mqc.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/openjpeg.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/pi.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/raw.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/t1.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/t2.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/tcd.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/tgt.c
+THIRD_SRC += thirdparty/openjpeg/src/lib/openjp2/thread.c
+
+THIRD_CFLAGS += $(OPENJPEG_CFLAGS)
+
+$(OUT)/thirdparty/openjpeg/%.o: thirdparty/openjpeg/%.c
+ $(CC_CMD) $(OPENJPEG_CFLAGS)
-else ifeq "$(HAVE_CURL)" "yes"
-CURL_CFLAGS := $(SYS_CURL_CFLAGS)
-CURL_LIBS := $(SYS_CURL_LIBS)
endif
-# --- FreeGLUT ---
+endif # HAVE_LURATECH
-ifneq "$(wildcard $(GLUT_DIR)/README)" ""
+# --- FreeGLUT ---
-ifeq "$(OS)" "MACOS"
-GLUT_CFLAGS := $(SYS_GLUT_CFLAGS)
-GLUT_LIBS := $(SYS_GLUT_LIBS)
+ifeq ($(USE_SYSTEM_GLUT),yes)
+ GLUT_CFLAGS := $(SYS_GLUT_CFLAGS)
+ GLUT_LIBS := $(SYS_GLUT_LIBS)
else
-HAVE_GLUT := yes
+GLUT_SRC += $(sort $(wildcard thirdparty/freeglut/src/fg_*.c))
+GLUT_SRC += $(sort $(wildcard thirdparty/freeglut/src/x11/*.c))
+
+GLUT_OBJ := $(GLUT_SRC:%.c=$(OUT)/%.o)
+
+LOCAL_GLUT_CFLAGS += -Ithirdparty/freeglut/include
+LOCAL_GLUT_CFLAGS += -Ithirdparty/freeglut/src
+LOCAL_GLUT_CFLAGS += -DHAVE_UNISTD_H -DHAVE_STDINT_H -DHAVE_X11_EXTENSIONS_XRANDR_H
GLUT_LIB := $(OUT)/libfreeglut.a
-GLUT_OUT := $(OUT)/thirdparty/freeglut
-GLUT_SRC := \
- fg_callbacks.c \
- fg_cursor.c \
- fg_display.c \
- fg_ext.c \
- fg_font.c \
- fg_font_data.c \
- fg_gamemode.c \
- fg_geometry.c \
- fg_gl2.c \
- fg_init.c \
- fg_input_devices.c \
- fg_joystick.c \
- fg_main.c \
- fg_menu.c \
- fg_misc.c \
- fg_overlay.c \
- fg_spaceball.c \
- fg_state.c \
- fg_stroke_mono_roman.c \
- fg_stroke_roman.c \
- fg_structure.c \
- fg_teapot.c \
- fg_videoresize.c \
- fg_window.c
-
-GLUT_X11_SRC := \
- fg_cursor_x11.c \
- fg_display_x11_glx.c \
- fg_ext_x11.c \
- fg_gamemode_x11.c \
- fg_glutfont_definitions_x11.c \
- fg_init_x11.c \
- fg_input_devices_x11.c \
- fg_joystick_x11.c \
- fg_main_x11.c \
- fg_menu_x11.c \
- fg_spaceball_x11.c \
- fg_state_x11.c \
- fg_state_x11_glx.c \
- fg_structure_x11.c \
- fg_window_x11.c \
- fg_window_x11_glx.c \
- fg_xinput_x11.c
-
-GLUT_OBJ := $(addprefix $(GLUT_OUT)/, $(GLUT_SRC:%.c=%.o))
-GLUT_OBJ += $(addprefix $(GLUT_OUT)/, $(GLUT_X11_SRC:%.c=%.o))
$(GLUT_LIB): $(GLUT_OBJ)
-$(GLUT_OUT):
- $(MKDIR_CMD)
-$(GLUT_OUT)/%.o: $(GLUT_DIR)/src/%.c | $(GLUT_OUT)
- $(CC_CMD) -I$(GLUT_DIR)/include -I$(GLUT_DIR)/src -Wno-unused-function -Wno-unused-const-variable \
- -DHAVE_UNISTD_H -DHAVE_STDINT_H -DHAVE_X11_EXTENSIONS_XRANDR_H
-$(GLUT_OUT)/%.o: $(GLUT_DIR)/src/x11/%.c | $(GLUT_OUT)
- $(CC_CMD) -I$(GLUT_DIR)/include -I$(GLUT_DIR)/src -Wno-unused-function \
- -DHAVE_UNISTD_H -DHAVE_STDINT_H -DHAVE_X11_EXTENSIONS_XRANDR_H
-
-GLUT_CFLAGS := -I$(GLUT_DIR)/include
+
+$(OUT)/thirdparty/freeglut/%.o: thirdparty/freeglut/%.c
+ $(CC_CMD) $(LOCAL_GLUT_CFLAGS)
+
+GLUT_CFLAGS := -Ithirdparty/freeglut/include
GLUT_LIBS := -lGL -lX11 -lXrandr
endif
+
+# --- cURL ---
+
+ifeq ($(USE_SYSTEM_CURL),yes)
+ CURL_CFLAGS := $(SYS_CURL_CFLAGS)
+ CURL_LIBS := $(SYS_CURL_LIBS)
else
-GLUT_CFLAGS := $(SYS_GLUT_CFLAGS)
-GLUT_LIBS := $(SYS_GLUT_LIBS)
-endif
-# --- X11 ---
+CURL_SRC += $(sort $(wildcard thirdparty/curl/lib/*.c))
+CURL_SRC += $(sort $(wildcard thirdparty/curl/lib/vauth/*.c))
+CURL_SRC += $(sort $(wildcard thirdparty/curl/lib/vtls/*.c))
-ifeq "$(HAVE_X11)" "yes"
-X11_CFLAGS := $(SYS_X11_CFLAGS)
-X11_LIBS := $(SYS_X11_LIBS)
-endif
+CURL_OBJ := $(CURL_SRC:%.c=$(OUT)/%.o)
-# --- OpenSSL ---
+LOCAL_CURL_CFLAGS += -DHAVE_CONFIG_H
+LOCAL_CURL_CFLAGS += -DBUILDING_LIBCURL
+LOCAL_CURL_CFLAGS += -DCURL_STATICLIB
+LOCAL_CURL_CFLAGS += -DCURL_DISABLE_LDAP
+LOCAL_CURL_CFLAGS += -Ithirdparty/curl/include
+LOCAL_CURL_CFLAGS += -Ithirdparty/curl/lib
-ifeq "$(HAVE_LIBCRYPTO)" "yes"
-LIBCRYPTO_CFLAGS := $(SYS_LIBCRYPTO_CFLAGS)
-LIBCRYPTO_LIBS := $(SYS_LIBCRYPTO_LIBS)
-endif
+CURL_LIB := $(OUT)/libcurl.a
-# --- pthread ---
+$(CURL_LIB): $(CURL_OBJ)
+
+$(OUT)/thirdparty/curl/%.o: thirdparty/curl/%.c
+ $(CC_CMD) $(LOCAL_CURL_CFLAGS)
+
+CURL_CFLAGS := -Ithirdparty/curl/include
+CURL_LIBS := -lpthread
-ifneq "$(threading)" "no"
-ifeq "$(HAVE_PTHREAD)" "yes"
-THREADING_CFLAGS := $(SYS_PTHREAD_CFLAGS) -DHAVE_PTHREAD
-THREADING_LIBS := $(SYS_PTHREAD_LIBS)
-endif
endif
diff --git a/platform/java/Android.mk b/platform/java/Android.mk
index 1d3c1a68..d29c07da 100644
--- a/platform/java/Android.mk
+++ b/platform/java/Android.mk
@@ -129,6 +129,7 @@ LOCAL_SRC_FILES += \
$(MUPDF_PATH)/thirdparty/freetype/src/base/ftgasp.c \
$(MUPDF_PATH)/thirdparty/freetype/src/base/ftglyph.c \
$(MUPDF_PATH)/thirdparty/freetype/src/base/ftinit.c \
+ $(MUPDF_PATH)/thirdparty/freetype/src/base/ftlcdfil.c \
$(MUPDF_PATH)/thirdparty/freetype/src/base/ftstroke.c \
$(MUPDF_PATH)/thirdparty/freetype/src/base/ftsynth.c \
$(MUPDF_PATH)/thirdparty/freetype/src/base/ftsystem.c \
diff --git a/scripts/freetype/slimftoptions.h b/scripts/freetype/slimftoptions.h
index b51f4b40..395eb1dd 100644
--- a/scripts/freetype/slimftoptions.h
+++ b/scripts/freetype/slimftoptions.h
@@ -9,6 +9,7 @@
#undef FT_CONFIG_OPTION_USE_HARFBUZZ
#undef FT_CONFIG_OPTION_MAC_FONTS
#undef FT_CONFIG_OPTION_INCREMENTAL
+#undef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
#undef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
#undef TT_CONFIG_OPTION_SFNT_NAMES