#!/bin/bash # Slackware build script for mupdf # Originally written by Hubert Hesse (email removed). # Heavily modified by B. Watson (yalhcru@gmail.com). # Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. # 20201020 bkw: update for 1.18.0. See notes, below. # 20200217 bkw: update for 1.16.1. # 20180623 bkw: BUILD=2, add patch for dynamic linking. Thanks # to Thomas Morper for pointing me in the right direction. # 20180615 bkw: update for 1.13.0, move old change comments to ChangeLog.old # 20180101 bkw: update for 1.12.0. # 20170711 bkw: update for 1.11. # 20170621 bkw: fix build with -current's newer openjpeg, BUILD=2. # 20170122 bkw: update for 1.10a. # Notes for 1.18.0: # - This script can no longer build older versions, too many changes. # - Upstream *finally* supports building as a shared library, so I and # all other distro packagers can stop patching it... except the # shared lib is unversioned, which means upgrades would cause more # breakage than they should. So there's still some trickery here to # build a versioned solib. # - I've got rid of the STATIC=yes option and now only build shared libs. # As a side effect, libmupdf-third is gone, but I've included a # placeholder so stuff that links with it, will work without patching. # - gumbo (HTML parser) is now a hard dep. The source is bundled, so # there's no need to create a new gumbo SlackBuild, but it does mean # the mupdf shared lib has grown in size. # - mupdf-gl uses freeglut. The version we have in 14.2 is new enough to # build with, but old enough that you can't copy text from mupdf-gl. # So we build the bundled version here. # - API docs are now included in the package. # - Now using upstream's icons, including scalable SVG. # - Add missing doinst.sh # - There's now the option to build with tesseract and leptonica, # but it's disabled in this script. I have yet to get it to # actually *do* anything other than fail to build (when using # upstream's tesseract/leptonica forks) or complain about being # unable to load eng.traineddata (using SBo tesseract/leptonica, # and yes eng.traineddata is fine). Until I work out what's wrong, # or upstream releases a new version, this script doesn't support # building with tesseract. Don't contact me about this before March # 1, 2021, unless you actually have a patch that fixes it. After # that, if this message is still here, feel free to remind me to # revisit it. # - Slackware 14.2's libcrypto (from openssl) is too old for mupdf, # and there's no bundled souce for it. So currently mupdf is being # built without libcrypto. Hope that's OK. PRGNAM=mupdf VERSION=${VERSION:-1.18.0} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi CWD=$(pwd) TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} if [ "$ARCH" = "i586" ]; then SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" LIBDIRSUFFIX="64" else SLKCFLAGS="-O2" LIBDIRSUFFIX="" fi set -e # Tesseract code left here for future reference. At some point upstream # (or maybe I) will fix it. if [ "${TESSERACT:-no}" = "yes" ]; then TESSARGS="USE_SYSTEM_LEPTONICA=yes USE_SYSTEM_TESSERACT=yes" cat < $PKG/usr/share/applications/$PRGNAM.desktop # Use shipped PNG and SVG icons. mkdir -p $PKG/usr/share/pixmaps $PKG/usr/share/icons/hicolor/scalable/apps cat docs/logo/mupdf-icon.png > $PKG/usr/share/pixmaps/$PRGNAM.png cat docs/logo/mupdf-logo.svg > $PKG/usr/share/icons/hicolor/scalable/apps/$PRGNAM.svg # .pc file taken from debian and parameterized. # -lcrypto used to be in this list, will be again someday. PCLIBS="-l$PRGNAM -lfreetype -lharfbuzz -ljbig2dec -ljpeg -lopenjp2 -lz -lm" mkdir -p $PKG/usr/lib$LIBDIRSUFFIX/pkgconfig/ sed -e "s,@LIB@,lib$LIBDIRSUFFIX,g" \ -e "s,@VERSION@,$VERSION,g" \ -e "s,@PCLIBS@,$PCLIBS,g" \ $CWD/$PRGNAM.pc > $PKG/usr/lib$LIBDIRSUFFIX/pkgconfig/$PRGNAM.pc # 'make install' already installed most of the docs. cp -a CONTRIBUTORS docs/api $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}