123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- #!/bin/bash
- # Slackware build script for ffmpeg
- # Copyright 2010-2017 Heinz Wiesinger, Amsterdam, The Netherlands
- # Copyright 2017, 2018 Patrick J. Volkerding, Sebeka, MN, USA
- # All rights reserved.
- #
- # Redistribution and use of this script, with or without modification, is
- # permitted provided that the following conditions are met:
- #
- # 1. Redistributions of this script must retain the above copyright
- # notice, this list of conditions and the following disclaimer.
- #
- # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
- # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- # Originally written by core (eroc@linuxmail.org)
- # Modified by Robby Workman <rworkman@slackbuilds.org>
- cd $(dirname $0) ; CWD=$(pwd)
- PKGNAM=ffmpeg
- VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
- BUILD=${BUILD:-1}
- if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
- fi
- TMP=${TMP:-/tmp}
- PKG=$TMP/package-$PKGNAM
- NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
- 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
- # If PulseAudio is not found, use the _alsa $TAG and disable it in the build:
- if [ ! -r /usr/lib${LIBDIRSUFFIX}/pkgconfig/libpulse.pc ]; then
- TAG="_alsa"
- PULSEAUDIO=no
- fi
- # If the variable PRINT_PACKAGE_NAME is set, then this script will report what
- # the name of the created package would be, and then exit. This information
- # could be useful to other scripts.
- if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
- echo "$PKGNAM-$VERSION-$ARCH-$BUILD$TAG.txz"
- exit 0
- fi
- # Configure ffmpeg features not autodetected by default.
- # You can enable a lot of optional (not-autodetected) features by
- # passing variables to the script (VAR=yes/no ./ffmpeg.SlackBuild).
- # Unfortunately ffmpeg's configure doesn't support --enable-feature=yes
- # syntax, so we have to do it the complicated way :/
- # Additional optional (autodetected) dependencies are:
- # - jack-audio-connection-kit
- # - libva
- # - libvdpau
- # - libX11
- # - libxcb
- # - sdl2
- # - xz
- # - zlib
- libx264="" ; [ "${X264:-yes}" != "no" ] && libx264="--enable-libx264"
- libcelt="" ; [ "${CELT:-no}" != "no" ] && libcelt="--enable-libcelt"
- libdc1394="" ; [ "${DC1394:-no}" != "no" ] && libdc1394="--enable-libdc1394"
- libfrei0r="" ; [ "${FREI0R:-no}" != "no" ] && libfrei0r="--enable-frei0r"
- libgsm="" ; [ "${GSM:-no}" != "no" ] && libgsm="--enable-libgsm"
- librtmp="" ; [ "${RTMP:-no}" != "no" ] && librtmp="--enable-librtmp"
- libspeex="" ; [ "${SPEEX:-yes}" != "no" ] && libspeex="--enable-libspeex"
- libxvid="" ; [ "${XVID:-no}" != "no" ] && libxvid="--enable-libxvid"
- libass="" ; [ "${ASS:-yes}" != "no" ] && libass="--enable-libass"
- libopenal="" ; [ "${OPENAL:-no}" != "no" ] && libopenal="--enable-openal"
- libiec61883=""; [ "${IEC61883:-no}" != "no" ] && libiec61883="--enable-libiec61883"
- libilbc="" ; [ "${ILBC:-no}" != "no" ] && libilbc="--enable-libilbc"
- libmodplug="" ; [ "${MODPLUG:-no}" != "no" ] && libmodplug="--enable-libmodplug"
- libopus="" ; [ "${OPUS:-yes}" != "no" ] && libopus="--enable-libopus"
- libtwolame="" ; [ "${TWOLAME:-yes}" != "no" ] && libtwolame="--enable-libtwolame"
- ladspa="" ; [ "${LADSPA:-no}" != "no" ] && ladspa="--enable-ladspa"
- libflite="" ; [ "${FLITE:-no}" != "no" ] && libflite="--enable-libflite"
- libvidstab="" ; [ "${VIDSTAB:-no}" != "no" ] && libvidstab="--enable-libvidstab"
- libx265="" ; [ "${X265:-yes}" != "no" ] && libx265="--enable-libx265"
- libzvbi="" ; [ "${ZVBI:-no}" != "no" ] && libzvbi="--enable-libzvbi"
- libopencv="" ; [ "${OPENCV:-no}" != "no" ] && libopencv="--enable-libopencv"
- libgme="" ; [ "${GME:-no}" != "no" ] && libgme="--enable-libgme"
- libsnappy="" ; [ "${SNAPPY:-no}" != "no" ] && libsnappy="--enable-libsnappy"
- libzmq="" ; [ "${ZMQ:-no}" != "no" ] && libzmq="--enable-libzmq"
- libbs2b="" ; [ "${BS2B:-no}" != "no" ] && libbs2b="--enable-libbs2b"
- libebur128="" ; [ "${EBUR128:-no}" != "no" ] && libebur128="--enable-libebur128"
- rubberband="" ; [ "${RUBBERBAND:-no}" != "no" ] && rubberband="--enable-librubberband"
- tesseract="" ; [ "${TESSERACT:-no}" != "no" ] && tesseract="--enable-libtesseract"
- netcdf="" ; [ "${NETCDF:-no}" != "no" ] && netcdf="--enable-netcdf"
- chromaprint="" ; [ "${CHROMAPRINT:-no}" != "no" ] && chromaprint="--enable-chromaprint"
- opencore_amr="" ; [ "${OPENCORE:-no}" != "no" ] && \
- opencore_amr="--enable-libopencore-amrnb --enable-libopencore-amrwb"
- fdk="" ; [ "${FDK_AAC:-no}" != "no" ] && \
- { fdk="--enable-libfdk-aac"; non_free="--enable-nonfree" ; }
- ssl="" ; [ "${OPENSSL:-no}" != "no" ] && \
- { ssl="--enable-openssl" ; non_free="--enable-nonfree" ; }
- decklink="" ; [ "${DECKLINK:-no}" != "no" ] && \
- { decklink="--enable-decklink" ; \
- SLKCFLAGS="$SLKCFLAGS -I/usr/include/decklink" ; }
- # Default enabled features:
- fontconfig="" ; [ "${FONTCONFIG:-yes}" != "no" ] && fontconfig="--enable-libfontconfig"
- freetype="" ; [ "${FREETYPE:-yes}" != "no" ] && freetype="--enable-libfreetype"
- fribidi="" ; [ "${FRIBIDI:-yes}" != "no" ] && fribidi="--enable-libfribidi"
- gnutls="" ; [ "${GNUTLS:-yes}" != "no" ] && gnutls="--enable-gnutls"
- libbluray="" ; [ "${BLURAY:-yes}" != "no" ] && libbluray="--enable-libbluray"
- libcaca="" ; [ "${CACA:-yes}" != "no" ] && libcaca="--enable-libcaca"
- libcdio="" ; [ "${LIBCDIO:-yes}" != "no" ] && libcdio="--enable-libcdio"
- libssh="" ; [ "${LIBSSH:-yes}" != "no" ] && libssh="--enable-libssh"
- libtheora="" ; [ "${THEORA:-yes}" != "no" ] && libtheora="--enable-libtheora"
- libv4l2="" ; [ "${V4L2:-yes}" != "no" ] && libv4l2="--enable-libv4l2"
- libvorbis="" ; [ "${VORBIS:-yes}" != "no" ] && libvorbis="--enable-libvorbis"
- libvpx="" ; [ "${VPX:-yes}" != "no" ] && libvpx="--enable-libvpx"
- libwebp="" ; [ "${WEBP:-yes}" != "no" ] && libwebp="--enable-libwebp"
- mp3lame="" ; [ "${LAME:-yes}" != "no" ] && mp3lame="--enable-libmp3lame"
- opencl="" ; [ "${OPENCL:-yes}" != "no" ] && opencl="--enable-opencl"
- opengl="" ; [ "${OPENGL:-yes}" != "no" ] && opengl="--enable-opengl"
- openjpeg="" ; [ "${JP2:-yes}" != "no" ] && openjpeg="--enable-libopenjpeg"
- pulse="" ; [ "${PULSEAUDIO:-yes}" != "no" ] && pulse="--enable-libpulse"
- samba="" ; [ "${SAMBA:-yes}" != "no" ] && samba="--enable-libsmbclient"
- wavpack="" ; [ "${WAVPACK:-yes}" != "no" ] && wavpack="--enable-libwavpack"
- # No default patent encumbered features:
- aac="" ; [ "${AAC:-no}" = "no" ] && aac="--disable-encoder=aac"
- rm -rf $PKG
- mkdir -p $TMP $PKG
- cd $TMP
- rm -rf $PKGNAM-$VERSION
- tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1
- cd $PKGNAM-$VERSION || exit 1
- chown -R root:root .
- find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \+ -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
- # Fix linking with flite:
- sed -i "s| -lflite\"| -lflite -lm -lasound\"|" \
- ./configure
- CFLAGS="$SLKCFLAGS" \
- CXXFLAGS="$SLKCFLAGS" \
- ./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --shlibdir=/usr/lib${LIBDIRSUFFIX} \
- --docdir=/usr/doc/$PKGNAM-$VERSION/html \
- --mandir=/usr/man \
- --disable-debug \
- --enable-shared \
- --disable-static \
- --enable-gpl \
- --enable-version3 \
- --enable-avresample \
- --arch=$ARCH \
- $non_free \
- $aac \
- $chromaprint \
- $decklink \
- $fdk \
- $fontconfig \
- $freetype \
- $fribidi \
- $gnutls \
- $ladspa \
- $libass \
- $libbluray \
- $libbs2b \
- $libcaca \
- $libcdio \
- $libcelt \
- $libdc1394 \
- $libebur128 \
- $libflite \
- $libfrei0r \
- $libgme \
- $libgsm \
- $libiec61883 \
- $libilbc \
- $libmodplug \
- $libopenal \
- $libopencv \
- $libopus \
- $librtmp \
- $libsnappy \
- $libspeex \
- $libssh \
- $libtheora \
- $libtwolame \
- $libv4l2 \
- $libvidstab \
- $libvorbis \
- $libvpx \
- $libwebp \
- $libx264 \
- $libx265 \
- $libxvid \
- $libzmq \
- $libzvbi \
- $mp3lame \
- $netcdf \
- $opencl \
- $opencore_amr \
- $opengl \
- $openjpeg \
- $pulse \
- $rubberband \
- $samba \
- $ssl \
- $tesseract \
- $wavpack || exit 1
- make $NUMJOBS || make || exit 1
- make install DESTDIR=$PKG || exit 1
- make install-man DESTDIR=$PKG || exit 1
- find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | \
- grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
- find $PKG/usr/man -type f -exec gzip -9 {} \+
- mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/txt
- cp -a \
- Changelog COPYING* CREDITS INSTALL* LICENSE* MAINTAINERS README* \
- RELEASE VERSION \
- $PKG/usr/doc/$PKGNAM-$VERSION
- cp -a doc/*.txt $PKG/usr/doc/$PKGNAM-$VERSION/txt/
- find . -name "RELEASE_NOTES" -exec cp -a {} $PKG/usr/doc/$PKGNAM-$VERSION/ \;
- # If there's a ChangeLog, installing at least part of the recent history
- # is useful, but don't let it get totally out of control:
- if [ -r ChangeLog ]; then
- DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
- cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
- touch -r ChangeLog $DOCSDIR/ChangeLog
- fi
- mkdir -p $PKG/install
- cat $CWD/slack-desc > $PKG/install/slack-desc
- cd $PKG
- /sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD$TAG.txz
|