Android-P: Add DTBOIMAGE to android build system
[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
5e65f8b9
YK
9INSTALLED_DTBOIMAGE_TARGET := $(PRODUCT_OUT)/dtbo.img
10BOARD_PREBUILT_DTBOIMAGE := $(PRODUCT_OUT)/dtbo.img
d2d91247
YK
11INSTALLED_DTB_TARGET := $(PRODUCT_OUT)/dtb.img
12endif
13
14TARGET_KERNEL_ARCH := $(strip $(TARGET_KERNEL_ARCH))
15ifeq ($(TARGET_KERNEL_ARCH),)
16KERNEL_ARCH := arm64
17else
18KERNEL_ARCH := $(TARGET_KERNEL_ARCH)
19endif
20
21ifeq ($(CROSS_COMPILE),)
22KERNEL_CROSS_COMPILE := aarch64-linux-android-
23else
24KERNEL_CROSS_COMPILE := $(CROSS_COMPILE)
25endif
26
27ifeq ($(CLANG_TRIPLE),)
28CLANG_TRIPLE := aarch64-linux-gnu-
29else
30CLANG_TRIPLE := $(CLANG_TRIPLE)
31endif
32
33ifeq ($(TARGET_PREBUILT_KERNEL),)
34
35TARGET_KERNEL_SOURCE := kernel/$(TARGET_KERNEL)
36KERNEL_CONFIG := $(TARGET_KERNEL_SOURCE)/.config
37KERNEL_BOOT := $(TARGET_KERNEL_SOURCE)/arch/$(KERNEL_ARCH)/boot
38KERNEL_BIN := $(KERNEL_BOOT)/Image
39KERNEL_DTB_DIR := $(KERNEL_BOOT)/dts/exynos
f573bcc7 40KERNEL_DTB := $(KERNEL_DTB_DIR)/exynos9610.dtb
d2d91247 41KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos9610_dtboimg.cfg
d2d91247
YK
42MKDTIMG := $(HOST_OUT_EXECUTABLES)/mkdtimg
43
44ifeq ($(KERNEL_DEFCONFIG),)
45$(error Kernel configuration not defined, cannot build kernel)
46else
47
48ifeq ($(N_KERNEL_BUILD_THREAD),)
49N_KERNEL_BUILD_THREAD := 1
50endif
51
52TARGET_PREBUILT_KERNEL := $(KERNEL_BIN)
53
54.PHONY: remove-bins
55remove-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
65kernel: $(KERNEL_BIN)
66
67.PHONY: kernel-distclean
68kernel-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
88endif #TARGET_PREBUILT_KERNEL
89endif #KERNEL_DEFCONFIG