slackbuilds/audio/flac-opt/flac-opt.SlackBuild

148 lines
4.0 KiB
Bash

#!/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.
# 20250512 bkw: BUILD=2
# - fix man breakage that occurred if MANPATH wasn't already set
# when the profile script ran. Thanks to fourtysixandtwo for
# catching this.
# 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:-2}
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