You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.2 KiB
93 lines
3.2 KiB
ifeq ($(TARGET_KERNEL_BUILT_FROM_SOURCE),true) |
|
|
|
# Force using bash as a shell, otherwise, on Ubuntu, dash will break some |
|
# dependency due to its bad handling of echo \1 |
|
MAKE += SHELL=/bin/bash |
|
|
|
ifeq ($(KERNEL_CFG_NAME),) |
|
$(error cannot build kernel, config not specified) |
|
endif |
|
|
|
ifeq ($(TARGET_KERNEL_ARCH),x86_64) |
|
KERNEL_TOOLCHAIN_ARCH := $(TARGET_KERNEL_ARCH) |
|
else |
|
KERNEL_TOOLCHAIN_ARCH := i686 |
|
endif |
|
KERNEL_EXTRA_FLAGS := ANDROID_TOOLCHAIN_FLAGS="-mno-android -Werror" |
|
KERNEL_CROSS_COMP := $(notdir $(TARGET_TOOLS_PREFIX)) |
|
|
|
KERNEL_CCACHE :=$(firstword $(TARGET_CC)) |
|
KERNEL_PATH := $(ANDROID_BUILD_TOP)/vendor/intel/support |
|
ifeq ($(notdir $(KERNEL_CCACHE)),ccache) |
|
KERNEL_CROSS_COMP := "ccache $(KERNEL_CROSS_COMP)" |
|
KERNEL_PATH := $(KERNEL_PATH):$(ANDROID_BUILD_TOP)/$(dir $(KERNEL_CCACHE)) |
|
endif |
|
|
|
#remove time_macros from ccache options, it breaks signing process |
|
KERNEL_CCSLOP := $(filter-out time_macros,$(subst $(comma), ,$(CCACHE_SLOPPINESS))) |
|
KERNEL_CCSLOP := $(subst $(space),$(comma),$(KERNEL_CCSLOP)) |
|
|
|
KERNEL_OUT_DIR := $(PRODUCT_OUT)/linux/kernel |
|
KERNEL_CONFIG := $(KERNEL_OUT_DIR)/.config |
|
KERNEL_SAVE_DEFCONFIG := $(KERNEL_OUT_DIR)/defconfig |
|
KERNEL_BLD_FLAGS := \ |
|
ARCH=$(TARGET_KERNEL_ARCH) \ |
|
$(KERNEL_EXTRA_FLAGS) |
|
|
|
KERNEL_BLD_FLAGS :=$(KERNEL_BLD_FLAGS) \ |
|
O=../../$(KERNEL_OUT_DIR) \ |
|
|
|
KERNEL_BLD_ENV := CROSS_COMPILE=$(KERNEL_CROSS_COMP) \ |
|
PATH=$(KERNEL_PATH):$(PATH) \ |
|
CCACHE_SLOPPINESS=$(KERNEL_CCSLOP) |
|
|
|
KERNEL_DEFCONFIG ?= $(KERNEL_SRC_DIR)/arch/x86/configs/$(KERNEL_CFG_NAME)_defconfig |
|
KERNEL_VERSION_FILE := $(KERNEL_OUT_DIR)/include/config/kernel.release |
|
KERNEL_BZIMAGE := $(PRODUCT_OUT)/kernel |
|
|
|
$(KERNEL_CONFIG): $(KERNEL_DEFCONFIG) |
|
$(hide) echo Regenerating kernel config $(KERNEL_OUT_DIR) |
|
$(hide) mkdir -p $(KERNEL_OUT_DIR) |
|
$(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) $(notdir $(KERNEL_DEFCONFIG)) |
|
|
|
ifeq (,$(filter build_kernel-nodeps,$(MAKECMDGOALS))) |
|
$(KERNEL_BZIMAGE): $(MINIGZIP) |
|
endif |
|
|
|
$(KERNEL_BZIMAGE): $(KERNEL_CONFIG) |
|
$(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) |
|
$(hide) cp -f $(KERNEL_OUT_DIR)/arch/x86/boot/bzImage $@ |
|
|
|
clean_kernel: |
|
$(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) clean |
|
|
|
menuconfig xconfig gconfig: $(KERNEL_CONFIG) |
|
$(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) $@ |
|
$(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) savedefconfig |
|
$(hide) cp -f $(KERNEL_SAVE_DEFCONFIG) $(KERNEL_DEFCONFIG) |
|
$(hide) echo =========== |
|
$(hide) echo $(KERNEL_DEFCONFIG) has been modified ! |
|
$(hide) echo =========== |
|
|
|
TAGS_files := TAGS |
|
tags_files := tags |
|
gtags_files := GTAGS GPATH GRTAGS GSYMS |
|
cscope_files := $(addprefix cscope.,files out out.in out.po) |
|
|
|
TAGS tags gtags cscope: $(KERNEL_CONFIG) |
|
$(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) $@ |
|
$(hide) rm -f $(KERNEL_SRC_DIR)/$($@_files) |
|
$(hide) cp -fs $(addprefix `pwd`/$(KERNEL_OUT_DIR)/,$($@_files)) $(KERNEL_SRC_DIR)/ |
|
|
|
|
|
define build_kernel_module |
|
$(error Use of external Kernel modules is not allowed) |
|
endef |
|
|
|
.PHONY: menuconfig xconfig gconfig |
|
.PHONY: $(KERNEL_BZIMAGE) |
|
.PHONY: build_kernel build_kernel-nodeps |
|
|
|
$(PRODUCT_OUT)/boot.img: build_kernel |
|
|
|
endif #TARGET_KERNEL_BUILT_FROM_SOURCE
|
|
|