KERNEL_ARCH := $(TARGET_KERNEL_ARCH)
endif
+TARGET_KERNEL_MAKE_ENV := $(strip $(TARGET_KERNEL_MAKE_ENV))
+ifeq ($(TARGET_KERNEL_MAKE_ENV),)
+KERNEL_MAKE_ENV :=
+else
+KERNEL_MAKE_ENV := $(TARGET_KERNEL_MAKE_ENV)
+endif
+
ifeq ($(CROSS_COMPILE),)
KERNEL_CROSS_COMPILE := aarch64-linux-android-
else
CLANG_TRIPLE := $(CLANG_TRIPLE)
endif
+BUILD_ROOT_LOC := ../../
+KERNEL_OUT := $(TARGET_OUT_INTERMEDIATES)/kernel/$(TARGET_KERNEL)
+KERNEL_OUT := $(KERNEL_OBJECTS)
ifeq ($(TARGET_PREBUILT_KERNEL),)
KERNEL_CONFIG := $(KERNEL_OBJECTS)/.config
N_KERNEL_BUILD_THREAD := 1
endif
+include $(TARGET_KERNEL_SOURCE)/defconfig.mk
+
+
TARGET_PREBUILT_KERNEL := $(KERNEL_BIN)
-.PHONY: phony-rebuild
+# Make the kernel config
+# $1 output dir
+# $2 kernel config filepath
+# $3 defconfig
+# $4 kernel source
+# $5 kernel make env
+# $6 kernel architecture
+# $7 cross compile sub-command
+# $8 make command
+define do-kernel-config
+ ( cp $(3) $(2) && $(8) -C $(4) O=$(1) $(5) ARCH=$(6) CROSS_COMPILE=$(7) defoldconfig ) || ( rm -f $(2) && false )
+endef
+
+
+$(KERNEL_OUT):
+ mkdir -p $(KERNEL_OUT)
.PHONY: kernel
kernel: $(KERNEL_BIN)
kernel-distclean:
$(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) distclean
-$(KERNEL_CONFIG): phony-rebuild
-ifeq ($(TARGET_PRODUCT),kane_factory)
- cat $(ERD9609_DEFCONFIG_PATH) $(ROBUSTA2_FACTORY_DEFCONFIG_PATH) > $(ERD9609_ROBUSTA2_FACTORY_DEFCONFIG_PATH)
-endif
- $(hide) echo "make $(KERNEL_DEFCONFIG)"
- $(MAKE_CONFIG_CMD)
+$(KERNEL_CONFIG): $(TARGET_DEFCONFIG)
+ $(hide) echo "make $(KERNEL_CONFIG)"
+ $(call do-kernel-config,$(BUILD_ROOT_LOC)$(KERNEL_OUT),$@,$(TARGET_DEFCONFIG),$(TARGET_KERNEL_SOURCE),$(KERNEL_MAKE_ENV),$(KERNEL_ARCH),$(KERNEL_CROSS_COMPILE),$(MAKE))
-$(KERNEL_BIN): $(KERNEL_CONFIG)
+$(KERNEL_BIN): $(KERNEL_OUT) $(KERNEL_CONFIG)
$(hide) echo "Building kernel..."
$(MAKE) -C $(TARGET_KERNEL_SOURCE) O=$(PWD)/$(KERNEL_OBJECTS) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) CLANG_TRIPLE=$(CLANG_TRIPLE) CC=$(CC) $(LLVM_OPTIONS) -j$(N_KERNEL_BUILD_THREAD)
--- /dev/null
+#MOTO
+CONFIG_USB_ANDROID_USBNET=y
+CONFIG_BOOTINFO=y
+CONFIG_PSTORE_RAM_ANNOTATION_APPEND=y
--- /dev/null
+DEFCONFIGSRC := $(TARGET_KERNEL_SOURCE)/arch/$(KERNEL_ARCH)/configs
+LJAPDEFCONFIGSRC := ${DEFCONFIGSRC}/ext_config
+DEFCONFIG_BASENAME := $(subst -perf,,$(subst _defconfig,,$(KERNEL_DEFCONFIG)))
+PRODUCT_SPECIFIC_DEFCONFIGS := $(DEFCONFIGSRC)/$(KERNEL_DEFCONFIG) $(LJAPDEFCONFIGSRC)/moto-$(DEFCONFIG_BASENAME).config
+TARGET_DEFCONFIG := $(KERNEL_OUT)/mapphone_defconfig
+KERNEL_DEBUG_DEFCONFIG := $(LJAPDEFCONFIGSRC)/debug-$(DEFCONFIG_BASENAME).config
+PRODUCT_KERNEL_DEBUG_DEFCONFIG := $(LJAPDEFCONFIGSRC)/$(PRODUCT_DEBUG_DEFCONFIG)
+FACTORY_DEFCONFIG := $(LJAPDEFCONFIGSRC)/factory-$(DEFCONFIG_BASENAME).config
+
+# add debug config file for non-user build
+ifneq ($(TARGET_BUILD_VARIANT), user)
+ifneq ($(TARGET_NO_KERNEL_DEBUG), true)
+ifneq ($(wildcard $(KERNEL_DEBUG_DEFCONFIG)),)
+PRODUCT_SPECIFIC_DEFCONFIGS += $(KERNEL_DEBUG_DEFCONFIG)
+# Add a product-specific debug defconfig, too
+ifneq ($(PRODUCT_DEBUG_DEFCONFIG),)
+PRODUCT_SPECIFIC_DEFCONFIGS += $(PRODUCT_KERNEL_DEBUG_DEFCONFIG)
+endif
+endif
+endif
+endif
+
+ifeq ($(TARGET_FACTORY_DEFCONFIG), true)
+PRODUCT_SPECIFIC_DEFCONFIGS += $(FACTORY_DEFCONFIG)
+endif
+
+#previous config not defined yet
+PRODUCT_SPECIFIC_DEFCONFIGS := $(DEFCONFIGSRC)/$(KERNEL_DEFCONFIG)
+# append all additional configs
+ifneq ($(KERNEL_EXTRA_CONFIG),)
+PRODUCT_SPECIFIC_DEFCONFIGS += $(KERNEL_EXTRA_CONFIG:%=$(LJAPDEFCONFIGSRC)/%.config)
+endif
+
+
+define do-make-defconfig
+ $(hide) mkdir -p $(dir $(1))
+ ( perl -le 'print "# This file was automatically generated from:\n#\t" . join("\n#\t", @ARGV) . "\n"' $(2) && cat $(2) ) > $(1) || ( rm -f $(1) && false )
+endef
+
+#
+# make combined defconfig file
+#---------------------------------------
+$(TARGET_DEFCONFIG): FORCE $(PRODUCT_SPECIFIC_DEFCONFIGS)
+ $(call do-make-defconfig,$@,$(PRODUCT_SPECIFIC_DEFCONFIGS))
+
+.PHONY: FORCE
+FORCE:
nconfig: $(obj)/nconf
$< $(silent) $(Kconfig)
+defoldconfig: $(obj)/conf
+ $< --defconfig=.config $(Kconfig)
+
silentoldconfig: $(obj)/conf
$(Q)mkdir -p include/config include/generated
$(Q)test -e include/generated/autoksyms.h || \