dtbo.mk
4.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# Copyright (C) 2018 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
KERNEL_TOOLCHAIN_ABS := $(realpath $(TARGET_TOOLCHAIN_ROOT)/bin)
TARGET_KERNEL_ARCH := $(strip $(TARGET_KERNEL_ARCH))
TARGET_KERNEL_SRC := $(KERNEL_IMX_PATH)/kernel_imx
KERNEL_CC_WRAPPER := $(CC_WRAPPER)
KERNEL_AFLAGS :=
KERNEL_CFLAGS :=
ifeq ($(TARGET_KERNEL_ARCH), arm)
KERNEL_CROSS_COMPILE := $(KERNEL_TOOLCHAIN_ABS)/arm-linux-androidkernel-
KERNEL_SRC_ARCH := arm
DTS_ADDITIONAL_PATH :=
else ifeq ($(TARGET_KERNEL_ARCH), arm64)
KERNEL_CROSS_COMPILE := $(KERNEL_TOOLCHAIN_ABS)/aarch64-linux-androidkernel-
KERNEL_SRC_ARCH := arm64
DTS_ADDITIONAL_PATH := embedian
else
$(error kernel arch not supported at present)
endif
# Use ccache if requested by USE_CCACHE variable
KERNEL_CROSS_COMPILE_WRAPPER := $(realpath $(KERNEL_CC_WRAPPER)) $(KERNEL_CROSS_COMPILE)
MKDTIMG := $(HOST_OUT_EXECUTABLES)/mkdtimg
DTS_PATH := $(TARGET_KERNEL_SRC)/arch/$(KERNEL_SRC_ARCH)/boot/dts/$(DTS_ADDITIONAL_PATH)/
DTS_SRC :=
$(foreach dts_config,$(TARGET_BOARD_DTS_CONFIG), \
$(eval DTS_SRC += $(addprefix $(DTS_PATH),$(shell echo ${dts_config} | cut -d':' -f2 | sed 's/dtb/dts/g' ))))
define build_dtb
CCACHE_NODIRECT="true" $(MAKE) -C $(TARGET_KERNEL_SRC) \
O=$(realpath $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ) \
ARCH=$(KERNEL_ARCH) \
CROSS_COMPILE="$(KERNEL_CROSS_COMPILE_WRAPPER)" \
KCFLAGS="$(KERNEL_CFLAGS)" \
KAFLAGS="$(KERNEL_AFLAGS)" \
dtbs
endef
$(BOARD_PREBUILT_DTBOIMAGE): $(KERNEL_BIN) $(DTS_SRC) | $(MKDTIMG) $(AVBTOOL)
$(hide) echo "Building $(KERNEL_ARCH) dtbo ..."
$(hide) PATH=$$PATH $(MAKE) -C $(TARGET_KERNEL_SRC) mrproper
$(call build_dtb) || exit 1; \
for dtsplat in $(TARGET_BOARD_DTS_CONFIG); do \
DTS_PLATFORM=`echo $$dtsplat | cut -d':' -f1`; \
DTB_NAME=`echo $$dtsplat | cut -d':' -f2`; \
DTB=`echo $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/arch/$(TARGET_KERNEL_ARCH)/boot/dts/$(DTS_ADDITIONAL_PATH)/$${DTB_NAME}`; \
DTBO_IMG=`echo $(PRODUCT_OUT)/dtbo-$${DTS_PLATFORM}.img`; \
$(MKDTIMG) create $$DTBO_IMG $$DTB; \
$(AVBTOOL) add_hash_footer --image $$DTBO_IMG \
--partition_name dtbo \
--partition_size $(BOARD_DTBOIMG_PARTITION_SIZE); \
done
.PHONY: dtboimage
dtboimage: $(BOARD_PREBUILT_DTBOIMAGE)
IMX_INSTALLED_VBMETAIMAGE_TARGET := $(PRODUCT_OUT)/vbmeta-$(shell echo $(word 1,$(TARGET_BOARD_DTS_CONFIG)) | cut -d':' -f1).img
$(IMX_INSTALLED_VBMETAIMAGE_TARGET): IMX_INSTALLED_RECOVERYIMAGE_TARGET $(PRODUCT_OUT)/vbmeta.img $(BOARD_PREBUILT_DTBOIMAGE) | $(AVBTOOL)
for dtsplat in $(TARGET_BOARD_DTS_CONFIG); do \
DTS_PLATFORM=`echo $$dtsplat | cut -d':' -f1`; \
DTBO_IMG=`echo $(PRODUCT_OUT)/dtbo-$${DTS_PLATFORM}.img`; \
VBMETA_IMG=`echo $(PRODUCT_OUT)/vbmeta-$${DTS_PLATFORM}.img`; \
RECOVERY_IMG=`echo $(PRODUCT_OUT)/recovery-$${DTS_PLATFORM}.img`; \
$(if $(filter true, $(BOARD_USES_RECOVERY_AS_BOOT)), \
$(AVBTOOL) make_vbmeta_image \
$(INTERNAL_AVB_SIGNING_ARGS) \
$(BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS) \
--include_descriptors_from_image $(PRODUCT_OUT)/vbmeta.img \
--include_descriptors_from_image $$DTBO_IMG \
--output $$VBMETA_IMG, \
$(AVBTOOL) make_vbmeta_image \
$(INTERNAL_AVB_SIGNING_ARGS) \
$(BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS) \
--include_descriptors_from_image $(PRODUCT_OUT)/vbmeta.img \
--include_descriptors_from_image $$DTBO_IMG \
--include_descriptors_from_image $$RECOVERY_IMG \
--output $$VBMETA_IMG); \
done
cp $(IMX_INSTALLED_VBMETAIMAGE_TARGET) $(PRODUCT_OUT)/vbmeta.img
.PHONY: imx_vbmetaimage
imx_vbmetaimage: $(IMX_INSTALLED_VBMETAIMAGE_TARGET)
droid: imx_vbmetaimage
otapackage: imx_vbmetaimage