kernel: Fix module installation and clean up
* Fold module installation into kernel image recipe.
* Specify make argument to strip modules on installation instead of
explicitly invoking the strip tool.
* Remove support of TARGET_KERNEL_MODULES, it's a phony target thus
we're not allowed to depend on it per Android 10 restriction. It
has been useless for years anyway.
* Apply minor clean-ups.
Change-Id: I288af1b2f741f524c2ef49554e15cb91c3115209
diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk
index 7c067e3..2c891e2 100644
--- a/build/tasks/kernel.mk
+++ b/build/tasks/kernel.mk
@@ -73,16 +73,12 @@
else
KERNEL_DEFCONFIG_ARCH := $(KERNEL_ARCH)
endif
-KERNEL_DEFCONFIG_SRC := $(KERNEL_SRC)/arch/$(KERNEL_DEFCONFIG_ARCH)/configs/$(KERNEL_DEFCONFIG)
-
-ifeq ($(BOARD_KERNEL_IMAGE_NAME),)
-$(error BOARD_KERNEL_IMAGE_NAME not defined.)
-endif
-TARGET_PREBUILT_INT_KERNEL := $(KERNEL_OUT)/arch/$(KERNEL_ARCH)/boot/$(BOARD_KERNEL_IMAGE_NAME)
+KERNEL_DEFCONFIG_DIR := $(KERNEL_SRC)/arch/$(KERNEL_DEFCONFIG_ARCH)/configs
+KERNEL_DEFCONFIG_SRC := $(KERNEL_DEFCONFIG_DIR)/$(KERNEL_DEFCONFIG)
ifneq ($(TARGET_KERNEL_ADDITIONAL_CONFIG),)
KERNEL_ADDITIONAL_CONFIG := $(TARGET_KERNEL_ADDITIONAL_CONFIG)
-KERNEL_ADDITIONAL_CONFIG_SRC := $(KERNEL_SRC)/arch/$(KERNEL_ARCH)/configs/$(KERNEL_ADDITIONAL_CONFIG)
+KERNEL_ADDITIONAL_CONFIG_SRC := $(KERNEL_DEFCONFIG_DIR)/$(KERNEL_ADDITIONAL_CONFIG)
ifeq ("$(wildcard $(KERNEL_ADDITIONAL_CONFIG_SRC))","")
$(warning TARGET_KERNEL_ADDITIONAL_CONFIG '$(TARGET_KERNEL_ADDITIONAL_CONFIG)' doesn't exist)
KERNEL_ADDITIONAL_CONFIG_SRC := /dev/null
@@ -91,6 +87,11 @@
KERNEL_ADDITIONAL_CONFIG_SRC := /dev/null
endif
+ifeq ($(BOARD_KERNEL_IMAGE_NAME),)
+$(error BOARD_KERNEL_IMAGE_NAME not defined.)
+endif
+TARGET_PREBUILT_INT_KERNEL := $(KERNEL_OUT)/arch/$(KERNEL_ARCH)/boot/$(BOARD_KERNEL_IMAGE_NAME)
+
ifeq "$(wildcard $(KERNEL_SRC) )" ""
ifneq ($(TARGET_PREBUILT_KERNEL),)
HAS_PREBUILT_KERNEL := true
@@ -161,6 +162,7 @@
endif
MODULES_INTERMEDIATES := $(KERNEL_BUILD_OUT_PREFIX)$(call intermediates-dir-for,PACKAGING,kernel_modules)
+PATH_OVERRIDE :=
ifeq ($(TARGET_KERNEL_CLANG_COMPILE),true)
ifneq ($(TARGET_KERNEL_CLANG_VERSION),)
# Find the clang-* directory containing the specified version
@@ -177,14 +179,14 @@
else ifeq ($(KERNEL_ARCH),x86)
KERNEL_CLANG_TRIPLE ?= CLANG_TRIPLE=x86_64-linux-gnu-
endif
- PATH_OVERRIDE := PATH=$(TARGET_KERNEL_CLANG_PATH)/bin:$$PATH LD_LIBRARY_PATH=$(TARGET_KERNEL_CLANG_PATH)/lib64:$$LD_LIBRARY_PATH
+ PATH_OVERRIDE += PATH=$(TARGET_KERNEL_CLANG_PATH)/bin:$$PATH LD_LIBRARY_PATH=$(TARGET_KERNEL_CLANG_PATH)/lib64:$$LD_LIBRARY_PATH
ifeq ($(KERNEL_CC),)
KERNEL_CC := CC="$(CCACHE_BIN) clang"
endif
endif
-ifeq ($(TARGET_KERNEL_MODULES),)
- TARGET_KERNEL_MODULES := INSTALLED_KERNEL_MODULES
+ifneq ($(TARGET_KERNEL_MODULES),)
+ $(error TARGET_KERNEL_MODULES is no longer supported!)
endif
PATH_OVERRIDE += PATH=$(KERNEL_TOOLCHAIN_PATH_gcc)/bin:$$PATH
@@ -213,12 +215,14 @@
$(call internal-make-kernel-target,$(PRODUCT_OUT)/dtbo,$(1))
endef
-$(KERNEL_ADDITIONAL_CONFIG_OUT):
+$(KERNEL_OUT):
+ mkdir -p $(KERNEL_OUT)
+
+$(KERNEL_ADDITIONAL_CONFIG_OUT): $(KERNEL_OUT)
$(hide) cmp -s $(KERNEL_ADDITIONAL_CONFIG_SRC) $@ || cp $(KERNEL_ADDITIONAL_CONFIG_SRC) $@;
$(KERNEL_CONFIG): $(KERNEL_DEFCONFIG_SRC) $(KERNEL_ADDITIONAL_CONFIG_OUT)
@echo "Building Kernel Config"
- $(hide) mkdir -p $(KERNEL_OUT)
$(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)'"; \
@@ -242,40 +246,27 @@
fi
$(hide) if grep -q '=m' $(KERNEL_CONFIG); then \
echo "Building Kernel Modules"; \
- $(call make-kernel-target,modules); \
- fi
-
-.PHONY: INSTALLED_KERNEL_MODULES
-INSTALLED_KERNEL_MODULES: depmod-host
- $(hide) if grep -q '=m' $(KERNEL_CONFIG); then \
+ $(call make-kernel-target,modules) || exit "$$?"; \
echo "Installing Kernel Modules"; \
- $(call make-kernel-target,INSTALL_MOD_PATH=$(MODULES_INTERMEDIATES) modules_install); \
+ $(call make-kernel-target,INSTALL_MOD_PATH=$(MODULES_INTERMEDIATES) INSTALL_MOD_STRIP=1 modules_install); \
kernel_release=$$(cat $(KERNEL_RELEASE)) \
modules=$$(find $(MODULES_INTERMEDIATES)/lib/modules/$$kernel_release -type f -name '*.ko'); \
- for f in $$modules; do \
- $(KERNEL_TOOLCHAIN_PATH)strip --strip-unneeded $$f; \
- done; \
($(call build-image-kernel-modules,$$modules,$(KERNEL_MODULES_OUT),$(KERNEL_MODULE_MOUNTPOINT)/,$(KERNEL_DEPMOD_STAGING_DIR))); \
fi
-$(TARGET_KERNEL_MODULES): $(TARGET_PREBUILT_INT_KERNEL)
-
.PHONY: kerneltags
kerneltags: $(KERNEL_CONFIG)
- $(hide) mkdir -p $(KERNEL_OUT)
$(call make-kernel-target,tags)
.PHONY: kernelsavedefconfig alldefconfig
-kernelsavedefconfig:
- $(hide) mkdir -p $(KERNEL_OUT)
+kernelsavedefconfig: $(KERNEL_OUT)
$(call make-kernel-target,$(KERNEL_DEFCONFIG))
env KCONFIG_NOTIMESTAMP=true \
$(call make-kernel-target,savedefconfig)
cp $(KERNEL_OUT)/defconfig $(KERNEL_DEFCONFIG_SRC)
-alldefconfig:
- $(hide) mkdir -p $(KERNEL_OUT)
+alldefconfig: $(KERNEL_OUT)
env KCONFIG_NOTIMESTAMP=true \
$(call make-kernel-target,alldefconfig)
@@ -304,7 +295,7 @@
ALL_PREBUILT += $(INSTALLED_DTBOIMAGE_TARGET)
.PHONY: kernel
-kernel: $(INSTALLED_KERNEL_TARGET) $(TARGET_KERNEL_MODULES)
+kernel: $(INSTALLED_KERNEL_TARGET)
.PHONY: dtboimage
dtboimage: $(INSTALLED_DTBOIMAGE_TARGET)