#
# 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.
#
# shellcheck disable=SC2034,SC2154

EAPI=6

CROS_WORKON_COMMIT="dee7a914f9a1503899051b06a7ed0110618e2011"
CROS_WORKON_TREE="dee7a914f9a1503899051b06a7ed0110618e2011"
CROS_WORKON_REPO="https://cos.googlesource.com"
CROS_WORKON_PROJECT="third_party/kernel"
CROS_WORKON_LOCALNAME="kernel/v5.15"

# This must be inherited *after* EGIT/CROS_WORKON variables defined
inherit cros-workon gmec-kernel

STRIP_MASK+=" /usr/src/${P}/build/vmlinux"
STRIP_MASK+=" *.ko"

DESCRIPTION="COS Linux Kernel 5.15"
HOMEPAGE="https://cloud.google.com/container-optimized-os"
KEYWORDS="*"
IUSE="module_sign lockdown gpu"

COS_KERNEL_X509_GENKEY="${FILESDIR}/x509.genkey"
COS_KERNEL_ROOT_CERT="${FILESDIR}/lakitu_root_cert.pem"
COS_KERNEL_GPU_ROOT_CERT="${FILESDIR}/lakitu_gpu_root_cert.pem"
GMEC_KERNEL_SUFFIX="rt"

src_configure() {
	gmec-kernel_src_configure
}

# Change for EAPI=6
src_prepare() {
	default
	cos-kernel_src_prepare
}

src_install() {
	gmec-kernel_src_install
}

# Change the following (commented out) number to the next prime number
# when you change base.config.  This workaround will force the
# ChromeOS CQ to uprev sys-kernel/kernel-5_10 ebuild and pick up the
# configuration changes.  In absence of this workaround the config changes
# would not be picked up unless there was a code change in kernel source tree.
#
# NOTE: There's nothing magic keeping this number prime but you just need to
# make _any_ change to this file.  ...so why not keep it prime?
#
# The coolest prime number is: 13
