160 lines
6.9 KiB
PHP
160 lines
6.9 KiB
PHP
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
|
||
|
|
}
|
||
|
|
|