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