Home | History | Annotate | Download | only in fugu
      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 $(KERNEL_CONFIG): $(KERNEL_DEFCONFIG)
     49 	$(hide) echo Regenerating kernel config $(KERNEL_OUT_DIR)
     50 	$(hide) mkdir -p $(KERNEL_OUT_DIR)
     51 	$(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) $(notdir $(KERNEL_DEFCONFIG))
     52 
     53 ifeq (,$(filter build_kernel-nodeps,$(MAKECMDGOALS)))
     54 $(KERNEL_BZIMAGE): $(MINIGZIP)
     55 endif
     56 
     57 $(KERNEL_BZIMAGE): $(KERNEL_CONFIG)
     58 	$(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS)
     59 	$(hide) cp -f $(KERNEL_OUT_DIR)/arch/x86/boot/bzImage $@
     60 
     61 clean_kernel:
     62 	$(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) clean
     63 
     64 menuconfig xconfig gconfig: $(KERNEL_CONFIG)
     65 	$(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) $@
     66 	$(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) savedefconfig
     67 	$(hide) cp -f $(KERNEL_SAVE_DEFCONFIG) $(KERNEL_DEFCONFIG)
     68 	$(hide) echo ===========
     69 	$(hide) echo $(KERNEL_DEFCONFIG) has been modified !
     70 	$(hide) echo ===========
     71 
     72 TAGS_files := TAGS
     73 tags_files := tags
     74 gtags_files := GTAGS GPATH GRTAGS GSYMS
     75 cscope_files := $(addprefix cscope.,files out out.in out.po)
     76 
     77 TAGS tags gtags cscope: $(KERNEL_CONFIG)
     78 	$(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) $@
     79 	$(hide) rm -f $(KERNEL_SRC_DIR)/$($@_files)
     80 	$(hide) cp -fs $(addprefix `pwd`/$(KERNEL_OUT_DIR)/,$($@_files)) $(KERNEL_SRC_DIR)/
     81 
     82 
     83 define build_kernel_module
     84 $(error Use of external Kernel modules is not allowed)
     85 endef
     86 
     87 .PHONY: menuconfig xconfig gconfig
     88 .PHONY: $(KERNEL_BZIMAGE)
     89 .PHONY: build_kernel build_kernel-nodeps
     90 
     91 $(PRODUCT_OUT)/boot.img: build_kernel
     92 
     93 endif #TARGET_KERNEL_BUILT_FROM_SOURCE
     94