Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 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 |
Olivier Fourdan | 423fda9 | 2014-07-10 12:02:50 +0200 | [diff] [blame] | 16 | KERNEL_EXTRA_FLAGS := ANDROID_TOOLCHAIN_FLAGS="-mno-android -Werror" |
Olivier Fourdan | 87c9404 | 2014-07-21 11:26:09 +0200 | [diff] [blame] | 17 | KERNEL_CROSS_COMP := $(notdir $(TARGET_TOOLS_PREFIX)) |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 18 | |
| 19 | KERNEL_CCACHE :=$(firstword $(TARGET_CC)) |
| 20 | KERNEL_PATH := $(ANDROID_BUILD_TOP)/vendor/intel/support |
| 21 | ifeq ($(notdir $(KERNEL_CCACHE)),ccache) |
Olivier Fourdan | 87c9404 | 2014-07-21 11:26:09 +0200 | [diff] [blame] | 22 | KERNEL_CROSS_COMP := "ccache $(KERNEL_CROSS_COMP)" |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 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 |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 31 | KERNEL_CONFIG := $(KERNEL_OUT_DIR)/.config |
Olivier Fourdan | 87c9404 | 2014-07-21 11:26:09 +0200 | [diff] [blame] | 32 | KERNEL_SAVE_DEFCONFIG := $(KERNEL_OUT_DIR)/defconfig |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 33 | KERNEL_BLD_FLAGS := \ |
| 34 | ARCH=$(TARGET_KERNEL_ARCH) \ |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 35 | $(KERNEL_EXTRA_FLAGS) |
| 36 | |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 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) |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 43 | |
Laurent FERT | 0fba309 | 2014-07-16 11:27:12 +0200 | [diff] [blame] | 44 | KERNEL_DEFCONFIG ?= $(KERNEL_SRC_DIR)/arch/x86/configs/$(KERNEL_CFG_NAME)_defconfig |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 45 | KERNEL_VERSION_FILE := $(KERNEL_OUT_DIR)/include/config/kernel.release |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 46 | KERNEL_BZIMAGE := $(PRODUCT_OUT)/kernel |
| 47 | |
| 48 | HOST_OPENSSL := $(HOST_OUT_EXECUTABLES)/openssl |
| 49 | |
Olivier Fourdan | 87c9404 | 2014-07-21 11:26:09 +0200 | [diff] [blame] | 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)) |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 54 | |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 55 | ifeq (,$(filter build_kernel-nodeps,$(MAKECMDGOALS))) |
| 56 | $(KERNEL_BZIMAGE): $(HOST_OPENSSL) $(MINIGZIP) |
| 57 | endif |
| 58 | |
| 59 | $(KERNEL_BZIMAGE): $(KERNEL_CONFIG) |
Olivier Fourdan | 87c9404 | 2014-07-21 11:26:09 +0200 | [diff] [blame] | 60 | $(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) |
| 61 | $(hide) cp -f $(KERNEL_OUT_DIR)/arch/x86/boot/bzImage $@ |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 62 | |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 63 | clean_kernel: |
Olivier Fourdan | 87c9404 | 2014-07-21 11:26:09 +0200 | [diff] [blame] | 64 | $(hide) $(KERNEL_BLD_ENV) $(MAKE) -C $(KERNEL_SRC_DIR) $(KERNEL_BLD_FLAGS) clean |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 65 | |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 66 | menuconfig xconfig gconfig: $(KERNEL_CONFIG) |
Olivier Fourdan | 87c9404 | 2014-07-21 11:26:09 +0200 | [diff] [blame] | 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 =========== |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 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) |
Olivier Fourdan | 87c9404 | 2014-07-21 11:26:09 +0200 | [diff] [blame] | 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)/ |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 83 | |
| 84 | |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 85 | define build_kernel_module |
Olivier Fourdan | 423fda9 | 2014-07-10 12:02:50 +0200 | [diff] [blame] | 86 | $(error Use of external Kernel modules is not allowed) |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 87 | endef |
| 88 | |
| 89 | .PHONY: menuconfig xconfig gconfig |
Olivier Fourdan | 00d35d9 | 2014-07-11 15:30:33 +0200 | [diff] [blame] | 90 | .PHONY: $(KERNEL_BZIMAGE) |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 91 | .PHONY: build_kernel build_kernel-nodeps |
| 92 | |
| 93 | $(PRODUCT_OUT)/boot.img: build_kernel |
Laurent FERT | fce6960 | 2014-06-20 15:35:19 +0200 | [diff] [blame] | 94 | |
| 95 | endif #TARGET_KERNEL_BUILT_FROM_SOURCE |