# Maintainer: David Runge <dvzrv@archlinux.org>
# Maintainer: Brett Cornwall <ainola@archlinux.org>
# Contributor: speps
# Contributor: Bernardo Barros

# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
#  - disable NEON
#  - disable java interface
#  - skip aarch64 - incompatible with beta luajit

buildarch=22

pkgbase=csound
pkgname=(csound csound-doc)
pkgver=6.16.2
_manual_pkgver=6.16.0
pkgrel=8
pkgdesc="A programming language for sound rendering and signal processing."
arch=(x86_64)
url="https://csound.com"
license=(LGPL2.1)
# libpd needs to be packaged: https://github.com/libpd/libpd/releases
# gmm > 5.1 breaks linear-algebra opcode: https://github.com/csound/csound/issues/920
makedepends=(
  alsa-lib
  cmake
  doxygen
  dssi
  fluidsynth
  hdf5
  jack
  java-environment
  ladspa
  libmusicxml
  libsamplerate
  libsndfile
  libwebsockets
  llvm
  lua
  openssl
  portaudio
  portmidi
  portsmf
  python
  stk
  strip-nondeterminism
  swig
  wiiuse
)
checkdepends=(cunit)
source=("${pkgbase}-${pkgver}.tar.gz::https://github.com/${pkgbase}/${pkgbase}/archive/${pkgver}.tar.gz"
        "${pkgbase}.sh"
        "https://github.com/${pkgbase}/${pkgbase}/releases/download/${_manual_pkgver}/Csound${_manual_pkgver}_manual_html.zip"
        "https://github.com/${pkgbase}/${pkgbase}/releases/download/${_manual_pkgver}/Csound${_manual_pkgver}_manual_pdf.zip")
sha512sums=('5feda6f0aa934548b77736f5757a6c18558f295e9ffe6bcf0a41215ea0054a0da5262eb4a101215152b714efd415648a483eea974300f3d62f39eb44aab53cbb'
            '53a8ae1e61db2a3a492930ef0f0881b613ae47108c5e8de0a6e2aa28bcf7a5c93c7fea8b7fc2bbae29ab92e1e68bf94ba406be1255ad8ab5725ea9078c1fd6dc'
            'e550a832e365ab186533045d110259699039d08a85ec2f53d4fe36aa31004725b1dc6732f71d9895fa19b3df5f4ec720af1b4f80856a14b0ffbd844c4ab2dbe3'
            '18347ce7080ca7997e98f8addffcc492c7ec5d8e037e71a33bb46fdbc5b58ec26ee42f370689fc228d4150bd9dedc31c7824ec4c19f3243d512977f4380f9490')
b2sums=('6c0f569ac52564df75bd63db8381df651c0bb4c5f7569686024e4ecbfe1cf01bd9e891a902487219709cb9b8029749bce36b1d98053eb387cfb8c030aa4f5a83'
        '8a556685d0f9ee55c4de521b3d76fc729936e98e991e8ea860d64b29a1b09d142ab0a51548b2dddadb41ecb796e84ba1f8ed114494b4c67d7d6d8ab3475b2ede'
        '3bf6e2202a42dfa826d39ef41282e1942f26cc3f6a3358e0de3a006f102b686342b4e1824a1c3a48ac37ffed31d9353e6946d948751dcc059819da649d63d9cb'
        '7bb35f806568a80abbd84a4f4988217bea09f3174881d802f6d61505f044c8a26b59036dcb61ead5315e756a4512eb1fb56b2824f27f09899a8fe1664a386754')

prepare() {
  # fix file permissions in html manual
  find html/ -type f -exec chmod -c 644 {} \;
}

