aboutsummaryrefslogtreecommitdiff
path: root/audio/jack-tools/jack-tools.SlackBuild
blob: 5546381624526c92d8fed3a94977a2a7bea5cdec (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
#!/bin/bash

# Slackware build script for jack-tools

# Written by B. Watson (yalhcru@gmail.com)

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

# 20180617 bkw:
# - BUILD=2
# - Get rid of VST headers, since Steinberg doesn't want us to
#   distribute them. Thanks to idlemoor for cleaning up the mess
#   in the git history.
# - If the user really needs native VST support, he can get the
#   headers the legit way (from Steinberg) and the script will
#   pick them up. Otherwise, jack-lxvst is just not built. Add
#   README_VST.txt to hopefully clarify the situation.

# 20170127 bkw:
# - Updated for 20170117 (latest commit). Also updated c-common to
#   latest.
# - Added man pages for the new jack-data and jack-lxvst utils.
# - Added VST headers to get jack-lxvst to build. Not sure the
#   licensing status of these, but they were cloned from a public
#   github repo.

# 20151110 bkw:
# - Updated for 20141211. This is the date of the latest darcs
#   commit. Note that the c-common/ in the source tarball is the
#   old one (from my jack-tools-20130616.tar.gz), since jack-tools
#   won't compile against the latest c-common. Only jack-scope
#   and jack-play have changed.
# - Add capability stuff.

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

PRGNAM=jack-tools
VERSION=${VERSION:-20170117}
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 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"
else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
fi

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/${PRGNAM}-$VERSION.tar.xz
cd $PRGNAM-$VERSION

# apply our flags. -Wl,-s strips the binaries.
sed -i "s/-O./$SLKCFLAGS -Wl,-s/" Makefile c-common/Makefile

# Slackware 14.2 doesn't have libtinfo (15.0 will, IIRC).
sed -i 's,-ltinfo,,' Makefile

# Author's library
make -C c-common

# If the Steinberg VST headers are found, put them where the build can find
# them. Neither SBo nor upstream can distribute the headers, you have to get
# them direct from Steinberg.
VST_HEADERS=${VST_HEADERS:-$CWD}
if [ -e $VST_HEADERS/aeffect.h -a -e $VST_HEADERS/aeffectx.h ]; then
  mkdir -p pluginterfaces/vst2.x
  cp $VST_HEADERS/aeffect.h $VST_HEADERS/aeffectx.h pluginterfaces/vst2.x
  STEINBERG_ME_HARDER="yes"
  WITH=WITH
else
  sed -i '/^bin=/s,jack-lxvst,,' Makefile
  WITH=WITHOUT
fi

make

mkdir -p $PKG/usr/bin $PKG/usr/include
make install prefix=$PKG/usr

# man pages generated from *.md markdown files, then manually edited
# to clean up the formatting.
mkdir -p $PKG/usr/man/man1
for page in $CWD/man/*.1; do
  gzip -9c < $page > $PKG/usr/man/man1/$( basename $page ).gz
done

# Only install the lxvst man page if the lxvst binary got built.
if [ "$STEINBERG_ME_HARDER" = "yes" ]; then
  gzip -9c < $CWD/man/jack-lxvst.1.optional > $PKG/usr/man/man1/jack-lxvst.1.gz
fi

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cat README > $PKG/usr/doc/$PRGNAM-$VERSION/README
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

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

# Only add capability stuff if not disabled:
if [ "${SETCAP:-yes}" = "yes" ]; then
  cat $CWD/setcap.sh >> $PKG/install/doinst.sh
  chown root:audio $PKG/usr/bin/*
  chmod 0750 $PKG/usr/bin/*
fi

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