2015-01-08 12:53:16 +00:00
|
|
|
{ fetchgit, stdenv, bash, alsaLib, atk, cairo, faust-compiler, fontconfig, freetype
|
|
|
|
, gcc, gdk_pixbuf, glib, gtk, jack2, makeWrapper, opencv, pango, pkgconfig, unzip
|
2014-11-26 17:08:30 +00:00
|
|
|
, gtkSupport ? true
|
2015-01-08 12:53:16 +00:00
|
|
|
, jackaudioSupport ? true
|
2014-11-26 17:08:30 +00:00
|
|
|
}:
|
|
|
|
|
|
|
|
stdenv.mkDerivation rec {
|
|
|
|
|
2015-01-08 12:53:16 +00:00
|
|
|
version = "8-1-2015";
|
2014-11-26 17:08:30 +00:00
|
|
|
name = "faust-${version}";
|
2015-01-08 12:53:16 +00:00
|
|
|
src = fetchgit {
|
|
|
|
url = git://git.code.sf.net/p/faudiostream/code;
|
|
|
|
rev = "4db76fdc02b6aec8d15a5af77fcd5283abe963ce";
|
|
|
|
sha256 = "f1ac92092ee173e4bcf6b2cb1ac385a7c390fb362a578a403b2b6edd5dc7d5d0";
|
2014-11-26 17:08:30 +00:00
|
|
|
};
|
|
|
|
|
2015-01-08 12:53:16 +00:00
|
|
|
# this version has a bug that manifests when doing faust2jack:
|
|
|
|
/*version = "0.9.67";*/
|
|
|
|
/*name = "faust-${version}";*/
|
|
|
|
/*src = fetchurl {*/
|
|
|
|
/*url = "http://downloads.sourceforge.net/project/faudiostream/faust-${version}.zip";*/
|
|
|
|
/*sha256 = "068vl9536zn0j4pknwfcchzi90rx5pk64wbcbd67z32w0csx8xm1";*/
|
|
|
|
/*};*/
|
|
|
|
|
2014-11-26 17:08:30 +00:00
|
|
|
buildInputs = [ bash unzip faust-compiler gcc makeWrapper pkgconfig ]
|
|
|
|
++ stdenv.lib.optionals gtkSupport [
|
|
|
|
alsaLib atk cairo fontconfig freetype gdk_pixbuf glib gtk pango
|
|
|
|
]
|
2015-01-08 12:53:16 +00:00
|
|
|
++ stdenv.lib.optional jackaudioSupport jack2
|
2014-11-26 17:08:30 +00:00
|
|
|
;
|
|
|
|
|
|
|
|
makeFlags="PREFIX=$(out)";
|
|
|
|
FPATH="$out"; # <- where to search
|
|
|
|
|
|
|
|
phases = [ "unpackPhase installPhase postInstall" ];
|
|
|
|
|
|
|
|
installPhase = ''
|
2015-01-08 12:53:16 +00:00
|
|
|
sed -i 23,24d tools/faust2appls/faust2jack
|
2014-11-26 17:08:30 +00:00
|
|
|
mkdir $out/bin
|
|
|
|
install tools/faust2appls/faust2alsaconsole $out/bin
|
|
|
|
install tools/faust2appls/faustpath $out/bin
|
|
|
|
install tools/faust2appls/faustoptflags $out/bin
|
|
|
|
install tools/faust2appls/faust2alsa $out/bin
|
2015-01-08 12:53:16 +00:00
|
|
|
install tools/faust2appls/faust2jack $out/bin
|
|
|
|
|
|
|
|
patchShebangs $out/bin
|
2014-11-26 17:08:30 +00:00
|
|
|
|
|
|
|
wrapProgram $out/bin/faust2alsaconsole \
|
|
|
|
--prefix PKG_CONFIG_PATH : ${alsaLib}/lib/pkgconfig \
|
|
|
|
--set FAUSTLIB ${faust-compiler}/lib/faust \
|
|
|
|
--set FAUSTINC ${faust-compiler}/include/
|
|
|
|
|
|
|
|
GTK_PKGCONFIG_PATHS=${gtk}/lib/pkgconfig:${pango}/lib/pkgconfig:${glib}/lib/pkgconfig:${cairo}/lib/pkgconfig:${gdk_pixbuf}/lib/pkgconfig:${atk}/lib/pkgconfig:${freetype}/lib/pkgconfig:${fontconfig}/lib/pkgconfig
|
|
|
|
|
|
|
|
wrapProgram $out/bin/faust2alsa \
|
|
|
|
--prefix PKG_CONFIG_PATH : ${alsaLib}/lib/pkgconfig:$GTK_PKGCONFIG_PATHS \
|
|
|
|
--set FAUSTLIB ${faust-compiler}/lib/faust \
|
|
|
|
--set FAUSTINC ${faust-compiler}/include/ \
|
|
|
|
|
2015-01-08 12:53:16 +00:00
|
|
|
|
|
|
|
wrapProgram $out/bin/faust2jack \
|
|
|
|
--prefix PKG_CONFIG_PATH : ${jack2}/lib/pkgconfig:${opencv}/lib/pkgconfig:$GTK_PKGCONFIG_PATHS \
|
|
|
|
--set FAUSTLIB ${faust-compiler}/lib/faust \
|
|
|
|
--set FAUSTINC ${faust-compiler}/include/ \
|
|
|
|
|
|
|
|
''
|
|
|
|
+ stdenv.lib.optionalString (!gtkSupport) "rm $out/bin/faust2alsa"
|
|
|
|
+ stdenv.lib.optionalString (!gtkSupport || !jackaudioSupport) "rm $out/bin/faust2jack"
|
|
|
|
;
|
2014-11-26 17:08:30 +00:00
|
|
|
postInstall = ''
|
|
|
|
sed -e "s@\$FAUST_INSTALL /usr/local /usr /opt /opt/local@${faust-compiler}@g" -i $out/bin/faustpath
|
|
|
|
sed -i "s@/bin/bash@${bash}/bin/bash@g" $out/bin/faustoptflags
|
2015-01-08 12:53:16 +00:00
|
|
|
find $out/bin/ -name "*faust2*" -type f | xargs sed "s@pkg-config@${pkgconfig}/bin/pkg-config@g" -i
|
|
|
|
find $out/bin/ -name "*faust2*" -type f | xargs sed "s@CXX=g++@CXX=${gcc}/bin/g++@g" -i
|
|
|
|
find $out/bin/ -name "*faust2*" -type f | xargs sed "s@faust -i -a @${faust-compiler}/bin/faust -i -a ${faust-compiler}/lib/faust/@g" -i
|
2014-11-26 17:08:30 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
meta = with stdenv.lib; {
|
|
|
|
description = "A functional programming language for realtime audio signal processing";
|
|
|
|
longDescription = ''
|
|
|
|
FAUST (Functional Audio Stream) is a functional programming
|
|
|
|
language specifically designed for real-time signal processing
|
|
|
|
and synthesis. FAUST targets high-performance signal processing
|
|
|
|
applications and audio plug-ins for a variety of platforms and
|
|
|
|
standards.
|
|
|
|
The Faust compiler translates DSP specifications into very
|
|
|
|
efficient C++ code. Thanks to the notion of architecture,
|
|
|
|
FAUST programs can be easily deployed on a large variety of
|
|
|
|
audio platforms and plugin formats (jack, alsa, ladspa, maxmsp,
|
|
|
|
puredata, csound, supercollider, pure, vst, coreaudio) without
|
|
|
|
any change to the FAUST code.
|
|
|
|
'';
|
|
|
|
homepage = http://faust.grame.fr/;
|
|
|
|
downloadPage = http://sourceforge.net/projects/faudiostream/files/;
|
|
|
|
license = licenses.gpl2;
|
|
|
|
platforms = platforms.linux;
|
|
|
|
maintainers = [ maintainers.magnetophon ];
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|