ports/graphics/mupdf/files/patch-Makefile
Tobias Kortkamp 563dce7f91 graphics/mupdf: Fix linking with libmupdf.so for third-party ports
libmupdf.so references symbols from libmupdfthird.so but does not
link directly against it.

This is problematic for ports using the --as-needed linker option,
such as graphics/zathura-pdf-mupdf (>= 0.3.3) due to Meson's defaults.
zathura-pdf-mupdf itself does not reference symbols from libmupdfthird.so,
and so despite being included in the linker arguments, libmupdfthird.so
is not actually linked in.

$ zathura --version
error: Could not load plugin '/usr/local/lib/zathura/libpdf-mupdf.so' (/usr/local/lib/libmupdf.so.1.13.0: Undefined symbol "js_tointeger").

This is a consequence of us providing shared libraries in spite of
upstream since r433550 to keep package sizes down, but not properly
understanding the dependency between libmupdfthird and libmupdf.

PR:		232059
Submitted by:	Albert Ou <aou@eecs.berkeley.edu>
2018-10-09 07:01:53 +00:00

27 lines
807 B
Text

$OpenBSD: patch-Makefile,v 1.12 2016/12/12 10:54:39 sthen Exp $
--- Makefile.orig 2017-12-13 14:00:30 UTC
+++ Makefile
@@ -312,8 +312,8 @@ generate: $(JAVASCRIPT_GEN)
# --- Library ---
-MUPDF_LIB = $(OUT)/libmupdf.a
-THIRD_LIB = $(OUT)/libmupdfthird.a
+MUPDF_LIB = libmupdf.so.$(SOVERSION)
+THIRD_LIB = libmupdfthird.so.$(SOVERSION)
THREAD_LIB = $(OUT)/libmuthreads.a
MUPDF_OBJ := \
@@ -344,7 +344,11 @@ THIRD_OBJ := \
THREAD_OBJ := $(THREAD_OBJ)
-$(MUPDF_LIB) : $(MUPDF_OBJ)
+$(MUPDF_LIB) : $(MUPDF_OBJ) $(THIRD_LIB)
+ $(CC) $(LDFLAGS) -fPIC -shared -Wl,-soname=$@ -Wl,--no-undefined -o $@ $^ $(LIBS)
+
$(THIRD_LIB) : $(THIRD_OBJ)
+ $(CC) $(LDFLAGS) -fPIC -shared -Wl,-soname=$@ -Wl,--no-undefined -o $@ $^ $(LIBS)
+
$(THREAD_LIB) : $(THREAD_OBJ)
INSTALL_LIBS := $(MUPDF_LIB) $(THIRD_LIB)