diff options
-rwxr-xr-x | buildkernel.sh | 52 | ||||
-rwxr-xr-x | kernel_definitions.mk | 22 |
2 files changed, 74 insertions, 0 deletions
diff --git a/buildkernel.sh b/buildkernel.sh index 141ddf2..b1f3f02 100755 --- a/buildkernel.sh +++ b/buildkernel.sh @@ -98,6 +98,49 @@ modules_install() set +x } + +archive_kernel_modules() +{ + echo "======================" + pushd ${KERNEL_MODULES_OUT} + + # Zip the vendor-ramdisk kernel modules + FINAL_RAMDISK_KERNEL_MODULES="" + for MODULE in ${VENDOR_RAMDISK_KERNEL_MODULES}; do + if [ -f "${MODULE}" ]; then + FINAL_RAMDISK_KERNEL_MODULES="${FINAL_RAMDISK_KERNEL_MODULES} ${MODULE}" + fi + done + + echo "Archiving vendor ramdisk kernel modules: " + echo ${FINAL_RAMDISK_KERNEL_MODULES} + + if [ ! -z "${FINAL_RAMDISK_KERNEL_MODULES}" ]; then + zip -rq ${VENDOR_RAMDISK_KERNEL_MODULES_ARCHIVE} ${FINAL_RAMDISK_KERNEL_MODULES} + fi + + # Filter-out the modules in vendor-ramdisk and zip the vendor kernel modules + VENDOR_KERNEL_MODULES=`ls *.ko` + for MODULE in ${FINAL_RAMDISK_KERNEL_MODULES}; do + VENDOR_KERNEL_MODULES=`echo ${VENDOR_KERNEL_MODULES} | sed "s/${MODULE}//g"` + done + + echo "Archiving vendor kernel modules: " + echo ${VENDOR_KERNEL_MODULES} + + # Also package the modules.blacklist file + set -x + BLACKLIST_FILE="" + if [ -f "modules.blacklist" ]; then + BLACKLIST_FILE="modules.blacklist" + fi + + zip -rq ${VENDOR_KERNEL_MODULES_ARCHIVE} ${VENDOR_KERNEL_MODULES} ${BLACKLIST_FILE} + set +x + + popd +} + copy_modules_to_prebuilt() { PREBUILT_OUT=$1 @@ -127,6 +170,14 @@ copy_modules_to_prebuilt() mkdir -p ${PREBUILT_OUT}/certs fi cp -p ${OUT_DIR}/certs/*.* ${PREBUILT_OUT}/certs/ + + # Copy the modules.blacklist file + set -x + BLACKLIST_FILE=${PWD}/device/qcom/kernelscripts/modules_blacklist/modules.blacklist.${TARGET_PRODUCT} + if [ -f "${BLACKLIST_FILE}" ]; then + cp ${BLACKLIST_FILE} ${KERNEL_MODULES_OUT}/modules.blacklist + fi + set +x } copy_all_to_prebuilt() @@ -315,6 +366,7 @@ else build_kernel modules_install copy_all_to_prebuilt ${KERNEL_BINS} + archive_kernel_modules extract_kernel_sha1 fi diff --git a/kernel_definitions.mk b/kernel_definitions.mk index 2e05d47..7b18450 100755 --- a/kernel_definitions.mk +++ b/kernel_definitions.mk @@ -145,6 +145,20 @@ TARGET_PREBUILT_KERNEL := $(TARGET_PREBUILT_INT_KERNEL) endif endif +# Archieve the DLKMs that goes into vendor.img and vendor-ramdisk. +# Also, make them dependent on the kernel compilation. +VENDOR_KERNEL_MODULES_ARCHIVE := vendor_modules.zip +BOARD_VENDOR_KERNEL_MODULES_ARCHIVE := $(KERNEL_MODULES_OUT)/$(VENDOR_KERNEL_MODULES_ARCHIVE) +$(BOARD_VENDOR_KERNEL_MODULES_ARCHIVE): $(TARGET_PREBUILT_KERNEL) + +$(warning VENDOR_RAMDISK_KERNEL_MODLUES = $(VENDOR_RAMDISK_KERNEL_MODLUES)) + +ifneq ($(VENDOR_RAMDISK_KERNEL_MODULES),) +VENDOR_RAMDISK_KERNEL_MODULES_ARCHIVE := vendor_ramdisk_modules.zip +BOARD_VENDOR_RAMDISK_KERNEL_MODULES_ARCHIVE := $(KERNEL_MODULES_OUT)/$(VENDOR_RAMDISK_KERNEL_MODULES_ARCHIVE) +$(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_ARCHIVE): $(TARGET_PREBUILT_KERNEL) +endif + # Add RTIC DTB to dtb.img if RTIC MPGen is enabled. # Note: unfortunately we can't define RTIC DTS + DTB rule here as the # following variable/ tools (needed for DTS generation) @@ -170,6 +184,10 @@ $(KERNEL_HEADERS_INSTALL): $(KERNEL_OUT) $(KERNEL_GENERATE_DEFCONFIG) $(DTC) $(U TARGET_PREBUILT_INT_KERNEL=$(TARGET_PREBUILT_INT_KERNEL) \ TARGET_INCLUDES=$(TARGET_KERNEL_MAKE_CFLAGS) \ TARGET_LINCLUDES=$(TARGET_KERNEL_MAKE_LDFLAGS) \ + VENDOR_KERNEL_MODULES_ARCHIVE=$(VENDOR_KERNEL_MODULES_ARCHIVE) \ + VENDOR_RAMDISK_KERNEL_MODULES_ARCHIVE=$(VENDOR_RAMDISK_KERNEL_MODULES_ARCHIVE) \ + VENDOR_RAMDISK_KERNEL_MODULES="$(VENDOR_RAMDISK_KERNEL_MODULES)" \ + TARGET_PRODUCT=$(TARGET_PRODUCT) \ device/qcom/kernelscripts/buildkernel.sh \ $(real_cc) \ $(TARGET_KERNEL_MAKE_ENV) @@ -192,6 +210,10 @@ $(TARGET_PREBUILT_KERNEL): $(KERNEL_OUT) $(KERNEL_GENERATE_DEFCONFIG) $(DTC) $(K TARGET_PREBUILT_INT_KERNEL=$(TARGET_PREBUILT_INT_KERNEL) \ TARGET_INCLUDES=$(TARGET_KERNEL_MAKE_CFLAGS) \ TARGET_LINCLUDES=$(TARGET_KERNEL_MAKE_LDFLAGS) \ + VENDOR_KERNEL_MODULES_ARCHIVE=$(VENDOR_KERNEL_MODULES_ARCHIVE) \ + VENDOR_RAMDISK_KERNEL_MODULES_ARCHIVE=$(VENDOR_RAMDISK_KERNEL_MODULES_ARCHIVE) \ + VENDOR_RAMDISK_KERNEL_MODULES="$(VENDOR_RAMDISK_KERNEL_MODULES)" \ + TARGET_PRODUCT=$(TARGET_PRODUCT) \ device/qcom/kernelscripts/buildkernel.sh \ $(real_cc) \ $(TARGET_KERNEL_MAKE_ENV) |