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 YK |
9 | INSTALLED_DTBOIMAGE_TARGET := $(PRODUCT_OUT)/dtbo.img |
10 | BOARD_PREBUILT_DTBOIMAGE := $(PRODUCT_OUT)/dtbo.img | |
d2d91247 YK |
11 | INSTALLED_DTB_TARGET := $(PRODUCT_OUT)/dtb.img |
12 | endif | |
13 | ||
14 | TARGET_KERNEL_ARCH := $(strip $(TARGET_KERNEL_ARCH)) | |
15 | ifeq ($(TARGET_KERNEL_ARCH),) | |
16 | KERNEL_ARCH := arm64 | |
17 | else | |
18 | KERNEL_ARCH := $(TARGET_KERNEL_ARCH) | |
19 | endif | |
20 | ||
21 | ifeq ($(CROSS_COMPILE),) | |
22 | KERNEL_CROSS_COMPILE := aarch64-linux-android- | |
23 | else | |
24 | KERNEL_CROSS_COMPILE := $(CROSS_COMPILE) | |
25 | endif | |
26 | ||
27 | ifeq ($(CLANG_TRIPLE),) | |
28 | CLANG_TRIPLE := aarch64-linux-gnu- | |
29 | else | |
30 | CLANG_TRIPLE := $(CLANG_TRIPLE) | |
31 | endif | |
32 | ||
33 | ifeq ($(TARGET_PREBUILT_KERNEL),) | |
34 | ||
35 | TARGET_KERNEL_SOURCE := kernel/$(TARGET_KERNEL) | |
36 | KERNEL_CONFIG := $(TARGET_KERNEL_SOURCE)/.config | |
37 | KERNEL_BOOT := $(TARGET_KERNEL_SOURCE)/arch/$(KERNEL_ARCH)/boot | |
38 | KERNEL_BIN := $(KERNEL_BOOT)/Image | |
39 | KERNEL_DTB_DIR := $(KERNEL_BOOT)/dts/exynos | |
f573bcc7 | 40 | KERNEL_DTB := $(KERNEL_DTB_DIR)/exynos9610.dtb |
d2d91247 | 41 | KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos9610_dtboimg.cfg |
d2d91247 YK |
42 | MKDTIMG := $(HOST_OUT_EXECUTABLES)/mkdtimg |
43 | ||
44 | ifeq ($(KERNEL_DEFCONFIG),) | |
45 | $(error Kernel configuration not defined, cannot build kernel) | |
46 | else | |
47 | ||
48 | ifeq ($(N_KERNEL_BUILD_THREAD),) | |
49 | N_KERNEL_BUILD_THREAD := 1 | |
50 | endif | |
51 | ||
52 | TARGET_PREBUILT_KERNEL := $(KERNEL_BIN) | |
53 | ||
54 | .PHONY: remove-bins | |
55 | remove-bin: | |
56 | $(hide) echo "Clean Up prebuilts" | |
57 | rm -f $(KERNEL_CONFIG) | |
58 | rm -f $(KERNEL_BIN) | |
59 | rm -f $(KERNEL_DTB) | |
60 | rm -f $(INSTALLED_KERNEL_TARGET) | |
5e65f8b9 | 61 | rm -f $(INSTALLED_DTBOIMAGE_TARGET) |
d2d91247 YK |
62 | rm -f $(INSTALLED_DTB_TARGET) |
63 | ||
64 | .PHONY: kernel | |
65 | kernel: $(KERNEL_BIN) | |
66 | ||
67 | .PHONY: kernel-distclean | |
68 | kernel-distclean: | |
69 | $(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) distclean | |
70 | ||
71 | $(KERNEL_CONFIG): remove-bins | |
72 | $(hide) echo "make $(KERNEL_DEFCONFIG)" | |
73 | $(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) $(KERNEL_DEFCONFIG) | |
74 | ||
75 | $(KERNEL_BIN): $(KERNEL_CONFIG) | |
76 | $(hide) echo "Building kernel..." | |
77 | $(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) CLANG_TRIPLE=$(CLANG_TRIPLE) CC=clang -j$(N_KERNEL_BUILD_THREAD) | |
78 | ||
f573bcc7 | 79 | # mkdtimg cfg_create exynos9610_dtbo.img arch/arm64/boot/dts/exynos/exynos9610_dtboimg.cfg |
d2d91247 YK |
80 | $(INSTALLED_KERNEL_TARGET): $(KERNEL_BIN) $(MKDTIMG) |
81 | cp $(KERNEL_BIN) $(INSTALLED_KERNEL_TARGET) | |
82 | cp $(KERNEL_DTB) $(INSTALLED_DTB_TARGET) | |
5e65f8b9 | 83 | $(hide) echo "Building DTBOIMAGE..." |
d2d91247 | 84 | ln -sf $(TARGET_KERNEL_SOURCE)/arch |
5e65f8b9 | 85 | $(MKDTIMG) cfg_create $(INSTALLED_DTBOIMAGE_TARGET) $(KERNEL_DTBO_CFG) |
d2d91247 | 86 | rm -f arch |
d2d91247 YK |
87 | |
88 | endif #TARGET_PREBUILT_KERNEL | |
89 | endif #KERNEL_DEFCONFIG |