build() {
  local _java_major=$(java --version 2>/dev/null |grep 'openjdk'| cut -d ' ' -f2| cut -d '.' -f1)
  cd "${pkgbase}-${pkgver}"
  # it's not allowed to redistribute the scansyn opcodes: https://github.com/csound/csound/issues/1148
  # the python plugin is not python3 compatible: https://github.com/csound/csound/issues/631
  cmake -DCMAKE_INSTALL_PREFIX=/usr \
        -DCMAKE_BUILD_TYPE=None \
        -DBUILD_SCANSYN_OPCODES=OFF \
        -DCMAKE_CXX_FLAGS="-Wno-error -Wno-missing-field-initializers -DPFFFT_SIMD_DISABLE" \
        -DCMAKE_C_FLAGS="-Wno-error -Wno-missing-field-initializers -DPFFFT_SIMD_DISABLE" \
        -DBUILD_JAVA_INTERFACE=0 \
        -DJAVA_AWT_LIBRARY="/usr/lib/jvm/java-${_java_major}-openjdk/jre/lib/libawt.so" \
        -DJAVA_JVM_LIBRARY="/usr/lib/jvm/java-${_java_major}-openjdk/jre/lib" \
        -DLUA_LIBRARY=/usr/lib/liblua.so \
        -DBUILD_STATIC_LIBRARY=ON \
        -W no-dev \
        -B build \
        -S .
  make VERBOSE=1 -C build
}

check() {
  cd "${pkgbase}-${pkgver}"
  make test -C build
}

package_csound() {
  groups=(pro-audio)
  depends=(gcc-libs glibc libcurl.so libsamplerate.so libsndfile.so)
  optdepends=('alsa-lib: for librtalsa plugin'
              'csound-doc: for the canonical Csound Reference Manual'
              'csound-plugins: for extra opcodes not shipped with Csound'
              'csoundqt: for frontend/ editor with integrated help'
              'hdf5: for hdf5ops plugin'
              'java-runtime: java integration'
              'fluidsynth: for libfluidOpcodes plugin'
              'jack: for libjacko, librtjack and libjackTransport plugins'
              'liblo: for libosc plugin'
              'ncurses: for libfaustcsound plugin'
              'portmidi: for libpmidi plugin'
              'portaudio: for librtpa plugin'
              'libpulse: for librtpulse plugin'
              'stk: for libstkops plugin'
              'libwebsockets: for libwebsocketIO plugin'
              'wiiuse: for libwiimote plugin'
              'libx11: for libwidgets plugin'
              'lua: for LUA integration'
              'openssl: for libfaustcsound plugin'
              'python-numpy: For Csound Python bindings'
              'vim-csound: vim integration'
              'zlib: for libfaustcsound plugin')
  provides=(libcsound64.so libcsnd6.so)
  cd "${pkgname}-${pkgver}"
  make VERBOSE=1 DESTDIR="${pkgdir}/" install -C build

  # export vars in profile.d
  install -vDm 755 "${srcdir}/${pkgname}.sh" -t "${pkgdir}/etc/profile.d/"
  # rename extract executable due to name conflict with libextractor
  # https://github.com/csound/csound/issues/985
  mv -v "${pkgdir}/usr/bin/extract" "${pkgdir}/usr/bin/${pkgname}-extract"
  # moving csnd6.jar to /usr/share/java
  #install -vdm 755 "${pkgdir}/usr/share/java/"
  #mv -v "${pkgdir}/usr/lib/"*.jar "${pkgdir}/usr/share/java/"

  # For reproducibility (See https://bugs.archlinux.org/task/70331)
  find ${pkgdir} -name '*.jar' -exec strip-nondeterminism {} +
}

package_csound-doc() {
  install -vDm 644 "${srcdir}/Csound${_manual_pkgver}_manual.pdf" \
    "${pkgdir}/usr/share/doc/${pkgname}/${pkgbase}-manual.pdf"
  install -dv "${pkgdir}/usr/share/doc/${pkgname}/html"
  cp -av "${srcdir}/html/"* "${pkgdir}/usr/share/doc/${pkgname}/html"
}
# vim:set ts=2 sw=2 et: