Commit | Line | Data |
---|---|---|
d2d91247 YK |
1 | #Android makefile to build kernel as a part of Android Build |
2 | ||
3 | ifeq ($(KERNEL_DEFCONFIG),) | |
4 | $(error KERNEL_DEFCONFIG must be set as environment variable) | |
5 | endif | |
6 | ||
7 | ifeq ($(INSTALLED_KERNEL_TARGET),) | |
8 | INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel | |
5e65f8b9 | 9 | INSTALLED_DTBOIMAGE_TARGET := $(PRODUCT_OUT)/dtbo.img |
48b1217f | 10 | BOARD_PREBUILT_DTBOIMAGE := $(PRODUCT_OUT)/prebuilt_dtbo.img |
d2d91247 | 11 | INSTALLED_DTB_TARGET := $(PRODUCT_OUT)/dtb.img |
215c2e67 YK |
12 | BOARD_MKBOOTIMG_ARGS += \ |
13 | --second $(INSTALLED_DTB_TARGET) \ | |
14 | --second_offset 0 | |
d2d91247 YK |
15 | endif |
16 | ||
17 | TARGET_KERNEL_ARCH := $(strip $(TARGET_KERNEL_ARCH)) | |
18 | ifeq ($(TARGET_KERNEL_ARCH),) | |
19 | KERNEL_ARCH := arm64 | |
20 | else | |
21 | KERNEL_ARCH := $(TARGET_KERNEL_ARCH) | |
22 | endif | |
23 | ||
24 | ifeq ($(CROSS_COMPILE),) | |
25 | KERNEL_CROSS_COMPILE := aarch64-linux-android- | |
26 | else | |
27 | KERNEL_CROSS_COMPILE := $(CROSS_COMPILE) | |
28 | endif | |
29 | ||
30 | ifeq ($(CLANG_TRIPLE),) | |
31 | CLANG_TRIPLE := aarch64-linux-gnu- | |
32 | else | |
33 | CLANG_TRIPLE := $(CLANG_TRIPLE) | |
34 | endif | |
35 | ||
36 | ifeq ($(TARGET_PREBUILT_KERNEL),) | |
37 | ||
38 | TARGET_KERNEL_SOURCE := kernel/$(TARGET_KERNEL) | |
39 | KERNEL_CONFIG := $(TARGET_KERNEL_SOURCE)/.config | |
40 | KERNEL_BOOT := $(TARGET_KERNEL_SOURCE)/arch/$(KERNEL_ARCH)/boot | |
41 | KERNEL_BIN := $(KERNEL_BOOT)/Image | |
42 | KERNEL_DTB_DIR := $(KERNEL_BOOT)/dts/exynos | |
f573bcc7 | 43 | KERNEL_DTB := $(KERNEL_DTB_DIR)/exynos9610.dtb |
d2d91247 | 44 | KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos9610_dtboimg.cfg |
d2d91247 YK |
45 | MKDTIMG := $(HOST_OUT_EXECUTABLES)/mkdtimg |
46 | ||
dcaf6363 SK |
47 | KERNEL_MERGE_CONFIG := $(TARGET_KERNEL_SOURCE)/scripts/kconfig/merge_config.sh |
48 | KERNEL_CONFIG_BASE := $(TARGET_KERNEL_SOURCE)/arch/$(KERNEL_ARCH)/configs | |
49 | KERNEL_DEFCONFIG_PATH := $(KERNEL_CONFIG_BASE)/$(KERNEL_DEFCONFIG) | |
50 | ||
d2d91247 YK |
51 | ifeq ($(KERNEL_DEFCONFIG),) |
52 | $(error Kernel configuration not defined, cannot build kernel) | |
53 | else | |
54 | ||
dcaf6363 SK |
55 | ifeq ($(TARGET_BUILD_VARIANT),eng) |
56 | MAKE_CONFIG_CMD := $(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) $(KERNEL_DEFCONFIG) | |
57 | else | |
58 | ifeq ($(TARGET_BUILD_VARIANT),userdebug) | |
59 | KERNEL_USER_CFG := $(KERNEL_CONFIG_BASE)/$(TARGET_SOC)_userdebug.cfg | |
60 | else | |
61 | KERNEL_USER_CFG := $(KERNEL_CONFIG_BASE)/$(TARGET_SOC)_user.cfg | |
62 | endif | |
63 | MAKE_CONFIG_CMD := ARCH=$(KERNEL_ARCH) $(KERNEL_MERGE_CONFIG) -m -O $(TARGET_KERNEL_SOURCE) $(KERNEL_DEFCONFIG_PATH) $(KERNEL_USER_CFG); | |
64 | MAKE_CONFIG_CMD += $(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) KCONFIG_ALLCONFIG=.config alldefconfig | |
65 | endif | |
66 | ||
d2d91247 YK |
67 | ifeq ($(N_KERNEL_BUILD_THREAD),) |
68 | N_KERNEL_BUILD_THREAD := 1 | |
69 | endif | |
70 | ||
71 | TARGET_PREBUILT_KERNEL := $(KERNEL_BIN) | |
72 | ||
a948ffd0 | 73 | .PHONY: phony-rebuild |
d2d91247 YK |
74 | |
75 | .PHONY: kernel | |
76 | kernel: $(KERNEL_BIN) | |
77 | ||
78 | .PHONY: kernel-distclean | |
79 | kernel-distclean: | |
80 | $(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) distclean | |
81 | ||
a948ffd0 | 82 | $(KERNEL_CONFIG): phony-rebuild |
d2d91247 | 83 | $(hide) echo "make $(KERNEL_DEFCONFIG)" |
dcaf6363 | 84 | $(MAKE_CONFIG_CMD) |
d2d91247 YK |
85 | |
86 | $(KERNEL_BIN): $(KERNEL_CONFIG) | |
87 | $(hide) echo "Building kernel..." | |
88 | $(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) CLANG_TRIPLE=$(CLANG_TRIPLE) CC=clang -j$(N_KERNEL_BUILD_THREAD) | |
89 | ||
48b1217f | 90 | $(INSTALLED_KERNEL_TARGET): $(INSTALLED_DTBOIMAGE_TARGET) |
d2d91247 YK |
91 | cp $(KERNEL_BIN) $(INSTALLED_KERNEL_TARGET) |
92 | cp $(KERNEL_DTB) $(INSTALLED_DTB_TARGET) | |
48b1217f TA |
93 | |
94 | $(BOARD_PREBUILT_DTBOIMAGE): $(MKDTIMG) $(KERNEL_DTBO_CFG) $(KERNEL_BIN) | |
5e65f8b9 | 95 | $(hide) echo "Building DTBOIMAGE..." |
d2d91247 | 96 | ln -sf $(TARGET_KERNEL_SOURCE)/arch |
48b1217f | 97 | $(MKDTIMG) cfg_create $@ $(KERNEL_DTBO_CFG) |
d2d91247 | 98 | rm -f arch |
d2d91247 YK |
99 | |
100 | endif #TARGET_PREBUILT_KERNEL | |
101 | endif #KERNEL_DEFCONFIG |