summaryrefslogtreecommitdiff
path: root/Kernel.mk (plain)
blob: cbdf65f0a3063d5ff8be30fe05e09574a3b8a9bd
1#if use probuilt kernel or build kernel from source code
2
3KERNEL_ROOTDIR := common
4KERNEL_KO_OUT := $(PRODUCT_OUT)/obj/lib_vendor
5
6INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel
7
8BOARD_MKBOOTIMG_ARGS := --second $(PRODUCT_OUT)/dt.img --kernel_offset $(BOARD_KERNEL_OFFSET)
9
10ifneq ($(TARGET_KERNEL_BUILT_FROM_SOURCE), true)
11TARGET_PREBUILT_KERNEL := device/amlogic/einstein-kernel/Image.gz
12INSTALLED_BOARDDTB_TARGET := $(PRODUCT_OUT)/dt.img
13LOCAL_DTB := device/amlogic/einstein-kernel/einstein.dtb
14
15$(TARGET_PREBUILT_KERNEL): $(INSTALLED_BOARDDTB_TARGET)
16 @echo "cp kernel modules"
17 mkdir -p $(PRODUCT_OUT)/root/boot
18 mkdir -p $(PRODUCT_OUT)/vendor/lib
19 mkdir -p $(PRODUCT_OUT)/obj/lib
20 mkdir -p $(PRODUCT_OUT)/obj/KERNEL_OBJ/
21 mkdir -p $(PRODUCT_OUT)/recovery/root/boot
22 mkdir -p $(KERNEL_KO_OUT)
23 cp device/amlogic/einstein-kernel/lib/mali.ko $(PRODUCT_OUT)/vendor/lib/
24 cp device/amlogic/einstein-kernel/lib/modules/* $(KERNEL_KO_OUT)/
25 cp device/amlogic/einstein-kernel/tdk/* $(PRODUCT_OUT)/obj/lib/
26 cp device/amlogic/einstein-kernel/tdk/* $(PRODUCT_OUT)/vendor/lib/
27 -cp device/amlogic/einstein-kernel/lib/optee_armtz.ko $(PRODUCT_OUT)/vendor/lib/
28 -cp device/amlogic/einstein-kernel/lib/optee.ko $(PRODUCT_OUT)/vendor/lib/
29 cp device/amlogic/einstein-kernel/tdk/* $(PRODUCT_OUT)/recovery/root/boot/
30 -cp device/amlogic/einstein-kernel/obj/KERNEL_OBJ/vmlinux $(PRODUCT_OUT)/obj/KERNEL_OBJ/
31 mkdir -p $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)/lib/modules/
32 cp $(KERNEL_KO_OUT)/* $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)/lib/modules/
33 mkdir -p $(PRODUCT_OUT)/vendor/lib/egl
34 mkdir -p $(PRODUCT_OUT)/vendor/lib64/egl
35 cp device/amlogic/einstein-kernel/lib/egl/* $(PRODUCT_OUT)/vendor/lib/egl/
36 cp device/amlogic/einstein-kernel/lib64/egl/* $(PRODUCT_OUT)/vendor/lib64/egl/
37
38$(INSTALLED_KERNEL_TARGET): $(TARGET_PREBUILT_KERNEL) | $(ACP)
39 @echo "Kernel installed"
40 $(transform-prebuilt-to-target)
41
42$(INSTALLED_BOARDDTB_TARGET): $(LOCAL_DTB) | $(ACP)
43 @echo "dtb installed"
44 $(transform-prebuilt-to-target)
45
46else
47
48-include device/amlogic/common/gpu.mk
49-include device/amlogic/common/media_modules.mk
50-include device/amlogic/common/wifi_modules.mk
51
52KERNEL_DEVICETREE := txlx_t962x_r311_2g
53KERNEL_DEFCONFIG := meson64_defconfig
54KERNEL_ARCH := arm64
55
56WIFI_MODULE := multiwifi
57
58KERNEL_OUT := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ
59KERNEL_CONFIG := $(KERNEL_OUT)/.config
60INTERMEDIATES_KERNEL := $(KERNEL_OUT)/arch/$(KERNEL_ARCH)/boot/Image.gz
61TARGET_AMLOGIC_INT_KERNEL := $(KERNEL_OUT)/arch/$(KERNEL_ARCH)/boot/uImage
62TARGET_AMLOGIC_INT_RECOVERY_KERNEL := $(KERNEL_OUT)/arch/$(KERNEL_ARCH)/boot/Image_recovery
63
64BOARD_VENDOR_KERNEL_MODULES := \
65 $(PRODUCT_OUT)/obj/lib_vendor/audio_data.ko \
66 $(PRODUCT_OUT)/obj/lib_vendor/ddr_window_64.ko
67
68BOARD_VENDOR_KERNEL_MODULES += $(DEFAULT_MEDIA_KERNEL_MODULES)
69BOARD_VENDOR_KERNEL_MODULES += $(DEFAULT_WIFI_KERNEL_MODULES)
70
71WIFI_OUT := $(TARGET_OUT_INTERMEDIATES)/hardware/wifi
72
73PREFIX_CROSS_COMPILE=/opt/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
74
75define cp-modules
76 mkdir -p $(PRODUCT_OUT)/root/boot
77 mkdir -p $(KERNEL_KO_OUT)
78 -cp $(KERNEL_OUT)/drivers/usb/dwc3/dwc3.ko $(KERNEL_KO_OUT)/
79 -cp $(KERNEL_OUT)/drivers/amlogic/usb/dwc_otg/310/dwc_otg.ko $(KERNEL_KO_OUT)/
80# cp $(WIFI_OUT)/broadcom/drivers/ap6xxx/broadcm_40181/dhd.ko $(TARGET_OUT)/lib/
81# cp $(KERNEL_OUT)/../hardware/amlogic/pmu/aml_pmu_dev.ko $(TARGET_OUT)/lib/
82# cp $(shell pwd)/hardware/amlogic/thermal/aml_thermal.ko $(TARGET_OUT)/lib/
83# cp $(KERNEL_OUT)/../hardware/amlogic/nand/amlnf/aml_nftl_dev.ko $(PRODUCT_OUT)/root/boot/
84endef
85
86$(KERNEL_OUT):
87 mkdir -p $(KERNEL_OUT)
88
89$(KERNEL_CONFIG): $(KERNEL_OUT)
90 $(MAKE) -C $(KERNEL_ROOTDIR) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) $(KERNEL_DEFCONFIG)
91
92$(INTERMEDIATES_KERNEL): $(KERNEL_OUT) $(KERNEL_CONFIG) $(INSTALLED_BOARDDTB_TARGET)
93 @echo "make Image"
94# $(MAKE) -C $(KERNEL_ROOTDIR) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE)
95 $(MAKE) -C $(KERNEL_ROOTDIR) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) modules Image.gz
96 $(MAKE) -C $(shell pwd)/$(PRODUCT_OUT)/obj/KERNEL_OBJ M=$(shell pwd)/hardware/wifi/realtek/drivers/8188eu/rtl8xxx_EU ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) modules
97# $(MAKE) -C $(shell pwd)/$(PRODUCT_OUT)/obj/KERNEL_OBJ M=$(shell pwd)/hardware/amlogic/thermal/ ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) modules
98 #$(gpu-modules)
99 $(MAKE) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) -f device/amlogic/common/wifi_driver.mk $(WIFI_MODULE)
100 $(cp-modules)
101 $(media-modules)
102 mkdir -p $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)/lib/modules/
103 cp $(KERNEL_KO_OUT)/* $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)/lib/modules/
104
105kerneltags: $(KERNEL_OUT)
106 $(MAKE) -C $(KERNEL_ROOTDIR) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) tags
107
108kernelconfig: $(KERNEL_OUT) $(KERNEL_CONFIG)
109 env KCONFIG_NOTIMESTAMP=true \
110 $(MAKE) -C $(KERNEL_ROOTDIR) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) menuconfig
111
112savekernelconfig: $(KERNEL_OUT) $(KERNEL_CONFIG)
113 env KCONFIG_NOTIMESTAMP=true \
114 $(MAKE) -C $(KERNEL_ROOTDIR) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) savedefconfig
115 @echo
116 @echo Saved to $(KERNEL_OUT)/defconfig
117 @echo
118 @echo handly merge to "$(KERNEL_ROOTDIR)/arch/$(KERNEL_ARCH)/configs/$(KERNEL_DEFCONFIG)" if need
119 @echo
120
121build-modules-quick:
122 $(media-modules)
123
124$(INSTALLED_KERNEL_TARGET): $(INTERMEDIATES_KERNEL) $(PRODUCT_OUT)/dt.img | $(ACP)
125 @echo "Kernel installed"
126 $(transform-prebuilt-to-target)
127
128$(BOARD_VENDOR_KERNEL_MODULES): $(INSTALLED_KERNEL_TARGET)
129 @echo "BOARD_VENDOR_KERNEL_MODULES: $(BOARD_VENDOR_KERNEL_MODULES)"
130
131
132.PHONY: bootimage-quick
133bootimage-quick: $(INTERMEDIATES_KERNEL)
134 cp -v $(INTERMEDIATES_KERNEL) $(INSTALLED_KERNEL_TARGET)
135 out/host/linux-x86/bin/mkbootfs $(PRODUCT_OUT)/root | \
136 out/host/linux-x86/bin/minigzip > $(PRODUCT_OUT)/ramdisk.img
137 out/host/linux-x86/bin/mkbootimg --kernel $(INTERMEDIATES_KERNEL) \
138 --base 0x0 \
139 --kernel_offset 0x1080000 \
140 --ramdisk $(PRODUCT_OUT)/ramdisk.img \
141 $(BOARD_MKBOOTIMG_ARGS) \
142 --output $(PRODUCT_OUT)/boot.img
143 ls -l $(PRODUCT_OUT)/boot.img
144 echo "Done building boot.img"
145
146.PHONY: recoveryimage-quick
147recoveryimage-quick: $(INTERMEDIATES_KERNEL)
148 cp -v $(INTERMEDIATES_KERNEL) $(INSTALLED_KERNEL_TARGET)
149 out/host/linux-x86/bin/mkbootfs $(PRODUCT_OUT)/recovery/root | \
150 out/host/linux-x86/bin/minigzip > $(PRODUCT_OUT)/ramdisk-recovery.img
151 out/host/linux-x86/bin/mkbootimg --kernel $(INTERMEDIATES_KERNEL) \
152 --base 0x0 \
153 --kernel_offset 0x1080000 \
154 --ramdisk $(PRODUCT_OUT)/ramdisk-recovery.img \
155 $(BOARD_MKBOOTIMG_ARGS) \
156 --output $(PRODUCT_OUT)/recovery.img
157 ls -l $(PRODUCT_OUT)/recovery.img
158 echo "Done building recovery.img"
159
160.PHONY: kernelconfig
161
162.PHONY: savekernelconfig
163
164endif
165
166$(PRODUCT_OUT)/ramdisk.img: $(INSTALLED_KERNEL_TARGET)
167$(PRODUCT_OUT)/system.img: $(INSTALLED_KERNEL_TARGET)
168