aboutsummaryrefslogtreecommitdiff
path: root/audio/apulse/apulse.SlackBuild
blob: 139c90bd0c154585dfc3b8082d91f177677b3a88 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/bin/bash

# Slackware build script for apulse

# Originally written by: Ryan P.C. McQuen | Everett, WA | <email removed>
# Heavily modified and now maintained by B. Watson <yalhcru@gmail.com>

# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.

# 20210301 bkw:
# - Take over maintenance.
# - Replace Capi X's version (submitted in 2019) with Ryan's (removed
#   in 2016), since it supports multilib and by default doesn't stomp
#   on the system pulseaudio libs. Add the ability to install the
#   headers and .pc files, like Capi's build did, but disable it by
#   default (SYSTEM variable).
# - Relicense as WTFPL, with permission from original author (Ryan).
# - i486 => i586.
# - Rewrite README to document the new stuffs.
# - Simplify the script a bit.
# - Actually use SLKCFLAGS.
# - Upstream ships a man page now, install it to /usr/man.

cd $(dirname $0) ; CWD=$(pwd)

PRGNAM=apulse
VERSION=${VERSION:-0.1.13}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}

SYSTEM=${SYSTEM:-no}
[ "$SYSTEM" = "devel" ] && HEADERS=yes
case "$SYSTEM" in
  yes|devel) AP_SUBDIR=${AP_SUBDIR:-/}      
             COEXIST="CONFLICTS" ;;
  no)        AP_SUBDIR=${AP_SUBDIR:-/apulse}
             COEXIST="can safely coexist" ;;
  *) echo "*** Invalid SYSTEM setting '$SYSTEM', use one of: no yes devel" 1>&2
     exit 1 ;;
esac

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i586 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
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 "$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="-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"
  # automatically detect multilib, can override with COMPAT32=no
  [ -e /lib/libc.so.6 ] && COMPAT32="${COMPAT32:-yes}"
else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
fi

set -e

buildit() {
  rm -rf build
  mkdir -p build
  cd build
    cmake \
      -DAPULSEPATH=/usr/lib$2${AP_SUBDIR} \
      -DAPULSE_SEARCH_PATHS=/usr/lib${AP_SUBDIR}:/usr/lib${LIBDIRSUFFIX}${AP_SUBDIR} \
      -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_CXX_FLAGS_RELEASE="$SLKCFLAGS $1 -DNDEBUG" \
      -DCMAKE_C_FLAGS_RELEASE="$SLKCFLAGS $1 -DNDEBUG" \
      ..
    make VERBOSE=1
    make install/strip DESTDIR=$PKG
  cd -
}

install_pc() {
  mkdir -p $PKG/usr/lib$1/pkgconfig
  for i in $CWD/pc/*.pc; do
    sed "s,@64@,$1,g" $i > $PKG/usr/lib$1/pkgconfig/$( basename $i )
  done
}

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L .  -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
        \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+

# hardcoded, can't override on cmake command line.
sed -i 's,share/man/,man/,' CMakeLists.txt

# for compat32, we assume x86_64 CPUs handle i686 instructions. also,
# unlike normal 32-bit packages, this one gets -fPIC (which won't hurt).
[ "$COMPAT32" = "yes" ] && buildit "-m32 -march=i686 -mtune=i686" ""

# either way, build the normal libraries with normal cflags.
buildit "" "$LIBDIRSUFFIX"

gzip -9 $PKG/usr/man/*/*

if [ "$HEADERS" = "yes" ]; then
  mkdir -p $PKG/usr/include
  cp -a 3rdparty/pulseaudio-headers/pulse $PKG/usr/include
  install_pc "$LIBDIRSUFFIX"
  [ "$COMPAT32" = "yes" ] && install_pc ""
fi

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/
cp -a LICENSE.MIT README.md $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

mkdir -p $PKG/install
sed "s,@COEXIST@,$COEXIST," $CWD/slack-desc > $PKG/install/slack-desc

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE