# Template file for 'dpdk'
pkgname=dpdk
version=19.08
revision=6
# no musl - uses error.h, execinfo.h and argp.h
archs="x86_64 aarch64 ppc64le i686 armv7l"
build_style=meson
# XXX: meson error with meson 1.2.0 when enable_docs=true
# also needs hostmakedepends+="doxygen python3-Sphinx"
# doc/api/meson.build:23:11: ERROR: File /builddir/dpdk-19.08/examples does not exist.
configure_args="-Denable_kmods=false -Denable_docs=false -Db_lto=false"
hostmakedepends="pkg-config elfutils"
makedepends="libnuma-devel jansson-devel libpcap-devel
 zlib-devel openssl-devel libbsd-devel libelf libmnl"
depends="python3-pyelftools"
short_desc="Data Plane Development Kit"
maintainer="Hans-J. Schmid <knock@myopendoor.de>"
license="BSD-3-Clause, GPL-2.0-only"
homepage="https://www.dpdk.org/"
distfiles="https://github.com/DPDK/${pkgname}/archive/v${version}.tar.gz"
checksum=1ceff1a6f4f8d5f6f62c1682097249227ac5225ccd9638e0af09f5411c681038
# import py3compat
python_version=3

case "${XBPS_TARGET_MACHINE}" in
	armv7l*) configure_args+=" -Dmachine=armv7-a";;
	aarch64*) configure_args+=" -Dmachine=armv8-a";;
	ppc64le*) configure_args+=" -Dmachine=power8";;
	*) configure_args+=" -Dmachine=default"
esac

CFLAGS="-fcommon"

post_install() {
	vmkdir usr/lib/modules-load.d
	vlicense license/bsd-3-clause.txt
}

# XXX: re-enable when docs can be re-enabled
# dpdk-doc_package() {
# 	short_desc+=" - documentation"
# 	pkg_install() {
# 		vmove usr/share/doc
# 	}
# }

do_check() {
	:
}

dpdk-devel_package() {
	depends="${sourcepkg}>=${version}_${revision} jansson-devel zlib-devel libbsd-devel openssl-devel"
	short_desc+=" - development files"
	pkg_install() {
		vmove usr/bin/dpdk-pdump
		vmove usr/bin/dpdk-proc-info
		vmove usr/bin/dpdk-test*
		vmove usr/include
		vmove usr/lib/*.so
		vmove usr/lib/*.a
		vmove usr/lib/dpdk/pmds-${version}/*.so
		vmove usr/lib/pkgconfig
		vmove usr/share/dpdk/examples
	}
}

dpdk-dkms_package() {
	short_desc+=" - DKMS kernel modules"
	dkms_modules="dpdk-igb-uio $version dpdk-rte-kni $version"
	depends="dkms dpdk-devel"
	pkg_install() {
		vmkdir usr/src/dpdk-igb-uio-${version}
		vmkdir usr/src/dpdk-rte-kni-${version}
		vcopy "kernel/linux/igb_uio/*" usr/src/dpdk-igb-uio-${version}
		vcopy "kernel/linux/kni/*" usr/src/dpdk-rte-kni-${version}
		vcopy ${FILESDIR}/dkms_igb_uio.conf usr/src/dpdk-igb-uio-${version}/dkms.conf
		vcopy ${FILESDIR}/dkms_rte_kni.conf usr/src/dpdk-rte-kni-${version}/dkms.conf
		sed -i -e "s/@VERSION@/${version}/" ${PKGDESTDIR}/usr/src/dpdk-igb-uio-${version}/dkms.conf
		sed -i -e "s/@VERSION@/${version}/" ${PKGDESTDIR}/usr/src/dpdk-rte-kni-${version}/dkms.conf
		# load modules at boot time
		echo igb_uio > ${DESTDIR}/usr/lib/modules-load.d/igb_uio.conf
		echo rte_kni > ${DESTDIR}/usr/lib/modules-load.d/rte_kni.conf
		chmod 644 ${DESTDIR}/usr/lib/modules-load.d/igb_uio.conf
		chmod 644 ${DESTDIR}/usr/lib/modules-load.d/rte_kni.conf
		vmove usr/lib/modules-load.d
	}
}
