summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuildkernel.sh52
-rwxr-xr-xkernel_definitions.mk22
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)