# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI="5"

ETYPE="headers"
H_SUPPORTEDARCH="alpha amd64 arc arm arm64 avr32 bfin cris frv hexagon hppa ia64 m32r m68k metag microblaze mips mn10300 nios2 openrisc ppc ppc64 s390 score sh sparc tile x86 xtensa"
inherit kernel-2
detect_version

PATCH_VER="1"
SRC_URI="mirror://gentoo/gentoo-headers-base-${PV}.tar.xz
	${PATCH_VER:+mirror://gentoo/gentoo-headers-${PV}-${PATCH_VER}.tar.xz}"

KEYWORDS="*"

DEPEND="app-arch/xz-utils
	dev-lang/perl"
RDEPEND="!!media-sound/alsa-headers"

S=${WORKDIR}/gentoo-headers-base-${PV}

src_unpack() {
	unpack ${A}
}

src_prepare() {
	[[ -n ${PATCH_VER} ]] && EPATCH_SUFFIX="patch" epatch "${WORKDIR}"/${PV}

	epatch "${FILESDIR}/0001-CHROMIUM-media-headers-Import-V4L2-headers-from-Chro.patch"
	epatch "${FILESDIR}/0002-CHROMIUM-v4l-Add-VP8-low-level-decoder-API-controls.patch"
	epatch "${FILESDIR}/0003-v4l-add-pixelformat-change-event.patch"
	epatch "${FILESDIR}/0004-v4l-add-force-key-frame-control.patch"
	epatch "${FILESDIR}/0005-UPSTREAM-sched-new-clone-flag-CLONE_NEWCGROUP-for-cg.patch"
	epatch "${FILESDIR}/0006-CHROMIUM-v4l-Add-V4L2_PIX_FMT_VP9-definition.patch"
	epatch "${FILESDIR}/0007-CHROMIUM-v4l-Add-VP9-low-level-decoder-API-controls.patch"
	epatch "${FILESDIR}/0008-CHROMIUM-v4l-Add-V4L2_CID_MPEG_VIDEO_H264_SPS_PPS_BE.patch"
	epatch "${FILESDIR}/0009-BACKPORT-v4l-Add-YUV-4-2-2-and-YUV-4-4-4-tri-planar-.patch"
	epatch "${FILESDIR}/0010-UPSTREAM-Input-uinput-add-new-UINPUT_DEV_SETUP-and-U.patch"
	epatch "${FILESDIR}/0011-CHROMIUM-kernel-device_jail.patch"
	epatch "${FILESDIR}/0012-UPSTREAM-uapi-add-missing-install-of-dma-buf.h.patch"
	epatch "${FILESDIR}/0013-Input-introduce-KEY_ASSISTANT.patch"
	epatch "${FILESDIR}/0014-media-videodev2.h-add-IPU3-raw10-color.patch"
	epatch "${FILESDIR}/0015-videodev2.h-add-IPU3-meta-buffer-format.patch"
	epatch "${FILESDIR}/0016-uapi-intel-ipu3-Add-user-space-ABI-definitions.patch"
	epatch "${FILESDIR}/0017-BACKPORT-net-diag-Add-the-ability-to-destroy-a-socke.patch"
	epatch "${FILESDIR}/0018-BACKPORT-net-core-add-UID-to-flows-rules-and-routes.patch"
	epatch "${FILESDIR}/0019-virtwl-add-virtwl-driver.patch"
	epatch "${FILESDIR}/0020-BACKPORT-media-v4l-Add-metadata-buffer-type-and-form.patch"
	epatch "${FILESDIR}/0021-BACKPORT-FROMLIST-v4l-Add-support-for-V4L2_BUF_TYPE_.patch"
	epatch "${FILESDIR}/0022-BACKPORT-Use-upstream-USBDEVFS_DROP_PRIVILEGES.patch"
	epatch "${FILESDIR}/0023-FROMLIST-media-rkisp1-Add-user-space-ABI-definitions.patch"
	epatch "${FILESDIR}/0024-FROMLIST-media-videodev2.h-v4l2-ioctl-add-rkisp1-met.patch"
	epatch "${FILESDIR}/0025-BACKPORT-add-qrtr-header-file.patch"
	epatch "${FILESDIR}/0026-sync-nl80211-v4.16.patch"
	epatch "${FILESDIR}/0027-BACKPORT-add-CEC-headers.patch"
	epatch "${FILESDIR}/0028-BACKPORT-add-gpio-header-file.patch"
	epatch "${FILESDIR}/0029-BACKPORT-media-v4l-ctrls-Add-a-control-for-digital-g.patch"
}

src_install() {
	kernel-2_src_install

	# hrm, build system sucks
	find "${ED}" '(' -name '.install' -o -name '*.cmd' ')' -delete
	find "${ED}" -depth -type d -delete 2>/dev/null
}

src_test() {
	# Make sure no uapi/ include paths are used by accident.
	egrep -r \
		-e '# *include.*["<]uapi/' \
		"${D}" && die "#include uapi/xxx detected"

	einfo "Possible unescaped attribute/type usage"
	egrep -r \
		-e '(^|[[:space:](])(asm|volatile|inline)[[:space:](]' \
		-e '\<([us](8|16|32|64))\>' \
		.

	einfo "Missing linux/types.h include"
	egrep -l -r -e '__[us](8|16|32|64)' "${ED}" | xargs grep -L linux/types.h

	emake ARCH=$(tc-arch-kernel) headers_check
}
