#Android makefile to build kernel as a part of Android Build

ifeq ($(KERNEL_DEFCONFIG),)
$(error KERNEL_DEFCONFIG must be set as environment variable)
endif

ifeq ($(INSTALLED_KERNEL_TARGET),)
INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel
INSTALLED_DTBOIMAGE_TARGET := $(PRODUCT_OUT)/dtbo.img
BOARD_PREBUILT_DTBOIMAGE := $(PRODUCT_OUT)/prebuilt_dtbo.img
INSTALLED_DTB_TARGET := $(PRODUCT_OUT)/dtb.img
endif

TARGET_KERNEL_ARCH := $(strip $(TARGET_KERNEL_ARCH))
ifeq ($(TARGET_KERNEL_ARCH),)
KERNEL_ARCH := arm64
else
KERNEL_ARCH := $(TARGET_KERNEL_ARCH)
endif

ifeq ($(CROSS_COMPILE),)
KERNEL_CROSS_COMPILE := aarch64-linux-android-
else
KERNEL_CROSS_COMPILE := $(CROSS_COMPILE)
endif

SOONG_GLOBAL_CONFIG := build/soong/cc/config/global.go
CLANG_VERSION := $(shell  grep "ClangDefaultVersion" $(SOONG_GLOBAL_CONFIG) | grep -o "clang-[0-9][0-9]*")
CLANG_PATH := prebuilts/clang/host/linux-x86
CC :=$(PWD)/$(CLANG_PATH)/$(CLANG_VERSION)/bin/clang

ifeq ($(CLANG_TRIPLE),)
CLANG_TRIPLE := aarch64-linux-gnu-
else
CLANG_TRIPLE := $(CLANG_TRIPLE)
endif

ifeq ($(TARGET_PREBUILT_KERNEL),)

TARGET_KERNEL_SOURCE := kernel/$(TARGET_KERNEL)
KERNEL_CONFIG := $(TARGET_KERNEL_SOURCE)/.config
KERNEL_BOOT := $(TARGET_KERNEL_SOURCE)/arch/$(KERNEL_ARCH)/boot
KERNEL_BIN := $(KERNEL_BOOT)/Image
KERNEL_DTB_DIR := $(KERNEL_BOOT)/dts/exynos
ifeq ($(TARGET_USE_EVT0),true)
KERNEL_DTB := $(KERNEL_DTB_DIR)/$(TARGET_KERNEL_SOC)_evt0.dtb
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/$(TARGET_KERNEL_SOC)_evt0_dtboimg.cfg
else
KERNEL_DTB := $(KERNEL_DTB_DIR)/$(TARGET_KERNEL_SOC).dtb
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/$(TARGET_KERNEL_SOC)_dtboimg.cfg
endif

MKDTIMG := $(HOST_OUT_EXECUTABLES)/mkdtimg

KERNEL_MERGE_CONFIG := $(TARGET_KERNEL_SOURCE)/scripts/kconfig/merge_config.sh
KERNEL_CONFIG_BASE := $(TARGET_KERNEL_SOURCE)/arch/$(KERNEL_ARCH)/configs
KERNEL_DEFCONFIG_PATH := $(KERNEL_CONFIG_BASE)/$(KERNEL_DEFCONFIG)
KERNEL_USER_CFG := $(KERNEL_CONFIG_BASE)/$(TARGET_KERNEL_SOC)_user.cfg
KERNEL_USERDEBUG_CFG := $(KERNEL_CONFIG_BASE)/$(TARGET_KERNEL_SOC)_userdebug.cfg

ifeq ($(KERNEL_DEFCONFIG),)
$(error Kernel configuration not defined, cannot build kernel)
else

ifeq ($(TARGET_BUILD_VARIANT),eng)
MAKE_CONFIG_CMD := $(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) $(KERNEL_DEFCONFIG)
else
ifeq ($(TARGET_BUILD_VARIANT),userdebug)
MAKE_CONFIG_CMD := ARCH=$(KERNEL_ARCH) $(KERNEL_MERGE_CONFIG) -m -O $(TARGET_KERNEL_SOURCE) $(KERNEL_DEFCONFIG_PATH) $(KERNEL_USERDEBUG_CFG);
MAKE_CONFIG_CMD += $(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) KCONFIG_ALLCONFIG=.config alldefconfig
else
MAKE_CONFIG_CMD := ARCH=$(KERNEL_ARCH) $(KERNEL_MERGE_CONFIG) -m -O $(TARGET_KERNEL_SOURCE) $(KERNEL_DEFCONFIG_PATH) $(KERNEL_USER_CFG);
MAKE_CONFIG_CMD += $(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) KCONFIG_ALLCONFIG=.config alldefconfig
endif
endif

ifeq ($(N_KERNEL_BUILD_THREAD),)
N_KERNEL_BUILD_THREAD := 1
endif

TARGET_PREBUILT_KERNEL := $(KERNEL_BIN)

.PHONY: phony-rebuild

.PHONY: kernel
kernel: $(KERNEL_BIN)

.PHONY: kernel-distclean
kernel-distclean:
	$(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) distclean

$(KERNEL_CONFIG): phony-rebuild
	$(hide) echo "make $(KERNEL_DEFCONFIG)"
	$(MAKE_CONFIG_CMD)

$(KERNEL_BIN): $(KERNEL_CONFIG)
	$(hide) echo "Building kernel..."
	$(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) CLANG_TRIPLE=$(CLANG_TRIPLE) CC=$(CC) -j$(N_KERNEL_BUILD_THREAD)

$(INSTALLED_KERNEL_TARGET): $(INSTALLED_DTBOIMAGE_TARGET)
	cp $(KERNEL_BIN) $(INSTALLED_KERNEL_TARGET)
	cp $(KERNEL_DTB) $(INSTALLED_DTB_TARGET)

$(BOARD_PREBUILT_DTBOIMAGE): $(MKDTIMG) $(KERNEL_DTBO_CFG) $(KERNEL_BIN)
	$(hide) echo "Building DTBOIMAGE..."
	ln -sf $(TARGET_KERNEL_SOURCE)/arch
	$(MKDTIMG) cfg_create $@ $(KERNEL_DTBO_CFG)
	rm -f arch

endif #TARGET_PREBUILT_KERNEL
endif #KERNEL_DEFCONFIG
