diff --git a/core/Makefile b/core/Makefile index ff19013d1..a98e400e9 100644 --- a/core/Makefile +++ b/core/Makefile @@ -1021,6 +1021,24 @@ $(RECOVERY_INSTALL_OTA_KEYS): $(OTA_PUBLIC_KEYS) $(DUMPKEY_JAR) $(extra_keys) java -jar $(DUMPKEY_JAR) $(PRIVATE_OTA_PUBLIC_KEYS) $(extra_keys) > $@ RECOVERYIMAGE_ID_FILE := $(PRODUCT_OUT)/recovery.id + +# $(1): modules list +# $(2): output dir +# $(3): mount point +# $(4): staging dir +# Depmod requires a well-formed kernel version so 0.0 is used as a placeholder. +define build-image-kernel-modules + $(hide) rm -rf $(2)/lib/modules + $(hide) mkdir -p $(2)/lib/modules + $(hide) cp $(1) $(2)/lib/modules/ + $(hide) rm -rf $(4) + $(hide) mkdir -p $(4)/lib/modules/0.0/$(3)lib/modules + $(hide) cp $(1) $(4)/lib/modules/0.0/$(3)lib/modules + $(hide) $(DEPMOD) -b $(4) 0.0 + $(hide) sed -e 's/\(.*modules.*\):/\/\1:/g' -e 's/: \(.*modules.*\)/: \/\1/g' -i $(4)/lib/modules/0.0/modules.dep + $(hide) cp $(4)/lib/modules/0.0/modules.dep $(2)/lib/modules +endef + # $(1): output file define build-recoveryimage-target @echo ----- Making recovery image ------ @@ -1029,6 +1047,8 @@ define build-recoveryimage-target @echo Copying baseline ramdisk... $(hide) rsync -a --exclude=etc --exclude=sdcard $(IGNORE_CACHE_LINK) $(TARGET_ROOT_OUT) $(TARGET_RECOVERY_OUT) # "cp -Rf" fails to overwrite broken symlinks on Mac. @echo Modifying ramdisk contents... + $(if $(BOARD_RECOVERY_KERNEL_MODULES), \ + $(call build-image-kernel-modules,$(BOARD_RECOVERY_KERNEL_MODULES),$(TARGET_RECOVERY_ROOT_OUT),,$(call intermediates-dir-for,PACKAGING,depmod_recovery))) $(hide) rm -f $(TARGET_RECOVERY_ROOT_OUT)/init*.rc $(hide) cp -f $(recovery_initrc) $(TARGET_RECOVERY_ROOT_OUT)/ $(hide) rm -f $(TARGET_RECOVERY_ROOT_OUT)/sepolicy @@ -1090,7 +1110,9 @@ $(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \ $(INSTALLED_2NDBOOTLOADER_TARGET) \ $(recovery_build_prop) $(recovery_resource_deps) \ $(recovery_fstab) \ - $(RECOVERY_INSTALL_OTA_KEYS) + $(RECOVERY_INSTALL_OTA_KEYS) \ + $(BOARD_RECOVERY_KERNEL_MODULES) \ + $(DEPMOD) $(call pretty,"Target boot image from recovery: $@") $(call build-recoveryimage-target, $@) endif @@ -1103,7 +1125,9 @@ $(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \ $(INSTALLED_2NDBOOTLOADER_TARGET) \ $(recovery_build_prop) $(recovery_resource_deps) \ $(recovery_fstab) \ - $(RECOVERY_INSTALL_OTA_KEYS) + $(RECOVERY_INSTALL_OTA_KEYS) \ + $(BOARD_RECOVERY_KERNEL_MODULES) \ + $(DEPMOD) $(call build-recoveryimage-target, $@) ifdef RECOVERY_RESOURCE_ZIP @@ -1659,12 +1683,13 @@ $(INSTALLED_FILES_FILE_VENDOR) : $(INTERNAL_VENDORIMAGE_FILES) vendorimage_intermediates := \ $(call intermediates-dir-for,PACKAGING,vendor) BUILT_VENDORIMAGE_TARGET := $(PRODUCT_OUT)/vendor.img - define build-vendorimage-target $(call pretty,"Target vendor fs image: $(INSTALLED_VENDORIMAGE_TARGET)") @mkdir -p $(TARGET_OUT_VENDOR) @mkdir -p $(vendorimage_intermediates) && rm -rf $(vendorimage_intermediates)/vendor_image_info.txt $(call generate-userimage-prop-dictionary, $(vendorimage_intermediates)/vendor_image_info.txt, skip_fsck=true) + $(if $(BOARD_VENDOR_KERNEL_MODULES), \ + $(call build-image-kernel-modules,$(BOARD_VENDOR_KERNEL_MODULES),$(TARGET_OUT_VENDOR),vendor/,$(call intermediates-dir-for,PACKAGING,depmod_vendor))) $(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH \ ./build/tools/releasetools/build_image.py \ $(TARGET_OUT_VENDOR) $(vendorimage_intermediates)/vendor_image_info.txt $(INSTALLED_VENDORIMAGE_TARGET) $(TARGET_OUT) @@ -1673,11 +1698,11 @@ endef # We just build this directly to the install location. INSTALLED_VENDORIMAGE_TARGET := $(BUILT_VENDORIMAGE_TARGET) -$(INSTALLED_VENDORIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_VENDORIMAGE_FILES) $(INSTALLED_FILES_FILE_VENDOR) $(BUILD_IMAGE_SRCS) +$(INSTALLED_VENDORIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_VENDORIMAGE_FILES) $(INSTALLED_FILES_FILE_VENDOR) $(BUILD_IMAGE_SRCS) $(DEPMOD) $(BOARD_VENDOR_KERNEL_MODULES) $(build-vendorimage-target) .PHONY: vendorimage-nodeps -vendorimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) +vendorimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) $(DEPMOD) $(build-vendorimage-target) else ifdef BOARD_PREBUILT_VENDORIMAGE diff --git a/core/config.mk b/core/config.mk index f176a7d8c..7709d3c6f 100644 --- a/core/config.mk +++ b/core/config.mk @@ -490,6 +490,7 @@ SIGNAPK_JAR := $(HOST_OUT_JAVA_LIBRARIES)/signapk$(COMMON_JAVA_PACKAGE_SUFFIX) SIGNAPK_JNI_LIBRARY_PATH := $(HOST_OUT_SHARED_LIBRARIES) LLVM_RS_CC := $(HOST_OUT_EXECUTABLES)/llvm-rs-cc BCC_COMPAT := $(HOST_OUT_EXECUTABLES)/bcc_compat +DEPMOD := $(HOST_OUT_EXECUTABLES)/depmod DX := $(HOST_OUT_EXECUTABLES)/dx MAINDEXCLASSES := $(HOST_OUT_EXECUTABLES)/mainDexClasses