| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame] | 1 | # SPDX-License-Identifier: GPL-2.0 |
| 2 | # Copyright (C) 2019 MediaTek Inc. |
| 3 | |
| 4 | KERNEL_ENV_PATH := $(call my-dir) |
| 5 | KERNEL_ROOT_DIR := $(PWD) |
| 6 | |
| 7 | define touch-kernel-image-timestamp |
| 8 | if [ -e $(1) ] && [ -e $(2) ] && cmp -s $(1) $(2); then \ |
| 9 | echo $(2) has no change;\ |
| 10 | mv -f $(1) $(2);\ |
| 11 | else \ |
| 12 | rm -f $(1);\ |
| 13 | fi |
| 14 | endef |
| 15 | |
| 16 | # '\\' in command is wrongly replaced to '\\\\' in kernel/out/arch/arm/boot/compressed/.piggy.xzkern.cmd |
| 17 | define fixup-kernel-cmd-file |
| 18 | if [ -e $(1) ]; then cp $(1) $(1).bak; sed -e 's/\\\\\\\\/\\\\/g' < $(1).bak > $(1); rm -f $(1).bak; fi |
| 19 | endef |
| 20 | |
| 21 | ifneq ($(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 | |
| 86 | endif #TARGET_NO_KERNEL |