# GNU Makefile for third party libraries used by MuPDF
ifeq ($(USE_SYSTEM_LIBS),yes)
USE_SYSTEM_FREETYPE := yes
USE_SYSTEM_GUMBO := yes
USE_SYSTEM_HARFBUZZ := yes
USE_SYSTEM_JBIG2DEC := yes
USE_SYSTEM_JPEGXR := no # not available
USE_SYSTEM_LCMS2 := no # lcms2mt is strongly preferred
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
USE_SYSTEM_LEPTONICA := yes
USE_SYSTEM_TESSERACT := yes
endif
ifeq ($(OS),MACOS)
USE_SYSTEM_GLUT := yes
endif
ifeq ($(OS),Linux)
USE_SYSTEM_CURL := yes
endif
# Use of Tesseract is optional:
ifeq ($(USE_TESSERACT),yes)
ifeq ($(USE_SYSTEM_LEPTONICA),yes)
HAVE_LEPTONICA := $(HAVE_SYS_LEPTONICA)
else
ifneq ($(wildcard thirdparty/leptonica/src/*),)
HAVE_LEPTONICA := yes
endif
endif
ifeq ($(USE_SYSTEM_TESSERACT),yes)
HAVE_TESSERACT := $(HAVE_SYS_TESSERACT)
else
ifneq ($(wildcard thirdparty/tesseract/src/*),)
HAVE_TESSERACT := yes
endif
endif
endif
# Use of Extract is optional:
ifeq ($(USE_EXTRACT),yes)
ifneq ($(wildcard thirdparty/extract/src/*),)
HAVE_EXTRACT := yes
endif
endif
# --- Include source file lists ---
include Makelists
# --- FREETYPE 2 ---
ifeq ($(USE_SYSTEM_FREETYPE),yes)
THIRD_CFLAGS += $(SYS_FREETYPE_CFLAGS)
THIRD_LIBS += $(SYS_FREETYPE_LIBS)
else
THIRD_CFLAGS += $(FREETYPE_CFLAGS)
THIRD_LIBS += $(FREETYPE_LIBS)
THIRD_SRC += $(FREETYPE_SRC)
$(OUT)/thirdparty/freetype/%.o: thirdparty/freetype/%.c
$(CC_CMD) $(LIB_CFLAGS) $(FREETYPE_CFLAGS) $(FREETYPE_BUILD_CFLAGS)
endif
# --- GUMBO (HTML5 parser) ---
ifeq ($(USE_SYSTEM_GUMBO),yes)
THIRD_CFLAGS += $(SYS_GUMBO_CFLAGS)
THIRD_LIBS += $(SYS_GUMBO_LIBS)
else
THIRD_CFLAGS += $(GUMBO_CFLAGS)
THIRD_LIBS += $(GUMBO_LIBS)
THIRD_SRC += $(GUMBO_SRC)
$(OUT)/thirdparty/gumbo-parser/%.o: thirdparty/gumbo-parser/%.c
$(CC_CMD) $(LIB_CFLAGS) $(GUMBO_CFLAGS) $(GUMBO_BUILD_CFLAGS)
endif
# --- HARFBUZZ ---
ifeq ($(USE_SYSTEM_HARFBUZZ),yes)
THIRD_CFLAGS += $(SYS_HARFBUZZ_CFLAGS)
THIRD_LIBS += $(SYS_HARFBUZZ_LIBS)
else
THIRD_CFLAGS += $(HARFBUZZ_CFLAGS)
THIRD_LIBS += $(HARFBUZZ_LIBS)
THIRD_SRC += $(HARFBUZZ_SRC)
$(OUT)/thirdparty/harfbuzz/%.o: thirdparty/harfbuzz/%.cc
$(CXX_CMD) $(LIB_CFLAGS) $(HARFBUZZ_CFLAGS) $(HARFBUZZ_BUILD_CFLAGS)
endif
# --- JPEG-XR ---
ifeq ($(HAVE_JPEGXR),yes)
THIRD_CFLAGS += -DHAVE_JPEGXR
ifeq ($(USE_SYSTEM_JPEGXR),yes)
THIRD_CFLAGS += $(SYS_JPEGXR_CFLAGS)
THIRD_LIBS += $(SYS_JPEGXR_LIBS)
else
THIRD_CFLAGS += $(JPEGXR_CFLAGS)
THIRD_LIBS += $(JPEGXR_LIBS)
THIRD_SRC += $(JPEGXR_SRC)
$(OUT)/thirdparty/jpegxr/%.o: thirdparty/jpegxr/%.c
$(CC_CMD) $(LIB_CFLAGS) $(JPEGXR_CFLAGS) $(JPEGXR_BUILD_CFLAGS)
endif
endif
# --- LIBJPEG ---
ifeq ($(USE_SYSTEM_LIBJPEG),yes)
THIRD_CFLAGS += $(SYS_LIBJPEG_CFLAGS) -DSHARE_JPEG
THIRD_LIBS += $(SYS_LIBJPEG_LIBS)
else
THIRD_CFLAGS += $(LIBJPEG_CFLAGS)
THIRD_LIBS += $(LIBJPEG_LIBS)
THIRD_SRC += $(LIBJPEG_SRC)
$(OUT)/thirdparty/libjpeg/%.o: thirdparty/libjpeg/%.c
$(CC_CMD) $(LIB_CFLAGS) $(LIBJPEG_CFLAGS) $(LIBJPEG_BUILD_CFLAGS)
endif
# --- LCMS2 ---
ifeq ($(USE_SYSTEM_LCMS2),yes)
THIRD_CFLAGS += $(SYS_LCMS2_CFLAGS)
THIRD_LIBS += $(SYS_LCMS2_LIBS)
else
THIRD_CFLAGS += $(LCMS2_CFLAGS)
THIRD_LIBS += $(LCMS2_LIBS)
THIRD_SRC += $(LCMS2_SRC)
$(OUT)/thirdparty/lcms2/%.o: thirdparty/lcms2/%.c
$(CC_CMD) $(LIB_CFLAGS) $(LCMS2_CFLAGS) $(LCMS2_BUILD_CFLAGS)
endif
# --- MuJS ---
ifeq ($(USE_SYSTEM_MUJS),yes)
THIRD_CFLAGS += $(SYS_MUJS_CFLAGS)
THIRD_LIBS += $(SYS_MUJS_LIBS)
else
THIRD_CFLAGS += $(MUJS_CFLAGS)
THIRD_LIBS += $(MUJS_LIBS)
THIRD_SRC += $(MUJS_SRC)
$(OUT)/thirdparty/mujs/%.o: thirdparty/mujs/%.c
$(CC_CMD) $(LIB_CFLAGS) $(MUJS_CFLAGS) $(MUJS_BUILD_CFLAGS)
endif
# --- ZLIB ---
ifeq ($(USE_SYSTEM_ZLIB),yes)
THIRD_CFLAGS += $(SYS_ZLIB_CFLAGS)
THIRD_LIBS += $(SYS_ZLIB_LIBS)
else
THIRD_CFLAGS += $(ZLIB_CFLAGS)
THIRD_LIBS += $(ZLIB_LIBS)
THIRD_SRC += $(ZLIB_SRC)
$(OUT)/thirdparty/zlib/%.o: thirdparty/zlib/%.c
$(CC_CMD) $(LIB_CFLAGS) $(ZLIB_CFLAGS) $(ZLIB_BUILD_CFLAGS)
endif
# --- JBIG2DEC ---
ifeq ($(USE_SYSTEM_JBIG2DEC),yes)
THIRD_CFLAGS += $(SYS_JBIG2DEC_CFLAGS)
THIRD_LIBS += $(SYS_JBIG2DEC_LIBS)
else
THIRD_CFLAGS += $(JBIG2DEC_CFLAGS)
THIRD_LIBS += $(JBIG2DEC_LIBS)
THIRD_SRC += $(JBIG2DEC_SRC)
$(OUT)/thirdparty/jbig2dec/%.o: thirdparty/jbig2dec/%.c
$(CC_CMD) $(WARNING_CFLAGS) $(LIB_CFLAGS) $(JBIG2DEC_CFLAGS) $(JBIG2DEC_BUILD_CFLAGS)
endif
# --- OPENJPEG ---
ifeq ($(USE_SYSTEM_OPENJPEG),yes)
THIRD_CFLAGS += $(SYS_OPENJPEG_CFLAGS)
THIRD_LIBS += $(SYS_OPENJPEG_LIBS)
else
THIRD_CFLAGS += $(OPENJPEG_CFLAGS)
THIRD_LIBS += $(OPENJPEG_LIBS)
THIRD_SRC += $(OPENJPEG_SRC)
$(OUT)/thirdparty/openjpeg/%.o: thirdparty/openjpeg/%.c
$(CC_CMD) $(LIB_CFLAGS) $(OPENJPEG_CFLAGS) $(OPENJPEG_BUILD_CFLAGS)
endif
# --- FreeGLUT ---
ifeq ($(USE_SYSTEM_GLUT),yes)
THIRD_GLUT_CFLAGS := $(SYS_GLUT_CFLAGS)
THIRD_GLUT_LIBS += $(SYS_GLUT_LIBS)
else
THIRD_GLUT_CFLAGS += $(GLUT_CFLAGS)
THIRD_GLUT_LIBS += $(GLUT_LIBS)
THIRD_GLUT_SRC += $(GLUT_SRC)
$(OUT)/thirdparty/freeglut/%.o: thirdparty/freeglut/%.c
$(CC_CMD) $(LIB_CFLAGS) $(GLUT_CFLAGS) $(GLUT_BUILD_CFLAGS)
endif
# --- cURL ---
ifeq ($(USE_SYSTEM_CURL),yes)
ifeq ($(HAVE_SYS_CURL),yes)
HAVE_CURL := yes
CURL_CFLAGS := $(SYS_CURL_CFLAGS) -DHAVE_CURL
CURL_LIBS := $(SYS_CURL_LIBS)
endif
endif
# --- LEPTONICA ---
ifeq ($(HAVE_LEPTONICA),yes)
THIRD_CFLAGS += -DHAVE_LEPTONICA
ifeq ($(USE_SYSTEM_LEPTONICA),yes)
THIRD_CFLAGS += $(SYS_LEPTONICA_CFLAGS)
THIRD_LIBS += $(SYS_LEPTONICA_LIBS)
else
THIRD_CFLAGS += $(LEPTONICA_CFLAGS)
THIRD_LIBS += $(LEPTONICA_LIBS)
THIRD_SRC += $(LEPTONICA_SRC)
$(OUT)/thirdparty/leptonica/%.o: thirdparty/leptonica/%.c
$(CC_CMD) $(LIB_CFLAGS) $(LEPTONICA_CFLAGS) $(LEPTONICA_BUILD_CFLAGS)
endif
endif
# --- TESSERACT ---
ifeq ($(HAVE_TESSERACT),yes)
THIRD_CFLAGS += -DHAVE_TESSERACT
ifeq ($(USE_SYSTEM_TESSERACT),yes)
THIRD_CFLAGS += $(SYS_TESSERACT_CFLAGS)
THIRD_LIBS += $(SYS_TESSERACT_LIBS) -lstdc++
else
THIRD_CFLAGS += $(TESSERACT_CFLAGS)
THIRD_LIBS += $(TESSERACT_LIBS)
THIRD_SRC += $(TESSERACT_SRC)
THIRD_SRC += $(TESSERACT_SRC)
$(OUT)/thirdparty/tesseract/%.o: thirdparty/tesseract/%.cpp
$(CXX_CMD) $(LIB_CFLAGS) $(TESSERACT_CFLAGS) $(TESSERACT_BUILD_CFLAGS)
endif
endif
# --- EXTRACT ---
ifeq ($(HAVE_EXTRACT),yes)
THIRD_CFLAGS += -DHAVE_EXTRACT
ifeq ($(USE_SYSTEM_EXTRACT),yes)
THIRD_CFLAGS += $(SYS_EXTRACT_CFLAGS)
THIRD_LIBS += $(SYS_EXTRACT_LIBS)
else
THIRD_CFLAGS += $(EXTRACT_CFLAGS)
THIRD_LIBS += $(EXTRACT_LIBS)
THIRD_SRC += $(EXTRACT_SRC)
$(OUT)/thirdparty/extract/%.o: thirdparty/extract/%.c
$(CC_CMD) $(WARNING_CFLAGS) $(LIB_CFLAGS) $(EXTRACT_CFLAGS) $(EXTRACT_BUILD_CFLAGS)
thirdparty/extract/src/docx_template.c: thirdparty/extract/src/template.docx thirdparty/extract/src/docx_template_build.py
$(QUIET_GEN) python3 thirdparty/extract/src/docx_template_build.py \
-i thirdparty/extract/src/template.docx \
-o thirdparty/extract/src/docx_template
generate: thirdparty/extract/src/docx_template.c
endif
endif