# Maintainer: Václav Šmilauer <eu@doxos.eu>

_realname=aravis
pkgbase=mingw-w64-${_realname}
pkgname=(
	"${MINGW_PACKAGE_PREFIX}-${_realname}"
	"${MINGW_PACKAGE_PREFIX}-${_realname}-gst"
)
pkgver=0.8.31
pkgrel=1
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
msys2_references=(
  'aur: aravis'
)
msys2_repository_url="https://github.com/AravisProject/aravis/"
url="https://wiki.gnome.org/Projects/Aravis"
makedepends=(
	 "rsync"
	 "${MINGW_PACKAGE_PREFIX}-meson"
	 "${MINGW_PACKAGE_PREFIX}-libnotify"
	 "${MINGW_PACKAGE_PREFIX}-pkgconf"
	 "${MINGW_PACKAGE_PREFIX}-libxml2"
	 "${MINGW_PACKAGE_PREFIX}-zlib"
	 "${MINGW_PACKAGE_PREFIX}-libusb"
	 "${MINGW_PACKAGE_PREFIX}-gobject-introspection"
	 "${MINGW_PACKAGE_PREFIX}-gtk3"
	 "${MINGW_PACKAGE_PREFIX}-gstreamer"
	 "${MINGW_PACKAGE_PREFIX}-gst-plugins-base"
	 "${MINGW_PACKAGE_PREFIX}-cc"
)
license=('spdx:LGPL-2.1-or-later')
source=("https://github.com/AravisProject/aravis/releases/download/${pkgver}/${_realname}-${pkgver}.tar.xz")
sha256sums=('9c4ebe6273ed3abe466cb6ed8fa5c132bdd7e9a9298ca43fa0212c4311a084da')

prepare() {
  cd "${_realname}-${pkgver}"
}

build() {
  mkdir -p build-${MSYSTEM} && cd build-${MSYSTEM}

  MSYS2_ARG_CONV_EXCL="--prefix=" \
  ${MINGW_PREFIX}/bin/meson setup \
    --prefix=${MINGW_PREFIX} \
    --buildtype=plain \
    -Ddocumentation=disabled \
    -Dgst-plugin=enabled \
    -Dintrospection=enabled \
    -Dusb=enabled \
    -Dviewer=enabled \
    "../${_realname}-${pkgver}"

  ${MINGW_PREFIX}/bin/meson compile
}

check() {
  cd "${srcdir}/build-${MSYSTEM}"

  # Add current build dirs to PATH to find DLLs
  PATH=$PWD/gst:$PWD/src:$PATH ${MINGW_PREFIX}/bin/meson test || warning "Tests failed"
}

_move_aravis-gst_to_dst(){
    # move everything from $1 which is not the base lib to $2
    rsync -armR -v \
        --remove-source-files \
        --include='bin/arv-viewer*' \
        --exclude='bin/*'  \
        --exclude='include/' \
        --exclude='pkgconfig/' \
        --exclude='libaravis*' \
        --exclude='licenses/' \
        --exclude='gir-*/' \
        --exclude='girepository*/' \
        "${1}/./" "${2}"
    # delete empty directories in $1
    find "${1}" -type d -empty -delete
}

package_aravis() {
	pkgdesc="A vision library for genicam based cameras (library, headers, tools) (mingw-w64)"
	depends=(
		"${MINGW_PACKAGE_PREFIX}-libnotify"
		"${MINGW_PACKAGE_PREFIX}-libxml2"
		"${MINGW_PACKAGE_PREFIX}-zlib"
		"${MINGW_PACKAGE_PREFIX}-libusb"
		"${MINGW_PACKAGE_PREFIX}-gobject-introspection-runtime"
	)
	cd "${srcdir}/build-${MSYSTEM}"
	DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/meson install
	_TMP=`realpath _tmp`
	mkdir ${_TMP}
	_move_aravis-gst_to_dst "${pkgdir}${MINGW_PREFIX}" "${_TMP}"
	rm -rf ${_TMP}
}

package_aravis-gst() {
	pkgdesc="A vision library for genicam based cameras (Gtk3 viewer, GStreamer plugin) (mingw-w64)"
	depends=(
		"${MINGW_PACKAGE_PREFIX}-aravis"
		"${MINGW_PACKAGE_PREFIX}-gtk3"
		"${MINGW_PACKAGE_PREFIX}-gst-plugins-good"
		"${MINGW_PACKAGE_PREFIX}-gstreamer"
	)
	# DESTDIR="$_TMP" ${MINGW_PREFIX}/bin/meson install
	cd "${srcdir}/build-${MSYSTEM}"
	_TMP=`realpath _tmp`
	DESTDIR="${_TMP}" ${MINGW_PREFIX}/bin/meson install
	_move_aravis-gst_to_dst "${_TMP}" "${pkgdir}"
	rm -rf ${_TMP}
}


# template start; name=mingw-w64-splitpkg-wrappers; version=1.0;
# vim: set ft=bash :

# generate wrappers
for _name in "${pkgname[@]}"; do
  _short="package_${_name#${MINGW_PACKAGE_PREFIX}-}"
  _func="$(declare -f "${_short}")"
  eval "${_func/#${_short}/package_${_name}}"
done
# template end;
