From f6fe3cf558313b14f3555b8d3746e6249dc704cf Mon Sep 17 00:00:00 2001 From: Paul Kocialkowski Date: Mon, 23 Dec 2013 17:20:04 +0100 Subject: Standalone recovery kernel build Signed-off-by: Paul Kocialkowski --- core/Makefile | 3 ++- core/tasks/kernel.mk | 43 +++++++++++++++++++++++++++++++++++++++---- target/board/Android.mk | 2 ++ 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/core/Makefile b/core/Makefile index 775365b..c66ccc4 100644 --- a/core/Makefile +++ b/core/Makefile @@ -714,7 +714,7 @@ TARGET_RECOVERY_ROOT_TIMESTAMP := $(TARGET_RECOVERY_OUT)/root.ts $(TARGET_RECOVERY_ROOT_TIMESTAMP): $(INTERNAL_RECOVERY_FILES) \ $(INSTALLED_RAMDISK_TARGET) \ - $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_FILES) \ + $(MKBOOTIMG) \ $(recovery_binary) \ $(recovery_initrc) \ $(INSTALLED_2NDBOOTLOADER_TARGET) \ @@ -761,6 +761,7 @@ $(recovery_ramdisk): $(MKBOOTFS) \ ifndef BOARD_CUSTOM_BOOTIMG_MK $(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTIMG) \ + $(INTERNAL_BOOTIMAGE_FILES) \ $(recovery_ramdisk) \ $(recovery_kernel) @echo -e ${CL_CYN}"----- Making recovery image ------"${CL_RST} diff --git a/core/tasks/kernel.mk b/core/tasks/kernel.mk index dc51e7c..9f21fdc 100644 --- a/core/tasks/kernel.mk +++ b/core/tasks/kernel.mk @@ -22,21 +22,27 @@ TARGET_KERNEL_SOURCE ?= $(TARGET_AUTO_KDIR) KERNEL_SRC := $(TARGET_KERNEL_SOURCE) # kernel configuration - mandatory KERNEL_DEFCONFIG := $(TARGET_KERNEL_CONFIG) +KERNEL_RECOVERY_DEFCONFIG := $(TARGET_KERNEL_RECOVERY_CONFIG) VARIANT_DEFCONFIG := $(TARGET_KERNEL_VARIANT_CONFIG) SELINUX_DEFCONFIG := $(TARGET_KERNEL_SELINUX_CONFIG) ## Internal variables KERNEL_OUT := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ KERNEL_CONFIG := $(KERNEL_OUT)/.config +KERNEL_RECOVERY_OUT := $(TARGET_OUT_INTERMEDIATES)/KERNEL_RECOVERY_OBJ +KERNEL_RECOVERY_CONFIG := $(KERNEL_RECOVERY_OUT)/.config ifeq ($(BOARD_USES_UBOOT),true) TARGET_PREBUILT_INT_KERNEL := $(KERNEL_OUT)/arch/$(TARGET_ARCH)/boot/uImage + TARGET_PREBUILT_INT_KERNEL_RECOVERY := $(KERNEL_RECOVERY_OUT)/arch/$(TARGET_ARCH)/boot/uImage TARGET_PREBUILT_INT_KERNEL_TYPE := uImage else ifeq ($(BOARD_USES_UNCOMPRESSED_BOOT),true) TARGET_PREBUILT_INT_KERNEL := $(KERNEL_OUT)/arch/$(TARGET_ARCH)/boot/Image + TARGET_PREBUILT_INT_KERNEL_RECOVERY := $(KERNEL_RECOVERY_OUT)/arch/$(TARGET_ARCH)/boot/Image TARGET_PREBUILT_INT_KERNEL_TYPE := Image else TARGET_PREBUILT_INT_KERNEL := $(KERNEL_OUT)/arch/$(TARGET_ARCH)/boot/zImage + TARGET_PREBUILT_INT_KERNEL_RECOVERY := $(KERNEL_RECOVERY_OUT)/arch/$(TARGET_ARCH)/boot/zImage TARGET_PREBUILT_INT_KERNEL_TYPE := zImage endif @@ -63,6 +69,7 @@ ifeq "$(wildcard $(KERNEL_SRC) )" "" $(warning ***************************************************************) FULL_KERNEL_BUILD := false KERNEL_BIN := $(TARGET_PREBUILT_KERNEL) + KERNEL_RECOVERY_BIN := $(TARGET_PREBUILT_KERNEL) else $(warning ***************************************************************) $(warning * *) @@ -97,6 +104,15 @@ else KERNEL_BIN := $(TARGET_PREBUILT_INT_KERNEL) endif endif + ifneq ($(TARGET_KERNEL_RECOVERY_CONFIG),) + FULL_KERNEL_BUILD := true + ifeq ($(TARGET_USES_UNCOMPRESSED_KERNEL),true) + $(info Using uncompressed kernel) + KERNEL_RECOVERY_BIN := $(KERNEL_RECOVERY_OUT)/piggy + else + KERNEL_RECOVERY_BIN := $(TARGET_PREBUILT_INT_KERNEL_RECOVERY) + endif + endif endif ifeq ($(FULL_KERNEL_BUILD),true) @@ -158,19 +174,31 @@ $(KERNEL_OUT): mkdir -p $(KERNEL_OUT) mkdir -p $(KERNEL_MODULES_OUT) +$(KERNEL_RECOVERY_OUT): + mkdir -p $(KERNEL_RECOVERY_OUT) + $(KERNEL_CONFIG): $(KERNEL_OUT) $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(TARGET_ARCH) $(ARM_CROSS_COMPILE) VARIANT_DEFCONFIG=$(VARIANT_DEFCONFIG) SELINUX_DEFCONFIG=$(SELINUX_DEFCONFIG) $(KERNEL_DEFCONFIG) +$(KERNEL_RECOVERY_CONFIG): $(KERNEL_RECOVERY_OUT) + $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_RECOVERY_OUT) ARCH=$(TARGET_ARCH) $(ARM_CROSS_COMPILE) $(KERNEL_RECOVERY_DEFCONFIG) + $(KERNEL_OUT)/piggy : $(TARGET_PREBUILT_INT_KERNEL) $(hide) gunzip -c $(KERNEL_OUT)/arch/$(TARGET_ARCH)/boot/compressed/piggy.gzip > $(KERNEL_OUT)/piggy -TARGET_KERNEL_BINARIES: $(KERNEL_OUT) $(KERNEL_CONFIG) $(KERNEL_HEADERS_INSTALL) +$(KERNEL_RECOVERY_OUT)/piggy : $(TARGET_PREBUILT_INT_KERNEL_RECOVERY) + $(hide) gunzip -c $(KERNEL_OUT)/arch/$(TARGET_ARCH)/boot/compressed/piggy.gzip > $(KERNEL_RECOVERY_OUT)/piggy + +TARGET_KERNEL_BINARIES: $(BUILT_RAMDISK_TARGET) $(KERNEL_OUT) $(KERNEL_CONFIG) $(KERNEL_HEADERS_INSTALL) $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(TARGET_ARCH) $(ARM_CROSS_COMPILE) $(TARGET_PREBUILT_INT_KERNEL_TYPE) -$(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(TARGET_ARCH) $(ARM_CROSS_COMPILE) modules -$(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) INSTALL_MOD_PATH=../../$(KERNEL_MODULES_INSTALL) ARCH=$(TARGET_ARCH) $(ARM_CROSS_COMPILE) modules_install $(mv-modules) $(clean-module-folder) +$(TARGET_PREBUILT_INT_KERNEL_RECOVERY): $(recovery_ramdisk) $(KERNEL_RECOVERY_OUT) $(KERNEL_RECOVERY_CONFIG) + $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_RECOVERY_OUT) ARCH=$(TARGET_ARCH) $(ARM_CROSS_COMPILE) $(TARGET_PREBUILT_INT_KERNEL_TYPE) + $(TARGET_KERNEL_MODULES): TARGET_KERNEL_BINARIES $(TARGET_PREBUILT_INT_KERNEL): $(TARGET_KERNEL_MODULES) @@ -185,10 +213,17 @@ endif # FULL_KERNEL_BUILD ## Install it ifeq ($(NEEDS_KERNEL_COPY),true) -file := $(INSTALLED_KERNEL_TARGET) -ALL_PREBUILT += $(file) -$(file) : $(KERNEL_BIN) | $(ACP) +installed_kernel := $(INSTALLED_KERNEL_TARGET) +ALL_PREBUILT += $(installed_kernel) +$(installed_kernel) : $(KERNEL_BIN) | $(ACP) $(transform-prebuilt-to-target) ALL_PREBUILT += $(INSTALLED_KERNEL_TARGET) + +installed_recovery_kernel := $(INSTALLED_RECOVERY_KERNEL_TARGET) +ALL_PREBUILT += $(installed_recovery_kernel) +$(installed_recovery_kernel) : $(KERNEL_RECOVERY_BIN) | $(ACP) + $(transform-prebuilt-to-target) + +ALL_PREBUILT += $(INSTALLED_RECOVERY_KERNEL_TARGET) endif diff --git a/target/board/Android.mk b/target/board/Android.mk index 7d94ee0..7a4bb59 100644 --- a/target/board/Android.mk +++ b/target/board/Android.mk @@ -16,8 +16,10 @@ endif # TARGET_NO_BOOTLOADER ifneq ($(strip $(TARGET_NO_KERNEL)),true) INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel + INSTALLED_RECOVERY_KERNEL_TARGET := $(PRODUCT_OUT)/kernel-recovery else INSTALLED_KERNEL_TARGET := + INSTALLED_RECOVERY_KERNEL_TARGET := endif -include $(TARGET_DEVICE_DIR)/AndroidBoard.mk -- cgit v1.1