# $Id$
# Maintainer: Kyle Keen <keenerd@gmail.com>
# Contributor: Dominik Heidler <dheidler@gmail.com>
# Contributor:	Jonatan Sastre <jsastreh [ at ] hotmail.com>

# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
#  - set -Dhave_mfpu_neon=0 for v5/v6

pkgbase=gnuradio
pkgname=(gnuradio gnuradio-companion)
pkgver=3.7.11
pkgrel=5
pkgdesc="General purpose DSP and SDR toolkit.  With drivers for usrp and fcd."
arch=('x86_64')
url="http://gnuradio.org"
license=('GPL')
depends=('fftw' 'python2-numpy' 'cppunit' 'gsl' 'blas' 'boost-libs>=1.53'
    'libusbx' 'portaudio' 'libuhd' 'zeromq' 'libvolk')
makedepends=('boost' 'cmake' 'python2-lxml' 'python2-cheetah' 'glu' 'swig'
    'pygtk' 'wxpython' 'python2-pyqwt' 'qwtplot3d')

# todo
# split the gui components?
# build doxygen docs?
# gr-video-sdl ?
# icons

# comedilib: gr-comedi
# zeroc-ice: gr-ctrlport
# doxygen: C++ autogenerated documentation
# python2-sphinx: Python autogenerated documentation

# secret release directory
#source=("http://s3-dist.gnuradio.org/gnuradio-$pkgver.tar.gz"
source=("https://gnuradio.org/releases/$pkgbase/$pkgbase-$pkgver.tar.gz"
        "https://gnuradio.org/releases/$pkgbase/$pkgbase-$pkgver.tar.gz.asc"
        "21-fcd.rules" "gnuradio-gcc7.patch")
validpgpkeys=('B90DDFAC56989BF62262EB812987C77CBB8ED9B2') # GNU Radio Project
md5sums=('7b7b871237ae6fc109d203f78c4654ef'
         'SKIP'
         '465e12c454c6a22ebec9849181af7bdc'
         'c510104fa2ad9852a683c265c42ae1da')

prepare() {
  cd "$srcdir/$pkgbase-$pkgver"
  msg "Replacing filenames to use python2."
  sed -i -e "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" \
    $(find ./ -name '*.py') \
    $(find ./ -name 'gnuradio-companion' -o -name 'flow_graph.tmpl')
  sed -i -e "s|#![ ]*/usr/bin/env /usr/bin/python$|#!/usr/bin/env python2|" \
    $(find ./ -name '*.py')
  # fix build with GCC 7 (Fedora)
  patch -p1 -i ../gnuradio-gcc7.patch
}

build() {
  export PYTHON=python2
  cd "$srcdir/$pkgbase-$pkgver"
  sed -i -e "s|GR_PKG_LIBEXEC_DIR|GR_RUNTIME_DIR|" grc/scripts/freedesktop/CMakeLists.txt
  sed -i -e "s|/qwt$|/qwt5|" -e "s| qwt | qwt5 |" cmake/Modules/FindQwt.cmake
  sed -i -e "s| sphinx-build$| sphinx-build2|" cmake/Modules/FindSphinx.cmake
  msg "Starting build."

  [[ $CARCH == "arm" || $CARCH == "armv6h" ]] && NEON="-Dhave_mfpu_neon=0"

  mkdir -p build
  cd build
  cmake \
    -DPYTHON_EXECUTABLE=$(which python2) \
    -DPYTHON_INCLUDE_DIR=$(echo /usr/include/python2*) \
    -DENABLE_GR_QTGUI=ON \
    -DPYTHON_LIBRARY=$(echo /usr/lib/libpython2.*.so) \
    -DENABLE_INTERNAL_VOLK=OFF \
    -DENABLE_GRC=ON \
    -DENABLE_GR_WXGUI=ON \
    -DCMAKE_INSTALL_PREFIX=/usr -Wno-dev $NEON ../
  make
}

check() {
  cd "$srcdir/$pkgbase-$pkgver/build"
  export PYTHON=python2
  #make test
}

package_gnuradio() {
  optdepends=('boost: gr_modtool'
              'swig: gr_modtool'
              'cmake: gr_modtool'
              'pkgconfig: libuhd')
  cd "$srcdir"
  install -Dm644 21-fcd.rules "$pkgdir/usr/lib/udev/rules.d/21-fcd.rules"
  cd "$srcdir/$pkgbase-$pkgver/grc/scripts/freedesktop"
  install -Dm644 gnuradio-grc.desktop "$pkgdir/usr/share/applications/gnuradio-grc.desktop"
  cd "$srcdir/$pkgbase-$pkgver/build"
  make DESTDIR="$pkgdir" install
}

package_gnuradio-companion() {
  pkgdesc="GUI frontend for gnuradio and SDR."
  depends=('gnuradio' 'python2-cheetah' 'python2-lxml'
      'pygtk' 'wxpython' 'python2-opengl' 'python2-pyqwt' 'qwtplot3d'
      'python2-numarray')
  # Yup, nothing in the package except dependencies,
  # because more than five optdeps is too many for most people.
}

# options for armv6:
# -Dhave_mfpu_neon=0 \
# -DCMAKE_CXX_FLAGS:STRING="-march=armv6 -mfpu=vfp -mfloat-abi=hard" \
# -DCMAKE_C_FLAGS:STRING="-march=armv6 -mfpu=vfp -mfloat-abi=hard" \

# options for armv7:
# -DCMAKE_CXX_FLAGS:STRING="-march=armv7-a -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=hard"
# -DCMAKE_C_FLAGS:STRING="-march=armv7-a -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=hard"
# line 341 add /usr/lib/arm-linux-gnueabihf /usr/lib/arm-linux-gnueabi