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