[9610][ERD] Add dtboimg config file
[GitHub/LineageOS/android_kernel_motorola_exynos9610.git] / AndroidKernel.mk
CommitLineData
d2d91247
YK
1#Android makefile to build kernel as a part of Android Build
2
3ifeq ($(KERNEL_DEFCONFIG),)
4$(error KERNEL_DEFCONFIG must be set as environment variable)
5endif
6
7ifeq ($(INSTALLED_KERNEL_TARGET),)
8INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel
9ifneq ($(BOARD_DTBO_SUPPORT),)
10INSTALLED_DTBO_TARGET := $(PRODUCT_OUT)/dtbo.img
11endif #BOARD_DTBO_SUPPORT
12INSTALLED_DTB_TARGET := $(PRODUCT_OUT)/dtb.img
13endif
14
15TARGET_KERNEL_ARCH := $(strip $(TARGET_KERNEL_ARCH))
16ifeq ($(TARGET_KERNEL_ARCH),)
17KERNEL_ARCH := arm64
18else
19KERNEL_ARCH := $(TARGET_KERNEL_ARCH)
20endif
21
22ifeq ($(CROSS_COMPILE),)
23KERNEL_CROSS_COMPILE := aarch64-linux-android-
24else
25KERNEL_CROSS_COMPILE := $(CROSS_COMPILE)
26endif
27
28ifeq ($(CLANG_TRIPLE),)
29CLANG_TRIPLE := aarch64-linux-gnu-
30else
31CLANG_TRIPLE := $(CLANG_TRIPLE)
32endif
33
34ifeq ($(TARGET_PREBUILT_KERNEL),)
35
36TARGET_KERNEL_SOURCE := kernel/$(TARGET_KERNEL)
37KERNEL_CONFIG := $(TARGET_KERNEL_SOURCE)/.config
38KERNEL_BOOT := $(TARGET_KERNEL_SOURCE)/arch/$(KERNEL_ARCH)/boot
39KERNEL_BIN := $(KERNEL_BOOT)/Image
40KERNEL_DTB_DIR := $(KERNEL_BOOT)/dts/exynos
41KERNEL_DTB := $(KERNEL_DTB_DIR)/exynos9610-erd9610.dtb
42ifneq ($(BOARD_DTBO_SUPPORT),)
43KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos9610_dtboimg.cfg
44endif #BOARD_DTBO_SUPPORT
45MKDTIMG := $(HOST_OUT_EXECUTABLES)/mkdtimg
46
47ifeq ($(KERNEL_DEFCONFIG),)
48$(error Kernel configuration not defined, cannot build kernel)
49else
50
51ifeq ($(N_KERNEL_BUILD_THREAD),)
52N_KERNEL_BUILD_THREAD := 1
53endif
54
55TARGET_PREBUILT_KERNEL := $(KERNEL_BIN)
56
57.PHONY: remove-bins
58remove-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
68kernel: $(KERNEL_BIN)
69
70.PHONY: kernel-distclean
71kernel-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
82ifneq ($(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
90else #BOARD_DTBO_SUPPORT
91$(INSTALLED_KERNEL_TARGET): $(KERNEL_BIN) $(MKDTIMG)
92 cp $(KERNEL_BIN) $(INSTALLED_KERNEL_TARGET)
93 cp $(KERNEL_DTB) $(INSTALLED_DTB_TARGET)
94endif #BOARD_DTBO_SUPPORT
95
96endif #TARGET_PREBUILT_KERNEL
97endif #KERNEL_DEFCONFIG