158 lines
5.3 KiB
Bash
158 lines
5.3 KiB
Bash
# Template file for 'cabbage'
|
|
pkgname=cabbage
|
|
version=2.5.0
|
|
revision=1
|
|
# specified in buildLinux.sh
|
|
_jucever=5.4.7
|
|
_vstsdkver=3611_22_10_2018_build_34
|
|
create_wrksrc=yes
|
|
build_wrksrc="${pkgname}-${version}"
|
|
hostmakedepends="pkg-config xorg-server-xvfb"
|
|
makedepends="libfreeglut-devel libcurl-devel jack-devel libXcomposite-devel
|
|
libXrandr-devel libXcursor-devel libX11-devel libXinerama-devel MesaLib-devel
|
|
gtk+3-devel webkit2gtk-devel csound alsa-lib-devel libsndfile-devel"
|
|
depends="csound"
|
|
short_desc="Framework for audio software development"
|
|
maintainer="Olga U <me@laserbat.pw>"
|
|
license="GPL-3.0-or-later"
|
|
homepage="https://cabbageaudio.com/"
|
|
distfiles="https://github.com/WeAreROLI/JUCE/archive/${_jucever}.tar.gz
|
|
https://github.com/rorywalsh/cabbage/archive/v${version}.tar.gz
|
|
https://cabbageaudio.com/beta/heads.zip
|
|
https://download.steinberg.net/sdk_downloads/vstsdk${_vstsdkver}.zip"
|
|
checksum="0f446cf09177e559d2f2e9a77a78faed611cc869e219a7dc859a6e9b72eca64d
|
|
68d2868ee72092ff1f809d472f561f5317512be91f1274390386afea248e78a2
|
|
6167199d752fa301e93f1383f9ad700ef646611db53c97d7433fffdb19765e29
|
|
de64ff1b5b40a7fdc2de873e80d911ffa9fd6b82435a555dda1e8edc267d1fa3"
|
|
nocross="Projucer in template uses compiled binary"
|
|
|
|
# vsx accel stuff from libpng is not shipped
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
ppc*) CXXFLAGS="-DPNG_POWERPC_VSX_OPT=0" ;;
|
|
esac
|
|
|
|
if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
|
|
makedepends+=" libatomic-devel"
|
|
LDFLAGS=" -latomic"
|
|
fi
|
|
|
|
# without TARGET_ARCH, the build system will assume -march=native,
|
|
# which is wrong as we're building a generic package and -march does
|
|
# not even always work
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
i686*) _tarch="-mtune=i686";;
|
|
x86_64*) _tarch="-march=x86-64";;
|
|
aarch64*) _tarch="-march=armv8-a";;
|
|
armv5te*) _tarch="-march=armv5te";;
|
|
armv6*) _tarch="-march=armv6";;
|
|
armv7*) _tarch="-march=armv7-a";;
|
|
ppc64le*) _tarch="-mcpu=powerpc64le";;
|
|
ppc64*) _tarch="-mcpu=970";;
|
|
ppc*) _tarch="-mcpu=powerpc";;
|
|
mips*) _tarch="-mtune=mips32r2";;
|
|
*) broken="Unsupported architecture";;
|
|
esac
|
|
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
*-musl) makedepends+=" libexecinfo-devel"
|
|
broken="error: '_NL_IDENTIFICATION_LANGUAGE' was not declared in this scope" ;;
|
|
esac
|
|
|
|
Projucer() {
|
|
# This is needed as a workaround for a bug in Projucer
|
|
# https://github.com/WeAreROLI/JUCE/issues/422
|
|
# The HOME variable is spoofed because it looks for headers in
|
|
# ~/SDKs/ (path hardcoded)
|
|
# TODO: use xvfb-run script for testing
|
|
|
|
Xvfb :999 &
|
|
XVFB_PID=$!
|
|
HOME=${wrksrc} DISPLAY=":999" "${wrksrc}/JUCE-${_jucever}/extras/Projucer/Builds/LinuxMakefile/build/Projucer" "$@"
|
|
kill $XVFB_PID || true
|
|
}
|
|
|
|
post_extract() {
|
|
mkdir SDKs
|
|
mv VST_SDK SDKs
|
|
mv vst2.x SDKs/VST_SDK/VST3_SDK/pluginterfaces
|
|
cd "${wrksrc}/cabbage-${version}"
|
|
|
|
# There are lots of hardcoded paths that need to be rewritten
|
|
vsed -e 's@sourcecode/@@' -i CabbageLite.jucer
|
|
|
|
for f in *jucer; do
|
|
vsed -e "s@/usr/local/include/csound@/usr/include/csound@g" \
|
|
-e "s@/usr/local/lib@/usr/lib@g" \
|
|
-e "s@../JUCE@../JUCE-${_jucever}@" \
|
|
-i "$f"
|
|
done
|
|
|
|
vsed -e "s|/usr/local/include/csound|/usr/include/csound|g" \
|
|
-i Builds/LinuxMakefile/buildCabbage
|
|
|
|
vsed -e '/opcodeFile\ +=/s#/#/../share/doc/cabbage/#' \
|
|
-i Source/CodeEditor/CabbageCodeEditor.cpp
|
|
|
|
vsed -e '/CabbagePlugin\(Synth\|Effect\)/s#"/#"/../lib/vst/#' \
|
|
-i Source/Utilities/CabbageExportPlugin.cpp
|
|
|
|
# Fix compilation on i686
|
|
vsed -e 's/__sigemptyset/sigemptyset/' \
|
|
-i ../JUCE-${_jucever}/modules/juce_audio_formats/codecs/flac/libFLAC/cpu.c
|
|
|
|
vsed -e "s/JUCER_ENABLE_GPL_MODE 0/JUCER_ENABLE_GPL_MODE 1/" \
|
|
-i ../JUCE-${_jucever}/extras/Projucer/JuceLibraryCode/AppConfig.h
|
|
}
|
|
|
|
do_build() {
|
|
cd "${wrksrc}/JUCE-${_jucever}/extras/Projucer/Builds/LinuxMakefile/"
|
|
make ${makejobs} TARGET_ARCH="${_tarch}"
|
|
|
|
cd "${wrksrc}/cabbage-${version}/Builds/LinuxMakefile"
|
|
|
|
Projucer --resave ../../CabbageIDE.jucer
|
|
mv Makefile MakeCabbageIDE
|
|
vsed -i MakeCabbageIDE -e "s@\$(HOME)@${wrksrc}@"
|
|
make -f MakeCabbageIDE ${makejobs} CONFIG=Release TARGET_ARCH="${_tarch}"
|
|
|
|
Projucer --resave ../../CabbagePlugin.jucer
|
|
mv Makefile MakePluginEffect
|
|
vsed -i MakePluginEffect -e "s@\$(HOME)@${wrksrc}@"
|
|
make -f MakePluginEffect ${makejobs} CONFIG=Release TARGET_ARCH="${_tarch}"
|
|
mv ./build/CabbagePlugin.so ./build/CabbagePluginEffect.so
|
|
|
|
Projucer --resave ../../CabbagePluginSynth.jucer
|
|
mv Makefile MakePluginSynth
|
|
vsed -i MakePluginSynth -e "s@\$(HOME)@${wrksrc}@"
|
|
make -f MakePluginSynth ${makejobs} CONFIG=Release TARGET_ARCH="${_tarch}"
|
|
mv ./build/CabbagePlugin.so ./build/CabbagePluginSynth.so
|
|
|
|
Projucer --resave ../../CabbageLite.jucer
|
|
cp -r ../../../JUCE-${_jucever}/modules/juce_audio_plugin_client/ ../../JuceLibraryCode/modules/
|
|
mv Makefile MakeCabbageLite
|
|
make -f MakeCabbageLite ${makejobs} CONFIG=Release TARGET_ARCH="${_tarch}"
|
|
}
|
|
|
|
do_install() {
|
|
cd "${wrksrc}/cabbage-${version}/Builds/LinuxMakefile"
|
|
|
|
find ../../Examples -name '.DS_Store' -delete
|
|
find ../../Examples -name '*_Log.txt' -delete
|
|
|
|
vbin build/Cabbage
|
|
vbin build/CabbageLite
|
|
|
|
vmkdir usr/lib/vst
|
|
vinstall build/CabbagePluginEffect.so 755 usr/lib/vst
|
|
vinstall build/CabbagePluginSynth.so 755 usr/lib/vst
|
|
|
|
vdoc ../opcodes.txt
|
|
|
|
vinstall ../../Images/cabbage.png 644 usr/share/icons/hicolor/512x512/apps/
|
|
vinstall Cabbage.desktop 644 usr/share/applications/
|
|
vinstall CabbageLite.desktop 644 usr/share/applications/
|
|
|
|
vmkdir usr/share/doc/cabbage/examples
|
|
vcopy '../../Examples/*' usr/share/doc/cabbage/examples/
|
|
}
|