Files
BPI-M2C/source_sync_rls_25c/layers/meta-unisoc/recipes-kernel/linux/linux-unisoc-common.inc
T
2026-09-22 09:38:26 +08:00

160 lines
6.9 KiB
PHP
Executable File

inherit kernel
#inherit externalsrc
inherit kernel-yocto
# replace kernel.bbclass oe-user@oe-host to local username@hostname
export KBUILD_BUILD_USER=""
export KBUILD_BUILD_HOST=""
# Put a local version until we have a true SRCREV to point to
# default var
KERNEL_MACHINE_PATCH ?= ""
UNISOC_KERNEL_VERSION ?= ""
KERNEL_PATCH_FILEPATH ?= ""
# vmlnux and Image with ramdisk is not compatible, need use vmlnux.initramfs that form by do_transform_bundled_initramfs() in kernel.bbclass
KERNEL_IMAGETYPES += "${@bb.utils.contains('COMBINED_FEATURES', 'use-initramfs', 'vmlinux.gz', '', d)}"
SRCTREECOVEREDTASKS:remove += "do_kernel_configme do_patch"
LINUX_UNISOC_GIT ?= ""
FILESEXTRAPATHS:prepend := "${THISDIR}/${UNISOC_KERNEL_VERSION}/files:${KERNEL_PATCH_FILEPATH}/${UNISOC_PRODUCT}:${KERNEL_PATCH_FILEPATH}:"
S = "${WORKDIR}/git"
DEPENDS += "openssl-native ${@bb.utils.contains('UNISOC_MACHINE_FEATURES', 'unibpftools', 'elfutils pahole-native', '', d)}"
EXTRA_OEMAKE:remove = "${@bb.utils.contains('UNISOC_MACHINE_FEATURES', 'unibpftools', 'PAHOLE=false', '', d)}"
HOST_EXTRACFLAGS += "-I${STAGING_INCDIR_NATIVE}"
CFLAGS += "-Wno-error=misleading-indentation"
KBUILD_DEFCONFIG ?= "${KERNEL_DEFCONFIG}"
KMACHINE ?= "${MACHINE}"
KTYPE ?= "standard"
KBRANCH ?= "master"
STORAGE_TYPE ?= "none"
NAND_TYPE ?= "none"
DEPENDS += "${@bb.utils.contains('STORAGE_TYPE', 'nand', 'mcp-gen-native', '', d)}"
addtask delete_kernel_patch before do_patch
addtask copy_kernel_defconfig before do_kernel_metadata after do_unpack
# addtask do_menuconfig before do_compile after do_configure
do_delete_kernel_patch() {
rm -rf ${S}patches
}
do_copy_kernel_defconfig() {
echo "begin do_copy_kernel_defconfig"
# cp defconfig to kernel source code tree
if [ -e ${KERNEL_PATCH_FILEPATH}/product/${UNISOC_PRODUCT}/${KERNEL_DEFCONFIG} ];then
cp ${KERNEL_PATCH_FILEPATH}/product/${UNISOC_PRODUCT}/${KERNEL_DEFCONFIG} ${S}/arch/${ARCH}/configs/
elif [ -e ${KERNEL_PATCH_FILEPATH}/distro/${DISTRO}/${KERNEL_DEFCONFIG} ];then
cp ${KERNEL_PATCH_FILEPATH}/distro/${DISTRO}/${KERNEL_DEFCONFIG} ${S}/arch/${ARCH}/configs/
else
[ -e ${KERNEL_PATCH_FILEPATH}/${KERNEL_DEFCONFIG} ] && cp ${KERNEL_PATCH_FILEPATH}/${KERNEL_DEFCONFIG} ${S}/arch/${ARCH}/configs/
fi
if [ -e ${KERNEL_PATCH_FILEPATH}/product/${UNISOC_PRODUCT}/${KERNEL_RECOVERY_DEFCONFIG} ]; then
cp ${KERNEL_PATCH_FILEPATH}/product/${UNISOC_PRODUCT}/${KERNEL_RECOVERY_DEFCONFIG} ${S}/arch/${ARCH}/configs/
elif [ -e ${KERNEL_PATCH_FILEPATH}/distro/${DISTRO}/${KERNEL_RECOVERY_DEFCONFIG} ]; then
cp ${KERNEL_PATCH_FILEPATH}/distro/${DISTRO}/${KERNEL_RECOVERY_DEFCONFIG} ${S}/arch/${ARCH}/configs/
else
[ -e ${KERNEL_PATCH_FILEPATH}/${KERNEL_RECOVERY_DEFCONFIG} ] && cp ${KERNEL_PATCH_FILEPATH}/${KERNEL_RECOVERY_DEFCONFIG} ${S}/arch/${ARCH}/configs/
fi
# if not the echo code, when not cp exac, the do_copy_kernel_defconfig will error.
echo "end do_copy_kernel_defconfig"
}
do_kernel_configme:append(){
# if [ ${MACHINE} = "ums9620-2h10" ]; then
AP_VERSION=${DISTRO_VERSION}
sed -i s#apVersion#${AP_VERSION}#g ${B}/.config
# fi
}
do_compile:prepend(){
if [ ${STORAGE_TYPE} = "nand" ]; then
#add include file of nand paramters before compiling
perl ${STAGING_BINDIR_NATIVE}/nandgen_kernel.pl \
-h ${EXTERNALSRC}/drivers/mtd/nand/raw/sprd_nand_param.h \
-x ${STAGING_BINDIR_NATIVE}/mcp.xls
fi
# cp dts to kernel source code tree
# if kernel source tree have no KERNEL_BOARD_BASE.dts, then user unisoc layer
#[ -e ${S}/arch/${ARCH}/boot/dts/${KERNEL_DT_SUBDIR}/${KERNEL_BOARD_BASE}.dts ] || cp ${KERNEL_PATCH_FILEPATH}/${KERNEL_BOARD_BASE}.dts ${S}/arch/${ARCH}/boot/dts/${KERNEL_DT_SUBDIR}/
if [ -e ${KERNEL_PATCH_FILEPATH}/product/${UNISOC_PRODUCT}/${KERNEL_BOARD_BASE}.dts ];then
cp ${KERNEL_PATCH_FILEPATH}/product/${UNISOC_PRODUCT}/${KERNEL_BOARD_BASE}.dts ${S}/arch/${ARCH}/boot/dts/${KERNEL_DT_SUBDIR}/
elif [ -e ${KERNEL_PATCH_FILEPATH}/distro/${DISTRO}/${KERNEL_BOARD_BASE}.dts ];then
cp ${KERNEL_PATCH_FILEPATH}/distro/${DISTRO}/${KERNEL_BOARD_BASE}.dts ${S}/arch/${ARCH}/boot/dts/${KERNEL_DT_SUBDIR}/
else
[ -e ${KERNEL_PATCH_FILEPATH}/${KERNEL_BOARD_BASE}.dts ] && cp ${KERNEL_PATCH_FILEPATH}/${KERNEL_BOARD_BASE}.dts ${S}/arch/${ARCH}/boot/dts/${KERNEL_DT_SUBDIR}/
fi
if [ -e ${KERNEL_PATCH_FILEPATH}/product/${UNISOC_PRODUCT}/${KERNEL_BOARD}-overlay.dts ];then
cp ${KERNEL_PATCH_FILEPATH}/product/${UNISOC_PRODUCT}/${KERNEL_BOARD}-overlay.dts ${S}/arch/${ARCH}/boot/dts/${KERNEL_DT_SUBDIR}/
elif [ -e ${KERNEL_PATCH_FILEPATH}/distro/${DISTRO}/${KERNEL_BOARD}-overlay.dts ];then
cp ${KERNEL_PATCH_FILEPATH}/distro/${DISTRO}/${KERNEL_BOARD}-overlay.dts ${S}/arch/${ARCH}/boot/dts/${KERNEL_DT_SUBDIR}/
else
[ -e ${KERNEL_PATCH_FILEPATH}/${KERNEL_BOARD}-overlay.dts ] && cp ${KERNEL_PATCH_FILEPATH}/${KERNEL_BOARD}-overlay.dts ${S}/arch/${ARCH}/boot/dts/${KERNEL_DT_SUBDIR}/
fi
[ -e ${KERNEL_PATCH_FILEPATH}/recovery-${KERNEL_BOARD}.dts ] && cp ${KERNEL_PATCH_FILEPATH}/recovery-${KERNEL_BOARD}.dts ${S}/arch/${ARCH}/boot/dts/${KERNEL_DT_SUBDIR}/
}
python do_patch() {
bb.build.exec_func('patch_do_patch', d)
}
do_patch[nostamp] = "1"
#do_configure:prepend() {
#
# oe_runmake -C ${S} O=${B} ${KERNEL_DEFCONFIG}
#
# yes '' | oe_runmake -C ${S} O=${B} oldconfig
# oe_runmake -C ${S} O=${B} savedefconfig && cp ${B}/defconfig ${WORKDIR}/defconfig
#}
# append DTB, since bootloader doesn't support DTB
do_compile:append() {
oe_runmake ARCH=${ARCH} -C ${S} O=${B} dtbs
if [ -n "${DOMD_KERNEL_DEVICETREE}" ] ; then
install -d ${DEPLOY_DIR_IMAGE}/sprd/
install -m 0666 ${B}/arch/${ARCH}/boot/dts/${DOMD_KERNEL_DEVICETREE} ${DEPLOY_DIR_IMAGE}/${DOMD_KERNEL_DEVICETREE}
fi
if [ -n "${KERNEL_DEVICETREE_OVERLAY}" ] ;then
find ${B}/arch/${ARCH} -name *.dtb* ! -name `basename ${KERNEL_DEVICETREE}` ! -name `basename ${KERNEL_DEVICETREE_OVERLAY}`| xargs -I{} rm {}
else
find ${B}/arch/${ARCH} -name *.dtb* ! -name `basename ${KERNEL_DEVICETREE}` | xargs -I{} rm {}
fi
}
do_install:append() {
for type in ${KERNEL_IMAGETYPES} ; do
if [ -e ${D}/${KERNEL_IMAGEDEST}/${type}-${KERNEL_VERSION} ]; then
rm ${D}/${KERNEL_IMAGEDEST}/${type}-${KERNEL_VERSION}
fi
if [ "${KERNEL_PACKAGE_NAME}" = "kernel" ]; then
if [ -L ${D}/${KERNEL_IMAGEDEST}/${type} ]; then
rm -rf ${D}/${KERNEL_IMAGEDEST}/${type}
fi
fi
done
}
do_transform_bundled_initramfs:append() {
bbnote "for initramfs symbols output"
[ -e vmlinux.initramfs ] && install -m 0644 vmlinux.initramfs ${D}/${KERNEL_IMAGEDEST}/vmlinux.initramfs
bbnote "end initramfs symbols output"
}
do_deploy:append() {
# save kernel source path for idh
install -d ${DEPLOY_DIR_IMAGE}
echo "${S}" > ${DEPLOY_DIR_IMAGE}/kernel_path
}