#!/bin/bash # Slackware build script for flac-opt # Written by B. Watson (urchlay@slackware.uk) # Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. # Notes: # - Not based on PV's flac.SlackBuild. Started with SBo template. # - Static libraries, not shared, because they live in a weird prefix. # - It's possible to export PREFIX=/whatever, but not documented in README # because I really don't expect anyone to do this. # - I include the API docs and examples even though PV leaves them # out of his flac package. # - Encoding really is about 25% faster than Slackware's older flac, even if # you don't use the new -j option to run in parallel. With -j8 on my 8-core # workstation, it's 4-5x as fast as the old flac. # - It's possible to build with either autoconf or cmake. I tried both, # didn't see any difference. Went with autoconf because it's more # familiar. May change in the future, if upstream drops autoconf. # - I see no advantage to building with -O2 rather than upstream's # default -O3, but I added an option to use -O2 if you're that # fanatical about using default CFLAGS. cd $(dirname $0) ; CWD=$(pwd) PRGNAM=flac-opt SRCNAM=flac VERSION=${VERSION:-1.5.0} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" exit 0 fi TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} if [ "$ARCH" = "i586" ]; then SLKCFLAGS="-march=i586 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-march=i686 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "x86_64" -o "$ARCH" = "aarch64" ]; then SLKCFLAGS="-fPIC" LIBDIRSUFFIX="64" else SLKCFLAGS="" LIBDIRSUFFIX="" fi # upstream uses -O3, we'll go with that unless the user insists. COPT=-O3 [ "${FORCE_O2:-no}" = "yes" ] && COPT=-O2 SLKCFLAGS="$COPT $SLKCFLAGS" set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $SRCNAM-$VERSION tar xvf $CWD/$SRCNAM-$VERSION.tar.xz cd $SRCNAM-$VERSION chown -R root:root . find -L . -perm /111 -a \! -perm 755 -a -exec chmod -h 755 {} + -o \ \! -perm /111 -a \! -perm 644 -a -exec chmod -h 644 {} + if [ "${ASM:-yes}" = "no" ]; then ASMOPT=disable WITHASM="WITHOUT" else ASMOPT=enable WITHASM="WITH" fi PREFIX=${PREFIX:-/opt/$PRGNAM} DOCDIR=/usr/doc/$PRGNAM-$VERSION PKGDOC=$PKG/$DOCDIR LIBDIR=$PREFIX/lib$LIBDIRSUFFIX CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \ --disable-examples \ --disable-werror \ --$ASMOPT-asm-optimizations \ --prefix=$PREFIX \ --libdir=$LIBDIR \ --sysconfdir=/etc \ --localstatedir=/var \ --mandir=$PREFIX/man \ --docdir=/usr/doc/$PRGNAM-$VERSION \ --disable-shared \ --enable-static \ --build=$ARCH-slackware-linux make V=1 make install-strip DESTDIR=$PKG rm -f $PKG/$PREFIX/lib*/*.la gzip -9 $PKG/$PREFIX/man/man*/* PROF=$PKG/etc/profile.d mkdir -p $PROF for i in flac-opt.sh flac-opt-dev.sh; do sed -e "s,@PREFIX@,$PREFIX,g" -e "s,@LIBDIR@,$LIBDIR,g" $CWD/$i > $PROF/$i done chmod 755 $PROF/flac-opt.sh # pkgconfig needs a bit of help. we do this so callers don't have to # specify --static as a pkg-config option. sed -i -e '/^Libs\.private/d' \ -e '/^Libs:/s,$, -logg -lm,' \ $PKG/$LIBDIR/pkgconfig/flac.pc # we didn't build the examples, but include their source in the doc dir. mkdir -p $PKGDOC cp -a examples/ AUTHORS *.md COPYING* $PKGDOC cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild mkdir -p $PKG/install sed -e "s,@WITHASM@,$WITHASM," \ -e "s,@PREFIX@,$PREFIX," \ -e "s,@SLKCFLAGS@,$SLKCFLAGS," \ $CWD/slack-desc > $PKG/install/slack-desc cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE