#
# Copyright 2022 Google LLC
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# version 2 as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
EAPI="7"

inherit linux-mod

DESCRIPTION="XEMU is a fast emulation device for Linux. It provides the ability to create and manipulate address spaces, and switch execution into those address spaces."
HOMEPAGE="https://github.com/google/gvisor"
XEMU_TAR_FILE=xemu-${PV}.tar.gz
SRC_URI="gs://chromeos-localmirror/distfiles/${XEMU_TAR_FILE}
	-> ${P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="*"
IUSE=""
RESTRICT="mirror"

DEPEND="virtual/linux-sources"
RDEPEND="${DEPEND}"

# Because our kernel version string ends with '+' (e.g.  # "4.4.70+"), Gentoo
# Linux's linux-info.eclass cannot locate the kernel build output directory.
KBUILD_OUTPUT=${KERNEL_DIR}/build

S="${WORKDIR}"

# modulename(libdir:srcdir:objdir)
MODULE_NAMES="xemu(kernel/drivers/xemu:${S}:${S})"

src_compile() {
	cros_allow_gnu_build_tools
	LIBELF="$("${CBUILD}-pkg-config" libelf --libs 2> /dev/null || echo -lelf)"
	BUILD_PARAMS="HOST_LIBELF_LIBS=${LIBELF} CONFIG_XEMU=m CC=${CC}"
	BUILD_PARAMS+=" -C ${KBUILD_OUTPUT} M=${S}"
	BUILD_TARGETS="modules"
	linux-mod_src_compile
}


src_install() {
	# Sign the module first.
	MODULE_OBJECT=xemu.ko
	cp ${MODULE_OBJECT} ${MODULE_OBJECT}.orig
	"${KBUILD_OUTPUT}"/scripts/sign-file \
		sha256 \
		"${KBUILD_OUTPUT}"/certs/signing_key.pem \
		"${KBUILD_OUTPUT}"/certs/signing_key.x509 \
		${MODULE_OBJECT}

	# Do not strip the signature.
	dostrip -x /lib/modules/"${KV_FULL}"/kernel/drivers/xemu/${MODULE_OBJECT}

	linux-mod_src_install
	insinto /etc/modules-load.d
	#doins "${FILESDIR}"/xemu.conf
}
