M7350/oe-core/meta-msm/recipes/linux-quic/linux-quic_git.bb
2024-09-09 08:59:52 +00:00

167 lines
6.7 KiB
BlitzBasic
Executable File

inherit kernel
DESCRIPTION = "QuIC Linux Kernel"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
COMPATIBLE_MACHINE = "(mdm9640|mdm9640-perf|mdm9607|mdm9607-perf|mdmcalifornium|apq8009)"
BASEMACHINE = "${@d.getVar('MACHINE', True).replace('-perf', '')}"
EXTRA_KERNEL_CMD_PARAMS ?= ""
# Default image type is zImage, change here if needed.
#KERNEL_IMAGETYPE = "zImage"
# Where built kernel lies in the kernel tree
#KERNEL_OUTPUT ?= "arch/${ARCH}/boot/${KERNEL_IMAGETYPE}"
#KERNEL_IMAGEDEST = "boot"
KERNEL_IMAGETYPE_FOR_MAKE = ""
# Provide a config baseline for things so the kernel will build...
KERNEL_DEFCONFIG = "mdm_defconfig"
KERNEL_DEFCONFIG_mdmcalifornium = "mdm_defconfig"
KERNEL_DEFCONFIG_mdmcalifornium-perf = "mdm-perf_defconfig"
KERNEL_DEFCONFIG_apq8009 = "msm8909_defconfig"
KERNEL_DEFCONFIG_mdm9607 = "mdm9607_defconfig"
KERNEL_DEFCONFIG_mdm9607-perf = "mdm9607-perf_defconfig"
KERNEL_DEFCONFIG_mdm9607-psm = "mdm9607-128mb-perf_defconfig"
KERNEL_PRIORITY = "9001"
# Add V=1 to KERNEL_EXTRA_ARGS for verbose
KERNEL_EXTRA_ARGS += "O=${B}"
#PACKAGE_ARCH = "${MACHINE_ARCH}"
FILESPATH =+ "${WORKSPACE}:"
SRC_URI = "file://kernel"
SRC_DIR = "${WORKSPACE}/kernel"
S = "${WORKDIR}/kernel"
GITVER = "${@base_get_metadata_git_revision('${SRC_DIR}',d)}"
PV = "git-${GITVER}"
PR = "r3"
DEPENDS += "dtbtool-native mkbootimg-native"
PACKAGES = "kernel kernel-base kernel-vmlinux kernel-dev kernel-modules"
RDEPENDS_kernel-base = ""
# Put the zImage in the kernel-dev pkg
FILES_kernel-dev += "/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}"
do_configure () {
oe_runmake_call -C ${S} ARCH=${ARCH} ${KERNEL_EXTRA_ARGS} ${KERNEL_DEFCONFIG}
}
do_shared_workdir () {
cd ${B}
kerneldir=${STAGING_KERNEL_BUILDDIR}
install -d $kerneldir
#
# Store the kernel version in sysroots for module-base.bbclass
#
echo "${KERNEL_VERSION}" > $kerneldir/kernel-abiversion
# Copy files required for module builds
cp System.map $kerneldir/System.map-${KERNEL_VERSION}
cp Module.symvers $kerneldir/Module.symvers
cp Makefile $kerneldir/
cp .config $kerneldir/
cp -fR usr $kerneldir/
# Signing keys may not be present
[ -f signing_key.priv ] && cp signing_key.priv $kerneldir/
[ -f signing_key.x509 ] && cp signing_key.x509 $kerneldir/
# include/config
mkdir -p $kerneldir/include/config
cp include/config/kernel.release $kerneldir/include/config/kernel.release
cp include/config/auto.conf $kerneldir/include/config/auto.conf
# We can also copy over all the generated files and avoid special cases
# like version.h, but we've opted to keep this small until file creep starts
# to happen
if [ -e include/linux/version.h ]; then
mkdir -p $kerneldir/include/linux
cp include/linux/version.h $kerneldir/include/linux/version.h
fi
mkdir -p $kerneldir/include/generated/
cp -fR include/generated/* $kerneldir/include/generated/
if [ -d arch/${ARCH}/include ]; then
mkdir -p $kerneldir/arch/${ARCH}/include/
cp -fR arch/${ARCH}/include/* $kerneldir/arch/${ARCH}/include/
fi
if [ -d arch/${ARCH}/boot ]; then
mkdir -p $kerneldir/arch/${ARCH}/boot/
cp -fR arch/${ARCH}/boot/* $kerneldir/arch/${ARCH}/boot/
fi
if [ -d scripts ]; then
for i in \
scripts/basic/bin2c \
scripts/basic/fixdep \
scripts/conmakehash \
scripts/dtc/dtc \
scripts/kallsyms \
scripts/kconfig/conf \
scripts/mod/mk_elfconfig \
scripts/mod/modpost \
scripts/sign-file \
scripts/sortextable;
do
if [ -e $i ]; then
mkdir -p $kerneldir/`dirname $i`
cp $i $kerneldir/$i
fi
done
fi
cp ${STAGING_KERNEL_DIR}/scripts/gen_initramfs_list.sh $kerneldir/scripts/
# Make vmlinux available as soon as possible
install -d ${STAGING_DIR_TARGET}/${KERNEL_IMAGEDEST}
install -m 0644 ${KERNEL_OUTPUT} ${STAGING_DIR_TARGET}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}
install -m 0644 vmlinux ${STAGING_DIR_TARGET}/${KERNEL_IMAGEDEST}/vmlinux-${KERNEL_VERSION}
install -m 0644 vmlinux ${STAGING_DIR_TARGET}/${KERNEL_IMAGEDEST}/vmlinux
}
do_install_append() {
oe_runmake_call -C ${STAGING_KERNEL_DIR} ARCH=${ARCH} CC="${KERNEL_CC}" LD="${KERNEL_LD}" headers_install O=${STAGING_KERNEL_BUILDDIR}
}
do_deploy () {
# Make bootimage
dtb_files=`find ${B}/arch/arm/boot/dts -iname *${MACHINE_DTS_NAME}*.dtb | awk -Fdts/ '{print $NF}' | awk -F[.][d] '{print $1}'`
# Create separate images with dtb appended to zImage for all targets.
for d in ${dtb_files}; do
#Strip qcom from the result if its present.
targets=`echo ${d#${MACHINE_DTS_NAME}-}| awk '{split($0,a, "/");print a[2]}'`
#If dtb are stored inside qcom then we need to search for them inside qcom, else inside dts.
qcom_check=`echo ${d}| awk '{split($0,a, "/");print a[1]}'`
if [ ${qcom_check} == "qcom" ]; then
cat ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION} ${B}/arch/arm/boot/dts/${d}.dtb > ${B}/arch/arm/boot/dts/qcom/dtb-${KERNEL_IMAGETYPE}-${KERNEL_VERSION}-${targets}
${STAGING_BINDIR_NATIVE}/dtbtool ${B}/arch/arm/boot/dts/qcom/ -s ${PAGE_SIZE} -o ${D}/${KERNEL_IMAGEDEST}/masterDTB -p ${B}/scripts/dtc/ -v
else
cat ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION} ${B}/arch/arm/boot/dts/${d}.dtb > ${B}/arch/arm/boot/dts/dtb-${KERNEL_IMAGETYPE}-${KERNEL_VERSION}-${targets}
${STAGING_BINDIR_NATIVE}/dtbtool ${B}/arch/arm/boot/dts/ -s ${PAGE_SIZE} -o ${D}/${KERNEL_IMAGEDEST}/masterDTB -p ${B}/scripts/dtc/ -v
fi
done
mkdir -p ${DEPLOY_DIR_IMAGE}
cmdparams='noinitrd rw console=ttyHSL0,115200,n8 androidboot.hardware=qcom ehci-hcd.park=3 msm_rtb.filter=0x37 lpm_levels.sleep_disabled=1 ${EXTRA_KERNEL_CMD_PARAMS}'
# Updated base address according to new memory map.
${STAGING_BINDIR_NATIVE}/mkbootimg --kernel ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION} \
--dt ${D}/${KERNEL_IMAGEDEST}/masterDTB \
--ramdisk /dev/null \
--cmdline "${cmdparams}" \
--pagesize ${PAGE_SIZE} \
--base ${MACHINE_KERNEL_BASE} \
--tags-addr ${MACHINE_KERNEL_TAGS_OFFSET} \
--ramdisk_offset 0x0 \
--output ${DEPLOY_DIR_IMAGE}/${MACHINE}-boot.img
}