# Maintainer: David Runge <dave@sleepmap.de>
# Contributor: Albert Graef <aggraef at gmail.com>
# Contributor: Bernardo Barros <bernardobarros at gmail dot com>
# Contributor: bjoern lindig (bjoern _dot_ lindig _at_ google.com)

pkgname=faust
pkgver=2.15.11
pkgrel=1
pkgdesc="A functional programming language for realtime audio signal processing."
arch=('x86_64')
url="https://faust.grame.fr/"
license=('GPL2')
groups=('pro-audio')
depends=('llvm-libs' 'libsndfile' 'libmicrohttpd')
makedepends=('cmake' 'llvm' 'xxd')
optdepends=('clang: for sound2reader'
            'csound: for faust2csound'
            'graphviz: for faust2sig{,viewer}'
            'gtk2: for faust2{jack,rosgtk}'
            'inkscape: for faust2{pdf,png}'
            'jack: for faust2{api,jack{,console,internal,server,rust},jaqt,netjackqt,nodejs,ros,rosgtk,rpinetjackconsole}'
            'swig: for faust2android'
            'libsndfile: for faust2{dummy,sndfile}'
            'octave: for faust2octave'
            'pd: for faust2puredata'
            'portaudio: for faust2paqt'
            'python2: for faust2md and faust2atomsnippets'
            'qt5-tools: for faust2{faustvst,jaqt,lv2}'
            'rtaudio: for faust2raqt'
            'ruby: for faust2sc and scbuilder'
            'rust: for faust2jackrust'
            'supercollider: for faust2supercollider'
            'texlive-core: for faust2pdf')
options=('staticlibs')
source=("https://github.com/grame-cncm/${pkgname}/releases/download/${pkgver}/${pkgname}-${pkgver}.tar.gz")
sha512sums=('24590a2f726e5aff577a8be57293940a2cb80bcacff7e33986c66c0aa1e4d27bbba6b1335b2855efc35e83b3a8206a12f4f3bb83aa813a817a648e174a3c15fc')

prepare() {
  cd "${pkgname}-${pkgver}"
  # fix scripts requiring python2:
  # https://github.com/grame-cncm/faust/issues/301
  sed -e '1s/python/&2/' \
      -i "tools/${pkgname}2appls/${pkgname}2atomsnippets"
  # RELRO for sound2faust and sound2file
  # https://github.com/grame-cncm/faust/issues/302
  sed -e "/\$(LIBS)/ s/$/ $LDFLAGS/g" \
      -i tools/sound2faust/Makefile
}

build() {
  cd "${pkgname}-${pkgver}"
  make PREFIX=/usr world
}

package() {
  cd "${pkgname}-${pkgver}"
  make install PREFIX=/usr DESTDIR="$pkgdir"

  # docs
  install -t "${pkgdir}/usr/share/doc/${pkgname}" \
    -vDm 644 documentation/{,misc/}*.pdf

  # examples
  install -vd "${pkgdir}/usr/share/${pkgname}/examples"
  cp -vR "examples/"* "${pkgdir}/usr/share/${pkgname}/examples/"

  cd syntax-highlighting
  # atom
  install -vDm 644 "atom/language-${pkgname}/package.json" \
    -t "${pkgdir}/usr/lib/atom/dot-atom/packages/language-${pkgname}/"
  install -vDm 644 "atom/language-${pkgname}/grammars/${pkgname}.cson" \
    -t "${pkgdir}/usr/lib/atom/dot-atom/packages/language-${pkgname}/grammars/"
  install -vDm 644 "atom/language-${pkgname}/settings/language-${pkgname}.cson" \
    -t "${pkgdir}/usr/lib/atom/dot-atom/packages/language-${pkgname}/settings/"
  install -vDm 644 "atom/language-${pkgname}/snippets/"* \
    -t "${pkgdir}/usr/lib/atom/dot-atom/packages/language-${pkgname}/snippets/"
  install -vDm 644 "atom/language-${pkgname}/process-palette.json.linux" \
    "${pkgdir}/usr/share/doc/${pkgname}/process-palette.json"
  # kate
  install -vDm 644 "${pkgname}.xml" \
    -t "${pkgdir}/usr/share/apps/katepart/syntax/"
  # gedit
  install -vDm 644 "${pkgname}.lang" \
    -t "${pkgdir}/usr/share/gtksourceview-2.0/language-specs/"
  install -vDm 644 "${pkgname}.lang" \
    -t "${pkgdir}/usr/share/gtksourceview-3.0/language-specs/"
  # highlight
  install -vDm 644 dsp.lang -t "$pkgdir/usr/share/highlight/langDefs/"
  # nano
  install -vDm 644 "${pkgname}.nanorc" -t "$pkgdir/usr/share/nano/"
  # vim
  install -vDm 644 "${pkgname}.vim" \
    -t "${pkgdir}/usr/share/vim/vimfiles/syntax/"
  # emacs
  install -vDm 644 "${pkgname}-mode.el" \
    -t "${pkgdir}/usr/share/emacs/site-lisp/"
}

