EKKANE-328:[facotry]:add utc time in prink
[GitHub/MotorolaMobilityLLC/kernel-slsi.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
25ifeq ($(CROSS_COMPILE),)
26KERNEL_CROSS_COMPILE := aarch64-linux-android-
27else
28KERNEL_CROSS_COMPILE := $(CROSS_COMPILE)
29endif
30
b23ef602
YK
31SOONG_GLOBAL_CONFIG := build/soong/cc/config/global.go
32CLANG_VERSION := $(shell grep "ClangDefaultVersion" $(SOONG_GLOBAL_CONFIG) | grep -o "clang-[0-9][0-9]*")
33CLANG_PATH := prebuilts/clang/host/linux-x86
34CC :=$(PWD)/$(CLANG_PATH)/$(CLANG_VERSION)/bin/clang
35
f0c3da58
MK
36KERNEL_LTO_ON = True
37ifneq ($(KERNEL_LTO_ON),)
38LLVM_AR :=$(PWD)/$(CLANG_PATH)/$(CLANG_VERSION)/bin/llvm-ar
39LLVM_DIS :=$(PWD)/$(CLANG_PATH)/$(CLANG_VERSION)/bin/llvm-dis
40LTO_LLVM_LIB_BASE = $(PWD)/$(CLANG_PATH)/$(CLANG_VERSION)/lib64/
41LLVM_OPTIONS := LLVM_AR=$(LLVM_AR) LLVM_DIS=$(LLVM_DIS) LTO_LLVM_LIB_BASE=$(LTO_LLVM_LIB_BASE)
42else
43LLVM_OPTIONS :=
44endif
45
d2d91247
YK
46ifeq ($(CLANG_TRIPLE),)
47CLANG_TRIPLE := aarch64-linux-gnu-
48else
49CLANG_TRIPLE := $(CLANG_TRIPLE)
50endif
51
52ifeq ($(TARGET_PREBUILT_KERNEL),)
53
cd6d3d7e
YK
54KERNEL_CONFIG := $(KERNEL_OBJECTS)/.config
55KERNEL_BOOT := $(KERNEL_OBJECTS)/arch/$(KERNEL_ARCH)/boot
d2d91247
YK
56KERNEL_BIN := $(KERNEL_BOOT)/Image
57KERNEL_DTB_DIR := $(KERNEL_BOOT)/dts/exynos
f573bcc7 58KERNEL_DTB := $(KERNEL_DTB_DIR)/exynos9610.dtb
d2d91247
YK
59MKDTIMG := $(HOST_OUT_EXECUTABLES)/mkdtimg
60
cd6d3d7e
YK
61TARGET_KERNEL_SOURCE := kernel/$(TARGET_KERNEL)
62KERNEL_DTB_SOURCE_DIR := $(TARGET_KERNEL_SOURCE)/arch/$(KERNEL_ARCH)/boot/dts/exynos
63KERNEL_DTBO_CFG := $(KERNEL_DTB_SOURCE_DIR)/exynos9610_dtboimg.cfg
dcaf6363
SK
64KERNEL_MERGE_CONFIG := $(TARGET_KERNEL_SOURCE)/scripts/kconfig/merge_config.sh
65KERNEL_CONFIG_BASE := $(TARGET_KERNEL_SOURCE)/arch/$(KERNEL_ARCH)/configs
66KERNEL_DEFCONFIG_PATH := $(KERNEL_CONFIG_BASE)/$(KERNEL_DEFCONFIG)
67
d2d91247
YK
68ifeq ($(KERNEL_DEFCONFIG),)
69$(error Kernel configuration not defined, cannot build kernel)
70else
71
dcaf6363 72ifeq ($(TARGET_BUILD_VARIANT),eng)
cd6d3d7e 73MAKE_CONFIG_CMD := $(MAKE) -C $(TARGET_KERNEL_SOURCE) O=$(PWD)/$(KERNEL_OBJECTS) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) $(KERNEL_DEFCONFIG)
dcaf6363
SK
74else
75ifeq ($(TARGET_BUILD_VARIANT),userdebug)
76KERNEL_USER_CFG := $(KERNEL_CONFIG_BASE)/$(TARGET_SOC)_userdebug.cfg
77else
78KERNEL_USER_CFG := $(KERNEL_CONFIG_BASE)/$(TARGET_SOC)_user.cfg
79endif
80MAKE_CONFIG_CMD := ARCH=$(KERNEL_ARCH) $(KERNEL_MERGE_CONFIG) -m -O $(TARGET_KERNEL_SOURCE) $(KERNEL_DEFCONFIG_PATH) $(KERNEL_USER_CFG);
cd6d3d7e
YK
81MAKE_CONFIG_CMD += $(MAKE) -C $(TARGET_KERNEL_SOURCE) O=$(PWD)/$(KERNEL_OBJECTS) ARCH=$(KERNEL_ARCH) KCONFIG_ALLCONFIG=.config alldefconfig;
82MAKE_CONFIG_CMD += $(MAKE) -C $(TARGET_KERNEL_SOURCE) distclean
dcaf6363
SK
83endif
84
d2d91247
YK
85ifeq ($(N_KERNEL_BUILD_THREAD),)
86N_KERNEL_BUILD_THREAD := 1
87endif
88
89TARGET_PREBUILT_KERNEL := $(KERNEL_BIN)
90
a948ffd0 91.PHONY: phony-rebuild
d2d91247
YK
92
93.PHONY: kernel
94kernel: $(KERNEL_BIN)
95
96.PHONY: kernel-distclean
97kernel-distclean:
98 $(MAKE) -C $(TARGET_KERNEL_SOURCE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) distclean
99
a948ffd0 100$(KERNEL_CONFIG): phony-rebuild
d2d91247 101 $(hide) echo "make $(KERNEL_DEFCONFIG)"
dcaf6363 102 $(MAKE_CONFIG_CMD)
d2d91247
YK
103
104$(KERNEL_BIN): $(KERNEL_CONFIG)
105 $(hide) echo "Building kernel..."
f0c3da58 106 $(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 107
48b1217f 108$(INSTALLED_KERNEL_TARGET): $(INSTALLED_DTBOIMAGE_TARGET)
d2d91247
YK
109 cp $(KERNEL_BIN) $(INSTALLED_KERNEL_TARGET)
110 cp $(KERNEL_DTB) $(INSTALLED_DTB_TARGET)
48b1217f
TA
111
112$(BOARD_PREBUILT_DTBOIMAGE): $(MKDTIMG) $(KERNEL_DTBO_CFG) $(KERNEL_BIN)
5e65f8b9 113 $(hide) echo "Building DTBOIMAGE..."
cd6d3d7e 114 $(MKDTIMG) cfg_create $@ $(KERNEL_DTBO_CFG) -d $(KERNEL_OBJECTS)
d2d91247
YK
115
116endif #TARGET_PREBUILT_KERNEL
117endif #KERNEL_DEFCONFIG