diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk index 55357392..5a150fb0 100644 --- a/build/tasks/kernel.mk +++ b/build/tasks/kernel.mk @@ -235,30 +235,13 @@ endif KERNEL_CROSS_COMPILE := CROSS_COMPILE="$(ccache) $(KERNEL_TOOLCHAIN_PATH)" ccache = -define mv-modules - mdpath=`find $(KERNEL_MODULES_OUT) -type f -name modules.order`;\ - if [ "$$mdpath" != "" ];then\ - mpath=`dirname $$mdpath`;\ - ko=`find $$mpath/kernel -type f -name *.ko`;\ - for i in $$ko; do $(KERNEL_TOOLCHAIN_PATH)strip --strip-unneeded $$i;\ - mv $$i $(KERNEL_MODULES_OUT)/; done;\ - fi -endef - -define clean-module-folder - mdpath=`find $(KERNEL_MODULES_OUT) -type f -name modules.order`;\ - if [ "$$mdpath" != "" ];then\ - mpath=`dirname $$mdpath`; rm -rf $$mpath;\ - fi -endef - ifeq ($(HOST_OS),darwin) MAKE_FLAGS += C_INCLUDE_PATH=$(ANDROID_BUILD_TOP)/external/elfutils/libelf:/usr/local/opt/openssl/include MAKE_FLAGS += LIBRARY_PATH=/usr/local/opt/openssl/lib endif ifeq ($(TARGET_KERNEL_MODULES),) - TARGET_KERNEL_MODULES := no-external-modules + TARGET_KERNEL_MODULES := INSTALLED_KERNEL_MODULES endif $(KERNEL_OUT_STAMP): @@ -290,24 +273,28 @@ $(KERNEL_CONFIG): $(KERNEL_OUT_STAMP) $(KERNEL_DEFCONFIG_SRC) $(KERNEL_ADDITIONA TARGET_KERNEL_BINARIES: $(KERNEL_OUT_STAMP) $(KERNEL_CONFIG) $(KERNEL_HEADERS_INSTALL_STAMP) @echo "Building Kernel" $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(BOARD_KERNEL_IMAGE_NAME) - $(hide) if grep -q 'CONFIG_OF=y' $(KERNEL_CONFIG) ; \ - then \ - echo "Building DTBs" ; \ - $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) dtbs ; \ - else \ - echo "DTBs not enabled" ; \ - fi ; - $(hide) if grep -q 'CONFIG_MODULES=y' $(KERNEL_CONFIG) ; \ - then \ - echo "Building Kernel Modules" ; \ - $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) modules && \ - $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) INSTALL_MOD_PATH=../../$(KERNEL_MODULES_INSTALL) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) modules_install && \ - $(mv-modules) && \ - $(clean-module-folder) ; \ - else \ - echo "Kernel Modules not enabled" ; \ - fi ; - + $(hide) if grep -q '^CONFIG_OF=y' $(KERNEL_CONFIG); then \ + echo "Building DTBs"; \ + $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) dtbs; \ + fi + $(hide) if grep -q '^CONFIG_MODULES=y' $(KERNEL_CONFIG); then \ + echo "Building Kernel Modules"; \ + $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) modules; \ + fi + +.PHONY: INSTALLED_KERNEL_MODULES +INSTALLED_KERNEL_MODULES: + $(hide) if grep -q '^CONFIG_MODULES=y' $(KERNEL_CONFIG); then \ + echo "Installing Kernel Modules"; \ + $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) 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 \ + $(KERNEL_TOOLCHAIN_PATH)strip --strip-unneeded $$f; \ + mv $$f $(KERNEL_MODULES_OUT); \ + done && \ + rm -rf $$mpath; \ + fi $(TARGET_KERNEL_MODULES): TARGET_KERNEL_BINARIES