summaryrefslogtreecommitdiff
path: root/audio/jack-tools/jack-tools.SlackBuild
blob: 524f4b8320678ab6c2a54180323ce0f763a6b0a1 (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
143
#!/bin/bash

# Slackware build script for jack-tools

# Written by B. Watson (urchlay@slackware.uk)

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

# 20211128 bkw:
# - Update for v20210917_ab297f4 (latest git).
# - Now that Slackware-current has asciidoctor, use it to generate
#   man pages (and get rid of my own hacked-up ones).
# - Binary names all changed from jack-* to rju-*, note in README.
# - Add git2tarxz.sh now that upstream's switched to git.

# 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:-20210917_ab297f4}
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="-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

# Sources live in a subdir (but the docs don't).
cd $PRGNAM-$VERSION/cmd

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

# 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
  # Steinberg me harder!
  mkdir -p pluginterfaces/vst2.x
  cp $VST_HEADERS/aeffect.h $VST_HEADERS/aeffectx.h pluginterfaces/vst2.x
  WITH=WITH
else
  sed -i '/^bin *=/s,\(rju-lxvst\|lxvst-query\),,g' Makefile
  WITH=WITHOUT
  # Don't install the lxvst man page if building without VST.
  rm -f ../md/*lxvst*
fi

make
make all VST_SDK=$(pwd)

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

# Back to parent source dir.
cd $TMP/$PRGNAM-$VERSION

# generate man pages. results aren't perfectly formatted, but not too bad.
# upstream doesn't have a lxvst-query.md.
asciidoctor -b manpage -d manpage md/rju-*.md

mkdir -p $PKG/usr/man/man1
cp md/*.1 $PKG/usr/man/man1
gzip -9 $PKG/usr/man/man1/*

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cat README.md > $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