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