blob: c27719dd87b2b4fea6f70a76a1f9fbdf50bbd8b2 [file] [log] [blame]
xjb04a4022021-11-25 15:01:52 +08001# SPDX-License-Identifier: GPL-2.0
2# Copyright (C) 2019 MediaTek Inc.
3
4KERNEL_ENV_PATH := $(call my-dir)
5KERNEL_ROOT_DIR := $(PWD)
6
7define touch-kernel-image-timestamp
8if [ -e $(1) ] && [ -e $(2) ] && cmp -s $(1) $(2); then \
9 echo $(2) has no change;\
10 mv -f $(1) $(2);\
11else \
12 rm -f $(1);\
13fi
14endef
15
16# '\\' in command is wrongly replaced to '\\\\' in kernel/out/arch/arm/boot/compressed/.piggy.xzkern.cmd
17define fixup-kernel-cmd-file
18if [ -e $(1) ]; then cp $(1) $(1).bak; sed -e 's/\\\\\\\\/\\\\/g' < $(1).bak > $(1); rm -f $(1).bak; fi
19endef
20
21ifneq ($(strip $(TARGET_NO_KERNEL)),true)
22 KERNEL_DIR := $(KERNEL_ENV_PATH)
23
24 ifeq ($(KERNEL_TARGET_ARCH),arm64)
25 TARGET_KERNEL_CROSS_COMPILE ?= $(KERNEL_ROOT_DIR)/prebuilts/gcc/$(HOST_PREBUILT_TAG)/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-
26 TARGET_KERNEL_CLANG_COMPILE :=
27 CC := $(TARGET_KERNEL_CROSS_COMPILE)gcc
28 ifeq ($(strip $(TARGET_KERNEL_USE_CLANG)),true)
29 TARGET_KERNEL_CLANG_COMPILE := CLANG_TRIPLE=aarch64-linux-gnu-
30 CC := $(KERNEL_ROOT_DIR)/prebuilts/clang/host/linux-x86/clang-r353983c/bin/clang
31 endif
32 else
33 TARGET_KERNEL_CROSS_COMPILE ?= $(KERNEL_ROOT_DIR)/prebuilts/gcc/$(HOST_PREBUILT_TAG)/arm/arm-linux-androideabi-4.9/bin/arm-linux-androidkernel-
34 TARGET_KERNEL_CLANG_COMPILE :=
35 CC := $(TARGET_KERNEL_CROSS_COMPILE)gcc
36 endif
37
38 ifneq ($(filter-out false,$(USE_CCACHE)),)
39 CCACHE_EXEC ?= /usr/bin/ccache
40 CCACHE_EXEC := $(abspath $(wildcard $(CCACHE_EXEC)))
41 else
42 CCACHE_EXEC :=
43 endif
44 ifneq ($(CCACHE_EXEC),)
45 TARGET_KERNEL_CLANG_COMPILE += CCACHE_CPP2=yes CC='$(CCACHE_EXEC) $(CC)'
46 else
47 TARGET_KERNEL_CLANG_COMPILE += CC=$(CC)
48 endif
49
50 ifeq ($(wildcard $(TARGET_PREBUILT_KERNEL)),)
51 KERNEL_OUT ?= $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ
52 KERNEL_ROOT_OUT := $(if $(filter /% ~%,$(KERNEL_OUT)),,$(KERNEL_ROOT_DIR)/)$(KERNEL_OUT)
53 ifeq ($(KERNEL_TARGET_ARCH), arm64)
54 ifeq ($(MTK_APPENDED_DTB_SUPPORT), yes)
55 KERNEL_ZIMAGE_OUT := $(KERNEL_OUT)/arch/$(KERNEL_TARGET_ARCH)/boot/Image.gz-dtb
56 else
57 KERNEL_ZIMAGE_OUT := $(KERNEL_OUT)/arch/$(KERNEL_TARGET_ARCH)/boot/Image.gz
58 endif
59 else
60 ifeq ($(MTK_APPENDED_DTB_SUPPORT), yes)
61 KERNEL_ZIMAGE_OUT := $(KERNEL_OUT)/arch/$(KERNEL_TARGET_ARCH)/boot/zImage-dtb
62 else
63 KERNEL_ZIMAGE_OUT := $(KERNEL_OUT)/arch/$(KERNEL_TARGET_ARCH)/boot/zImage
64 endif
65 endif
66
67 BUILT_KERNEL_TARGET := $(KERNEL_ZIMAGE_OUT).bin
68 INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel
69 TARGET_KERNEL_CONFIG := $(KERNEL_OUT)/.config
70 KERNEL_CONFIG_FILE := $(KERNEL_DIR)/arch/$(KERNEL_TARGET_ARCH)/configs/$(KERNEL_DEFCONFIG)
71 KERNEL_MAKE_OPTION := O=$(KERNEL_ROOT_OUT) ARCH=$(KERNEL_TARGET_ARCH) CROSS_COMPILE=$(TARGET_KERNEL_CROSS_COMPILE) $(TARGET_KERNEL_CLANG_COMPILE) ROOTDIR=$(KERNEL_ROOT_DIR)
72 KERNEL_MAKE_OPTION += HOSTCC=/usr/bin/gcc HOSTCXX=/usr/bin/g++
73
74 IMAGE_GZ_PATH := $(KERNEL_OUT)/arch/$(KERNEL_TARGET_ARCH)/boot/Image.gz
75 ifeq ($(MTK_APPEND_DTB),)
76 MTK_APPEND_DTB_PATH :=
77 else
78 MTK_APPEND_DTB_PATH := $(KERNEL_OUT)/arch/$(KERNEL_TARGET_ARCH)/boot/dts/mediatek/$(MTK_APPEND_DTB)
79 endif
80 MTK_IMAGE_GZ_DTB_PATH := $(KERNEL_OUT)/arch/$(KERNEL_TARGET_ARCH)/boot/Image.gz-dtb
81
82 else
83 BUILT_KERNEL_TARGET := $(TARGET_PREBUILT_KERNEL)
84 endif #TARGET_PREBUILT_KERNEL is empty
85
86endif #TARGET_NO_KERNEL