From a3254465555993b5323dcb9c7d5d9e59fba356db Mon Sep 17 00:00:00 2001 From: Ethan Chen Date: Sat, 9 Feb 2019 16:26:51 -0800 Subject: [PATCH] kernel: Use a macro for kernel build targets Change-Id: Idb61ddbfd630401da09a0c3207aaab7e25bc4b14 --- build/tasks/kernel.mk | 49 ++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk index 42dc13bd..8c602452 100644 --- a/build/tasks/kernel.mk +++ b/build/tasks/kernel.mk @@ -190,6 +190,25 @@ endif KERNEL_ADDITIONAL_CONFIG_OUT := $(KERNEL_OUT)/.additional_config +# Internal implementation of make-kernel-target +# $(1): output path (The value passed to O=) +# $(2): target to build (eg. defconfig, modules, dtbo.img) +define internal-make-kernel-target +$(PATH_OVERRIDE) $(MAKE) -C $(KERNEL_SRC) O=$(1) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(2) +endef + +# Make a kernel target +# $(1): The kernel target to build (eg. defconfig, modules, modules_install) +define make-kernel-target +$(call internal-make-kernel-target,$(KERNEL_OUT),$(1)) +endef + +# Make a DTBO target +# $(1): The DTBO target to build (eg. dtbo.img, defconfig) +define make-dtbo-target +$(call internal-make-kernel-target,$(PRODUCT_OUT)/dtbo,$(1)) +endef + .PHONY: force_additional_config $(KERNEL_ADDITIONAL_CONFIG_OUT): force_additional_config $(hide) cmp -s $(KERNEL_ADDITIONAL_CONFIG_SRC) $@ || cp $(KERNEL_ADDITIONAL_CONFIG_SRC) $@; @@ -197,29 +216,31 @@ $(KERNEL_ADDITIONAL_CONFIG_OUT): force_additional_config $(KERNEL_CONFIG): $(KERNEL_DEFCONFIG_SRC) $(KERNEL_ADDITIONAL_CONFIG_OUT) @echo "Building Kernel Config" $(hide) mkdir -p $(KERNEL_OUT) - $(PATH_OVERRIDE) $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) VARIANT_DEFCONFIG=$(VARIANT_DEFCONFIG) SELINUX_DEFCONFIG=$(SELINUX_DEFCONFIG) $(KERNEL_DEFCONFIG) + $(call make-kernel-target,VARIANT_DEFCONFIG=$(VARIANT_DEFCONFIG) SELINUX_DEFCONFIG=$(SELINUX_DEFCONFIG) $(KERNEL_DEFCONFIG)) $(hide) if [ ! -z "$(KERNEL_CONFIG_OVERRIDE)" ]; then \ echo "Overriding kernel config with '$(KERNEL_CONFIG_OVERRIDE)'"; \ echo $(KERNEL_CONFIG_OVERRIDE) >> $(KERNEL_OUT)/.config; \ - $(PATH_OVERRIDE) $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) oldconfig; fi + $(call make-kernel-target,oldconfig); \ + fi # Create defconfig build artifact - $(hide) $(PATH_OVERRIDE) $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) savedefconfig + $(call make-kernel-target,savedefconfig) $(hide) if [ ! -z "$(KERNEL_ADDITIONAL_CONFIG)" ]; then \ echo "Using additional config '$(KERNEL_ADDITIONAL_CONFIG)'"; \ $(KERNEL_SRC)/scripts/kconfig/merge_config.sh -m -O $(KERNEL_OUT) $(KERNEL_OUT)/.config $(KERNEL_SRC)/arch/$(KERNEL_ARCH)/configs/$(KERNEL_ADDITIONAL_CONFIG); \ - $(PATH_OVERRIDE) $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) KCONFIG_ALLCONFIG=$(KERNEL_OUT)/.config alldefconfig; fi + $(call make-kernel-target,KCONFIG_ALLCONFIG=$(KERNEL_OUT)/.config alldefconfig); \ + fi .PHONY: TARGET_KERNEL_BINARIES TARGET_KERNEL_BINARIES: $(KERNEL_CONFIG) @echo "Building Kernel" - $(PATH_OVERRIDE) $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(BOARD_KERNEL_IMAGE_NAME) + $(call make-kernel-target,$(BOARD_KERNEL_IMAGE_NAME)) $(hide) if grep -q '^CONFIG_OF=y' $(KERNEL_CONFIG); then \ echo "Building DTBs"; \ - $(PATH_OVERRIDE) $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) dtbs; \ + $(call make-kernel-target,dtbs); \ fi $(hide) if grep -q '=m' $(KERNEL_CONFIG); then \ echo "Building Kernel Modules"; \ - $(PATH_OVERRIDE) $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) modules; \ + $(call make-kernel-target,modules); \ fi .PHONY: INSTALLED_KERNEL_MODULES @@ -229,7 +250,7 @@ INSTALLED_KERNEL_MODULES: depmod-host $(hide) rm -rf $(KERNEL_DEPMOD_STAGING_DIR) $(hide) if grep -q '=m' $(KERNEL_CONFIG); then \ echo "Installing Kernel Modules"; \ - $(PATH_OVERRIDE) $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) INSTALL_MOD_PATH=../../$(KERNEL_MODULES_INSTALL) modules_install && \ + $(call make-kernel-target,INSTALL_MOD_PATH=../../$(KERNEL_MODULES_INSTALL) modules_install) && \ mofile=$$(find $(KERNEL_MODULES_OUT) -type f -name modules.order) && \ mpath=$$(dirname $$mofile) && \ for f in $$(find $$mpath/kernel -type f -name '*.ko'); do \ @@ -250,27 +271,27 @@ $(TARGET_PREBUILT_INT_KERNEL): $(TARGET_KERNEL_MODULES) .PHONY: kerneltags kerneltags: $(KERNEL_CONFIG) $(hide) mkdir -p $(KERNEL_OUT) - $(PATH_OVERRIDE) $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) tags + $(call make-kernel-target,tags) .PHONY: kernelsavedefconfig alldefconfig kernelsavedefconfig: $(hide) mkdir -p $(KERNEL_OUT) - $(PATH_OVERRIDE) $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(KERNEL_DEFCONFIG) + $(call make-kernel-target,$(KERNEL_DEFCONFIG)) env KCONFIG_NOTIMESTAMP=true \ - $(PATH_OVERRIDE) $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) savedefconfig + $(call make-kernel-target,savedefconfig) cp $(KERNEL_OUT)/defconfig $(KERNEL_DEFCONFIG_SRC) alldefconfig: $(hide) mkdir -p $(KERNEL_OUT) env KCONFIG_NOTIMESTAMP=true \ - $(PATH_OVERRIDE) $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) alldefconfig + $(call make-kernel-target,alldefconfig) TARGET_PREBUILT_DTBO = $(PRODUCT_OUT)/dtbo/arch/$(KERNEL_ARCH)/boot/dtbo.img $(TARGET_PREBUILT_DTBO): $(AVBTOOL) echo -e ${CL_GRN}"Building DTBO.img"${CL_RST} - $(PATH_OVERRIDE) $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(PRODUCT_OUT)/dtbo ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(KERNEL_DEFCONFIG) - $(PATH_OVERRIDE) $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(PRODUCT_OUT)/dtbo ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) dtbo.img + $(call make-dtbo-target,$(KERNEL_DEFCONFIG)) + $(call make-dtbo-target,dtbo.img) $(AVBTOOL) add_hash_footer \ --image $@ \ --partition_size $(BOARD_DTBOIMG_PARTITION_SIZE) \