1 ifeq ($(TARGET_KERNEL_BUILT_FROM_SOURCE),true) 2 3 # Force using bash as a shell, otherwise, on Ubuntu, dash will break some 4 # dependency due to its bad handling of echo \1 5 MAKE += SHELL=/bin/bash 6 7 ifeq ($(KERNEL_CFG_NAME),) 8 $(error cannot build kernel, config not specified) 9 endif 10 11 ifeq ($(TARGET_KERNEL_ARCH),x86_64) 12 KERNEL_TOOLCHAIN_ARCH := $(TARGET_KERNEL_ARCH) 13 else 14 KERNEL_TOOLCHAIN_ARCH := i686 15 endif 16 KERNEL_EXTRA_FLAGS := ANDROID_TOOLCHAIN_FLAGS="-mno-android -Werror" 17 KERNEL_CROSS_COMP := $(notdir $(TARGET_TOOLS_PREFIX)) 18 19 KERNEL_CCACHE :=$(firstword $(TARGET_CC)) 20 KERNEL_PATH := $(ANDROID_BUILD_TOP)/vendor/intel/support 21 ifeq ($(notdir $(KERNEL_CCACHE)),ccache) 22 KERNEL_CROSS_COMP := "ccache $(KERNEL_CROSS_COMP)" 23 KERNEL_PATH := $(KERNEL_PATH):$(ANDROID_BUILD_TOP)/$(dir $(KERNEL_CCACHE)) 24 endif 25 26 #remove time_macros from ccache options, it breaks signing process 27 KERNEL_CCSLOP := $(filter-out time_macros,$(subst $(comma), ,$(CCACHE_SLOPPINESS))) 28 KERNEL_CCSLOP := $(subst $(space),$(comma),$(KERNEL_CCSLOP)) 29 30 KERNEL_OUT_DIR := $(PRODUCT_OUT)/linux/kernel 31 KERNEL_CONFIG := $(KERNEL_OUT_DIR)/.config 32 KERNEL_SAVE_DEFCONFIG := $(KERNEL_OUT_DIR)/defconfig 33 KERNEL_BLD_FLAGS := \ 34 ARCH=$(TARGET_KERNEL_ARCH) \ 35 $(KERNEL_EXTRA_FLAGS) 36 37 KERNEL_BLD_FLAGS :=$(KERNEL_BLD_FLAGS) \ 38 O=../../$(KERNEL_OUT_DIR) \ 39 40 KERNEL_BLD_ENV := CROSS_COMPILE=$(KERNEL_CROSS_COMP) \ 41 PATH=$(KERNEL_PATH):$(PATH) \ 42 CCACHE_SLOPPINESS=$(KERNEL_CCSLOP) 43 44 KERNEL_DEFCONFIG ?= $(KERNEL_SRC_DIR)/arch/x86/configs/$(KERNEL_CFG_NAME)_defconfig 45 KERNEL_VERSION_FILE := $(KERNEL_OUT_DIR)/include/config/kernel.release 46 KERNEL_BZIMAGE := $(PRODUCT_OUT)/kernel 47 48 HOST_OPENSSL := $(HOST_OUT_EXECUTABLES)/openssl 49 50 $(KERNEL_CONFIG): $(KERNEL_DEFCONFIG) 51 $(hide) echo Regenerating kernel config $(KERNEL_OUT_DIR) 52 $(hide) mkdir -p $(KERNEL_OUT_DIR) 53 $(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) $(notdir $(KERNEL_DEFCONFIG)) 54 55 ifeq (,$(filter build_kernel-nodeps,$(MAKECMDGOALS))) 56 $(KERNEL_BZIMAGE): $(HOST_OPENSSL) $(MINIGZIP) 57 endif 58 59 $(KERNEL_BZIMAGE): $(KERNEL_CONFIG) 60 $(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) 61 $(hide) cp -f $(KERNEL_OUT_DIR)/arch/x86/boot/bzImage $@ 62 63 clean_kernel: 64 $(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) clean 65 66 menuconfig xconfig gconfig: $(KERNEL_CONFIG) 67 $(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) $@ 68 $(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) savedefconfig 69 $(hide) cp -f $(KERNEL_SAVE_DEFCONFIG) $(KERNEL_DEFCONFIG) 70 $(hide) echo =========== 71 $(hide) echo $(KERNEL_DEFCONFIG) has been modified ! 72 $(hide) echo =========== 73 74 TAGS_files := TAGS 75 tags_files := tags 76 gtags_files := GTAGS GPATH GRTAGS GSYMS 77 cscope_files := $(addprefix cscope.,files out out.in out.po) 78 79 TAGS tags gtags cscope: $(KERNEL_CONFIG) 80 $(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) $@ 81 $(hide) rm -f $(KERNEL_SRC_DIR)/$($@_files) 82 $(hide) cp -fs $(addprefix `pwd`/$(KERNEL_OUT_DIR)/,$($@_files)) $(KERNEL_SRC_DIR)/ 83 84 85 define build_kernel_module 86 $(error Use of external Kernel modules is not allowed) 87 endef 88 89 .PHONY: menuconfig xconfig gconfig 90 .PHONY: $(KERNEL_BZIMAGE) 91 .PHONY: build_kernel build_kernel-nodeps 92 93 $(PRODUCT_OUT)/boot.img: build_kernel 94 95 endif #TARGET_KERNEL_BUILT_FROM_SOURCE 96