1 # Copyright 1999-2017 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
6 inherit flag-o-matic toolchain-funcs xdg
8 DESCRIPTION="a lightweight PDF viewer and toolkit written in portable C"
9 HOMEPAGE="https://mupdf.com/"
10 SRC_URI="https://mupdf.com/downloads/${P}-source.tar.gz"
14 KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~ppc-macos ~x64-macos ~x86-macos"
15 IUSE="X +curl djvu javascript lcms libressl opengl +openssl static static-libs vanilla"
18 djvu? ( app-text/djvu )
19 !libressl? ( dev-libs/openssl:0[static-libs?] )
20 libressl? ( dev-libs/libressl[static-libs?] )
21 javascript? ( >=dev-lang/mujs-0_p20160504 )
22 media-libs/freetype:2[static-libs?]
23 media-libs/harfbuzz[static-libs?]
24 media-libs/jbig2dec[static-libs?]
25 media-libs/libpng:0[static-libs?]
26 >=media-libs/openjpeg-2.1:2[static-libs?]
27 net-misc/curl[static-libs?]
28 virtual/jpeg[static-libs?]
29 X? ( x11-libs/libX11[static-libs?]
30 x11-libs/libXext[static-libs?] )
31 opengl? ( >=media-libs/glfw-3.2 )"
32 RDEPEND="${LIB_DEPEND}"
35 static-libs? ( ${LIB_DEPEND} )
36 static? ( ${LIB_DEPEND//?}
37 app-arch/bzip2[static-libs]
38 x11-libs/libXau[static-libs]
39 x11-libs/libXdmcp[static-libs]
40 x11-libs/libxcb[static-libs] )"
42 REQUIRED_USE="opengl? ( X !static !static-libs )"
44 S=${WORKDIR}/${P}-source
47 "${FILESDIR}"/${PN}-1.12-CFLAGS.patch
48 "${FILESDIR}"/${PN}-1.9a-debug-build.patch
49 "${FILESDIR}"/${PN}-1.10a-add-desktop-pc-xpm-files.patch
50 "${FILESDIR}"/${PN}-1.11-openssl-curl-x11.patch
51 "${FILESDIR}"/${PN}-1.11-system-glfw.patch
52 "${FILESDIR}"/${PN}-1.11-drop-libmupdfthird.patch
53 "${FILESDIR}"/${PN}-1.12-djvu-support.patch
58 use hppa && append-cflags -ffunction-sections
60 # specialized lcms2, keep it if wanted inside lubmupdfthird
62 rm -rf thirdparty/lcms2
65 rm -rf thirdparty/{README,curl,freeglut,freetype,harfbuzz,jbig2dec,libjpeg,mujs,openjpeg,zlib} || die
66 for my_third in thirdparty/* ; do
67 ewarn "Bundled thirdparty lib: ${my_third}"
70 if has_version ">=media-libs/openjpeg-2.1:2" ; then
71 # Remove a switch, which prevents using shared libraries for openjpeg2.
72 # See http://www.linuxfromscratch.org/blfs/view/cvs/pst/mupdf.html
73 sed '/OPJ_STATIC$/d' -i source/fitz/load-jpx.c
77 sed -e 's/define FZ_ENABLE_JS 1/define FZ_ENABLE_JS 0/' \
78 -i include/mupdf/fitz/config.h
81 sed -e 's/FZ_ENABLE_DJVU 1/FZ_ENABLE_DJVU 0/' \
82 -i include/mupdf/fitz/config.h
84 sed -e "/^libdir=/s:/lib:/$(get_libdir):" \
85 -e "/^prefix=/s:=.*:=${EROOT}/usr:" \
86 -i platform/debian/${PN}.pc || die
88 use vanilla || eapply \
89 "${FILESDIR}"/${PN}-1.3-zoom-2.patch
91 sed -e "s/HAVE_GLUT := yes/HAVE_GLUT := $(usex opengl yes no)/" \
94 sed -e "1iOS = Linux" \
95 -e "1iCC = $(tc-getCC)" \
96 -e "1iLD = $(tc-getCC)" \
97 -e "1iAR = $(tc-getAR)" \
98 -e "1iverbose = yes" \
99 -e "1ibuild = debug" \
100 -e "1iprefix = ${ED}usr" \
101 -e "1ilibdir = ${ED}usr/$(get_libdir)" \
102 -e "1idocdir = ${ED}usr/share/doc/${PF}" \
103 -e "1iWANT_X11 = $(usex X)" \
104 -e "1iWANT_OPENSSL = $(usex openssl)" \
105 -e "1iWANT_CURL = $(usex curl)" \
106 -e "1iWANT_DJVU = $(usex djvu)" \
107 -e "1iHAVE_MUJS = $(usex javascript)" \
108 -e "1iMUJS_LIBS = $(usex javascript -lmujs '')" \
109 -e "1iMUJS_CFLAGS =" \
110 -e "1iHAVE_GLFW = $(usex opengl yes no)" \
111 -e "1iHAVE_GLUT = $(usex opengl yes no)" \
114 if use static-libs || use static ; then
115 cp -a "${S}" "${S}"-static || die
116 #add missing Libs.private for xcb and freetype
117 sed -e 's:\(pkg-config --libs\):\1 --static:' \
118 -e '/^SYS_X11_LIBS = /s:\(.*\):\1 -lpthread:' \
119 -e '/^SYS_FREETYPE_LIBS = /s:\(.*\):\1 -lbz2:' \
120 -i "${S}"-static/Makerules || die
123 my_soname=libmupdf.so.${PV}
124 my_soname_js_none=libmupdf-js-none.so.${PV}
125 sed -e "\$a\$(MUPDF_LIB): \$(MUPDF_JS_NONE_LIB)" \
126 -e "\$a\\\t\$(QUIET_LINK) \$(CC) \$(LDFLAGS) --shared -Wl,-soname -Wl,${my_soname} -Wl,--no-undefined -o \$@ \$^ \$(MUPDF_JS_NONE_LIB) \$(LIBS)" \
127 -e "/^MUPDF_LIB =/s:=.*:= \$(OUT)/${my_soname}:" \
128 -e "\$a\$(MUPDF_JS_NONE_LIB):" \
129 -e "\$a\\\t\$(QUIET_LINK) \$(CC) \$(LDFLAGS) --shared -Wl,-soname -Wl,${my_soname_js_none} -Wl,--no-undefined -o \$@ \$^ \$(LIBS)" \
130 -e "/install/s: COPYING : :" \
135 use lcms && emake XCFLAGS="-fpic" third
136 emake XCFLAGS="-fpic"
138 emake -C "${S}"-static build/debug/lib${PN}{,-js-none}.a
140 emake -C "${S}"-static XLIBS="-static"
145 domenu platform/debian/${PN}.desktop
146 doicon platform/debian/${PN}.xpm
152 dosym ${my_soname} /usr/$(get_libdir)/lib${PN}.so
155 dolib.a "${S}"-static/build/debug/lib${PN}{,-js-none}.a
157 dobin "${S}"-static/build/debug/mu{tool,draw}
158 use X && dobin "${S}"-static/build/debug/${PN}-x11
162 einfo "mupdf symlink points to mupdf-gl (bug 616654)"
163 dosym ${PN}-gl /usr/bin/${PN}
165 einfo "mupdf symlink points to mupdf-x11 (bug 616654)"
166 dosym ${PN}-x11 /usr/bin/${PN}
169 insinto /usr/$(get_libdir)/pkgconfig
170 doins platform/debian/${PN}.pc