remove libdss from Makefile
[GitHub/moto-9609/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),)
cd6d3d7e 8KERNEL_OBJECTS := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ
d2d91247 9INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel
5e65f8b9 10INSTALLED_DTBOIMAGE_TARGET := $(PRODUCT_OUT)/dtbo.img
48b1217f 11BOARD_PREBUILT_DTBOIMAGE := $(PRODUCT_OUT)/prebuilt_dtbo.img
d2d91247 12INSTALLED_DTB_TARGET := $(PRODUCT_OUT)/dtb.img
215c2e67
YK
13BOARD_MKBOOTIMG_ARGS += \
14 --second $(INSTALLED_DTB_TARGET) \
15 --second_offset 0
d2d91247
YK
16endif
17
18TARGET_KERNEL_ARCH := $(strip $(TARGET_KERNEL_ARCH))
19ifeq ($(TARGET_KERNEL_ARCH),)
20KERNEL_ARCH := arm64
21else
22KERNEL_ARCH := $(TARGET_KERNEL_ARCH)
23endif
24
c4b81616 25TARGET_KERNEL_MAKE_ENV := $(strip $(TARGET_KERNEL_MAKE_ENV))
26ifeq ($(TARGET_KERNEL_MAKE_ENV),)
27KERNEL_MAKE_ENV :=
28else
29KERNEL_MAKE_ENV := $(TARGET_KERNEL_MAKE_ENV)
30endif
31
d2d91247
YK
32ifeq ($(CROSS_COMPILE),)
33KERNEL_CROSS_COMPILE := aarch64-linux-android-
34else
35KERNEL_CROSS_COMPILE := $(CROSS_COMPILE)
36endif
37
b23ef602 38SOONG_GLOBAL_CONFIG := build/soong/cc/config/global.go
9a8cdbd8 39CLANG_VERSION := clang-4691093
b23ef602
YK
40CLANG_PATH := prebuilts/clang/host/linux-x86
41CC :=$(PWD)/$(CLANG_PATH)/$(CLANG_VERSION)/bin/clang
42
f0c3da58
MK
43KERNEL_LTO_ON = True
44ifneq ($(KERNEL_LTO_ON),)
45LLVM_AR :=$(PWD)/$(CLANG_PATH)/$(CLANG_VERSION)/bin/llvm-ar
46LLVM_DIS :=$(PWD)/$(CLANG_PATH)/$(CLANG_VERSION)/bin/llvm-dis
47LTO_LLVM_LIB_BASE = $(PWD)/$(CLANG_PATH)/$(CLANG_VERSION)/lib64/
48LLVM_OPTIONS := LLVM_AR=$(LLVM_AR) LLVM_DIS=$(LLVM_DIS) LTO_LLVM_LIB_BASE=$(LTO_LLVM_LIB_BASE)
49else
50LLVM_OPTIONS :=
51endif
52
d2d91247
YK
53ifeq ($(CLANG_TRIPLE),)
54CLANG_TRIPLE := aarch64-linux-gnu-
55else
56CLANG_TRIPLE := $(CLANG_TRIPLE)
57endif
58
c4b81616 59BUILD_ROOT_LOC := ../../
bea31bb6 60KERNEL_OUT := $(TARGET_OUT_INTERMEDIATES)/kernel/$(TARGET_SOC)
c4b81616 61KERNEL_OUT := $(KERNEL_OBJECTS)
d2d91247
YK
62ifeq ($(TARGET_PREBUILT_KERNEL),)
63
cd6d3d7e
YK
64KERNEL_CONFIG := $(KERNEL_OBJECTS)/.config
65KERNEL_BOOT := $(KERNEL_OBJECTS)/arch/$(KERNEL_ARCH)/boot
d2d91247
YK
66KERNEL_BIN := $(KERNEL_BOOT)/Image
67KERNEL_DTB_DIR := $(KERNEL_BOOT)/dts/exynos
f573bcc7 68KERNEL_DTB := $(KERNEL_DTB_DIR)/exynos9610.dtb
d2d91247
YK
69MKDTIMG := $(HOST_OUT_EXECUTABLES)/mkdtimg
70
bea31bb6 71TARGET_KERNEL_SOURCE := kernel/$(TARGET_SOC)
cd6d3d7e
YK
72KERNEL_DTB_SOURCE_DIR := $(TARGET_KERNEL_SOURCE)/arch/$(KERNEL_ARCH)/boot/dts/exynos
73KERNEL_DTBO_CFG := $(KERNEL_DTB_SOURCE_DIR)/exynos9610_dtboimg.cfg
dcaf6363
SK
74KERNEL_MERGE_CONFIG := $(TARGET_KERNEL_SOURCE)/scripts/kconfig/merge_config.sh
75KERNEL_CONFIG_BASE := $(TARGET_KERNEL_SOURCE)/arch/$(KERNEL_ARCH)/configs
76KERNEL_DEFCONFIG_PATH := $(KERNEL_CONFIG_BASE)/$(KERNEL_DEFCONFIG)
77
2bcc39f7 78ifeq ($(TARGET_PRODUCT),kane_factory)
79ERD9609_DEFCONFIG := erd9610_defconfig
80ERD9609_DEFCONFIG_PATH := $(KERNEL_CONFIG_BASE)/$(ERD9609_DEFCONFIG)
81ROBUSTA2_FACTORY_DEFCONFIG := robusta2_factory_defconfig
82ROBUSTA2_FACTORY_DEFCONFIG_PATH := $(KERNEL_CONFIG_BASE)/$(ROBUSTA2_FACTORY_DEFCONFIG)
83ERD9609_ROBUSTA2_FACTORY_DEFCONFIG := erd9610_robusta2_factory_defconfig
84ERD9609_ROBUSTA2_FACTORY_DEFCONFIG_PATH := $(KERNEL_CONFIG_BASE)/$(ERD9609_ROBUSTA2_FACTORY_DEFCONFIG)
85endif
86
d2d91247
YK
87ifeq ($(KERNEL_DEFCONFIG),)
88$(error Kernel configuration not defined, cannot build kernel)
89else
90
dcaf6363 91ifeq ($(TARGET_BUILD_VARIANT),eng)
cd6d3d7e 92MAKE_CONFIG_CMD := $(MAKE) -C $(TARGET_KERNEL_SOURCE) O=$(PWD)/$(KERNEL_OBJECTS) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) $(KERNEL_DEFCONFIG)
dcaf6363
SK
93else
94ifeq ($(TARGET_BUILD_VARIANT),userdebug)
95KERNEL_USER_CFG := $(KERNEL_CONFIG_BASE)/$(TARGET_SOC)_userdebug.cfg
96else
97KERNEL_USER_CFG := $(KERNEL_CONFIG_BASE)/$(TARGET_SOC)_user.cfg
98endif
99MAKE_CONFIG_CMD := ARCH=$(KERNEL_ARCH) $(KERNEL_MERGE_CONFIG) -m -O $(TARGET_KERNEL_SOURCE) $(KERNEL_DEFCONFIG_PATH) $(KERNEL_USER_CFG);
cd6d3d7e
YK
100MAKE_CONFIG_CMD += $(MAKE) -C $(TARGET_KERNEL_SOURCE) O=$(PWD)/$(KERNEL_OBJECTS) ARCH=$(KERNEL_ARCH) KCONFIG_ALLCONFIG=.config alldefconfig;
101MAKE_CONFIG_CMD += $(MAKE) -C $(TARGET_KERNEL_SOURCE) distclean
dcaf6363
SK
102endif
103
d2d91247 104ifeq ($(N_KERNEL_BUILD_THREAD),)
bea31bb6 105N_KERNEL_BUILD_THREAD := 8
d2d91247
YK
106endif
107
c4b81616 108include $(TARGET_KERNEL_SOURCE)/defconfig.mk
109
110
d2d91247
YK
111TARGET_PREBUILT_KERNEL := $(KERNEL_BIN)
112
c4b81616 113# Make the kernel config
114# $1 output dir
115# $2 kernel config filepath
116# $3 defconfig
117# $4 kernel source
118# $5 kernel make env
119# $6 kernel architecture
120# $7 cross compile sub-command
121# $8 make command
122define do-kernel-config
123 ( cp $(3) $(2) && $(8) -C $(4) O=$(1) $(5) ARCH=$(6) CROSS_COMPILE=$(7) defoldconfig ) || ( rm -f $(2) && false )
124endef
125
126
127$(KERNEL_OUT):
128 mkdir -p $(KERNEL_OUT)
d2d91247
YK
129
130.PHONY: kernel
131kernel: $(KERNEL_BIN)
132
133.PHONY: kernel-distclean
134kernel-distclean:
135 $(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) distclean
136
c4b81616 137$(KERNEL_CONFIG): $(TARGET_DEFCONFIG)
138 $(hide) echo "make $(KERNEL_CONFIG)"
139 $(call do-kernel-config,$(BUILD_ROOT_LOC)$(KERNEL_OUT),$@,$(TARGET_DEFCONFIG),$(TARGET_KERNEL_SOURCE),$(KERNEL_MAKE_ENV),$(KERNEL_ARCH),$(KERNEL_CROSS_COMPILE),$(MAKE))
d2d91247 140
c4b81616 141$(KERNEL_BIN): $(KERNEL_OUT) $(KERNEL_CONFIG)
d2d91247 142 $(hide) echo "Building kernel..."
f0c3da58 143 $(MAKE) -C $(TARGET_KERNEL_SOURCE) O=$(PWD)/$(KERNEL_OBJECTS) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) CLANG_TRIPLE=$(CLANG_TRIPLE) CC=$(CC) $(LLVM_OPTIONS) -j$(N_KERNEL_BUILD_THREAD)
d2d91247 144
48b1217f 145$(INSTALLED_KERNEL_TARGET): $(INSTALLED_DTBOIMAGE_TARGET)
d2d91247
YK
146 cp $(KERNEL_BIN) $(INSTALLED_KERNEL_TARGET)
147 cp $(KERNEL_DTB) $(INSTALLED_DTB_TARGET)
48b1217f
TA
148
149$(BOARD_PREBUILT_DTBOIMAGE): $(MKDTIMG) $(KERNEL_DTBO_CFG) $(KERNEL_BIN)
5e65f8b9 150 $(hide) echo "Building DTBOIMAGE..."
cd6d3d7e 151 $(MKDTIMG) cfg_create $@ $(KERNEL_DTBO_CFG) -d $(KERNEL_OBJECTS)
d2d91247
YK
152
153endif #TARGET_PREBUILT_KERNEL
154endif #KERNEL_DEFCONFIG