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 }