blob: 882cbcfc9861656855b7a8e063a72893b29c8481 [file] [log] [blame]
#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 ($(KERNEL_DEFCONFIG), universal7885_FHD_P_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7885-universal7885_FHD_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7905_FHD_P_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7905-universal7905_FHD_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7905_P_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7905-universal7905_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7904_FHD_P_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7904-universal7904_FHD_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7904_P_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7904-universal7904_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7884_P_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7884-universal7884_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7884_FHD_P_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7884-universal7884_FHD_P_Treble.dts
else ifeq ($(KERNEL_DEFCONFIG), universal7884B_P_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7884b-universal7884b_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7884B_FHD_P_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7884b-universal7884b_FHD_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7885_FHD_Q_MR_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7885-universal7885_FHD_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7885_Q_MR_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7885-universal7885_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7905_FHD_Q_MR_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7905-universal7905_FHD_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7905_Q_MR_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7905-universal7905_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7904_FHD_Q_MR_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7904-universal7904_FHD_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7904_Q_MR_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7904-universal7904_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7884B_FHD_Q_MR_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7884b-universal7884b_FHD_P_Treble.dtb
else ifeq ($(KERNEL_DEFCONFIG), universal7884B_Q_MR_Treble_defconfig)
TARGET_KERNEL_DTB := exynos7884b-universal7884b_P_Treble.dtb
else
TARGET_KERNEL_DTB := exynos7885-universal7885_P_Treble.dtb
endif
ifeq ($(INSTALLED_KERNEL_TARGET),)
INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel
INSTALLED_DTBO_TARGET := $(PRODUCT_OUT)/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
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/dtbo
KERNEL_DTB := $(KERNEL_DTB_DIR)/exynos7885.dtb
ifeq ($(KERNEL_DEFCONFIG), universal7885_FHD_P_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7885_FHD_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7905_FHD_P_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7905_FHD_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7905_P_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7905_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7904_FHD_P_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7904_FHD_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7904_P_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7904_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7884_FHD_P_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7884_FHD_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7884_P_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7884_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7884B_P_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7884B_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7884B_FHD_P_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7884B_FHD_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7885_FHD_Q_MR_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7885_FHD_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7885_Q_MR_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7885_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7905_FHD_Q_MR_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7905_FHD_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7905_Q_MR_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7905_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7904_FHD_Q_MR_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7904_FHD_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7904_Q_MR_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7904_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7884B_FHD_Q_MR_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7884B_FHD_dtboimg.cfg
else ifeq ($(KERNEL_DEFCONFIG), universal7884B_Q_MR_Treble_defconfig)
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7884B_dtboimg.cfg
else
KERNEL_DTBO_CFG := $(KERNEL_DTB_DIR)/exynos7885_dtboimg.cfg
endif
MKDTIMG := $(HOST_OUT_EXECUTABLES)/mkdtimg
ifeq ($(KERNEL_DEFCONFIG),)
$(error Kernel configuration not defined, cannot build kernel)
else
ifeq ($(N_KERNEL_BUILD_THREAD),)
N_KERNEL_BUILD_THREAD := 1
endif
TARGET_PREBUILT_KERNEL := $(KERNEL_BIN)
.PHONY: remove-bins
remove-bin:
$(hide) echo "Clean Up prebuilts"
rm -f $(KERNEL_CONFIG)
rm -f $(KERNEL_BIN)
rm -f $(KERNEL_DTB)
rm -f $(INSTALLED_KERNEL_TARGET)
rm -f $(INSTALLED_DTBO_TARGET)
rm -f $(INSTALLED_DTB_TARGET)
.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): remove-bins
$(hide) echo "make $(KERNEL_DEFCONFIG)"
$(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) $(KERNEL_DEFCONFIG)
$(KERNEL_BIN): $(KERNEL_CONFIG)
$(hide) echo "Building kernel..."
$(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) -j$(N_KERNEL_BUILD_THREAD)
$(INSTALLED_KERNEL_TARGET): $(KERNEL_BIN) $(MKDTIMG)
cp $(KERNEL_BIN) $(INSTALLED_KERNEL_TARGET)
cp $(KERNEL_DTB) $(INSTALLED_DTB_TARGET)
$(hide) echo "Building DTBO..."
ln -sf $(TARGET_KERNEL_SOURCE)/arch
$(MKDTIMG) cfg_create $(INSTALLED_DTBO_TARGET) $(KERNEL_DTBO_CFG)
rm -f arch
endif #TARGET_PREBUILT_KERNEL
endif #KERNEL_DEFCONFIG