forked from openkylin/platform_build
Support kernel modules in vendor, recovery images
Support BOARD_VENDOR_KERNEL_MODULES which accepts a list of the kernel module binaries. Binaries listed there are copied to $(TARGET_OUT_VENDOR)/lib/modules and 'depmod' is executed to generate the dependencies. BOARD_RECOVERY_KERNEL_MODULES is similarly implemented to provide a way to specify kernel modules to be copied to the recovery image. Bug: 33305644 Test: android master build on marlin and load dummy modules Merged-In: I0a58a270dbb0d2d38fd089f4abff66e62e14fac1 Change-Id: Ia5f429508ca3d7c77448358e42af6efa98fa8624
This commit is contained in:
parent
c2159fd5b6
commit
adbb9c30d1
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue