#
# 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="0bf6895076f079a4abf8e739c63be92bb2121a20"
CROS_WORKON_TREE="4659ae0990588190bf5bbfd36c3bfe68f1374249"
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=""

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
