blob: 56aa0828236083b0637f03e21528393d756ad503 [file] [log] [blame]
Tim Leedd14a912022-07-29 16:42:15 +08001UBOOT_BINARY := "u-boot.${UBOOT_SUFFIX}"
Tim Leed52b0f62023-05-29 10:12:08 +08002BB_HEADER_BINARY := "BootBlockAndHeader.bin"
3BL31_HEADER_BINARY := "bl31AndHeader.bin"
4OPTEE_HEADER_BINARY := "teeAndHeader.bin"
Tim Leedd14a912022-07-29 16:42:15 +08005KMT_TIPFW_BINARY := "Kmt_TipFwL0_Skmt_TipFwL1.bin"
6KMT_TIPFW_BB_BINARY = "Kmt_TipFw_BootBlock.bin"
7KMT_TIPFW_BB_BL31_BINARY = "Kmt_TipFw_BootBlock_BL31.bin"
8KMT_TIPFW_BB_BL31_TEE_BINARY = "Kmt_TipFw_BootBlock_BL31_Tee.bin"
9KMT_TIPFW_BB_UBOOT_BINARY = "u-boot.bin.merged"
Tim Lee0e2dc682023-11-08 17:29:00 +080010SA_KMT_TIPFW_BINARY := "SA_Kmt_TipFwL0.bin"
Tim Leed52b0f62023-05-29 10:12:08 +080011
12BB_BL31_BINARY = "BootBlock_BL31_no_tip.bin"
13BB_BL31_TEE_BINARY = "BootBlock_BL31_Tee_no_tip.bin"
Tim Lee0e2dc682023-11-08 17:29:00 +080014BB_BL31_TEE_UBOOT_BINARY = "BootBlock_BL31_Tee_Uboot_no_tip.bin"
15BB_BL31_TEE_UBOOT_SA_BINARY = "BootBlock_BL31_Tee_Uboot_no_tip_SA.bin"
Tim Leed52b0f62023-05-29 10:12:08 +080016
Tim Leedd14a912022-07-29 16:42:15 +080017FULL_SUFFIX = "full"
18MERGED_SUFFIX = "merged"
Tim Lee3af4d262022-09-27 15:01:43 +080019UBOOT_SUFFIX:append = ".${MERGED_SUFFIX}"
Tim Leed52b0f62023-05-29 10:12:08 +080020UBOOT_HEADER_BINARY := "${UBOOT_BINARY}.${FULL_SUFFIX}"
Tim Leedd14a912022-07-29 16:42:15 +080021
22IGPS_DIR = "${STAGING_DIR_NATIVE}/${datadir}/npcm8xx-igps"
Tim Leedd14a912022-07-29 16:42:15 +080023
Tim Lee7f23e3a2022-11-30 13:53:50 +080024BB_BIN = "arbel_a35_bootblock.bin"
25BL31_BIN = "bl31.bin"
26OPTEE_BIN = "tee.bin"
27UBOOT_BIN = "u-boot.bin"
Tim Leed52b0f62023-05-29 10:12:08 +080028BB_NO_TIP_BIN = "arbel_a35_bootblock_no_tip.bin"
Tim Lee7f23e3a2022-11-30 13:53:50 +080029
Tim Lee3a63ed42024-01-30 13:55:49 +080030FIT_KERNEL_COMP_ALG:df-obmc-static-norootfs = "gzip"
31FIT_KERNEL_COMP_ALG_EXTENSION:df-obmc-static-norootfs = ".gz"
32
Tim Lee7f23e3a2022-11-30 13:53:50 +080033# Align images if needed
34python do_pad_binary() {
Tim Leed52b0f62023-05-29 10:12:08 +080035 TIP_IMAGE = d.getVar('TIP_IMAGE', True)
Tim Lee7f23e3a2022-11-30 13:53:50 +080036 def Pad_bin_file_inplace(inF, align):
37 padding_size = 0
Tim Lee7f23e3a2022-11-30 13:53:50 +080038
39 F_size = os.path.getsize(inF)
40
Brian Ma317ff982023-08-01 16:09:54 +080041 if ((F_size % align) == 0):
42 return
43
Tim Lee7f23e3a2022-11-30 13:53:50 +080044 padding_size = align - (F_size % align)
45
46 infile = open(inF, "ab")
47 infile.seek(0, 2)
48 infile.write(b'\x00' * padding_size)
49 infile.close()
50
Tim Leed52b0f62023-05-29 10:12:08 +080051 if TIP_IMAGE == "True":
52 Pad_bin_file_inplace(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True),
Tim Lee7f23e3a2022-11-30 13:53:50 +080053 '%s' % d.getVar('BB_BIN',True)), int(d.getVar('PAD_ALIGN', True)))
Tim Leed52b0f62023-05-29 10:12:08 +080054 else:
55 Pad_bin_file_inplace(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True),
56 '%s' % d.getVar('BB_NO_TIP_BIN',True)), int(d.getVar('PAD_ALIGN', True)))
Tim Lee7f23e3a2022-11-30 13:53:50 +080057
58 Pad_bin_file_inplace(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True),
Tim Leed52b0f62023-05-29 10:12:08 +080059 '%s' % d.getVar('BL31_BIN',True)), int(d.getVar('PAD_ALIGN', True)))
Tim Lee7f23e3a2022-11-30 13:53:50 +080060
61 Pad_bin_file_inplace(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True),
Tim Leed52b0f62023-05-29 10:12:08 +080062 '%s' % d.getVar('OPTEE_BIN',True)), int(d.getVar('PAD_ALIGN', True)))
Tim Lee7f23e3a2022-11-30 13:53:50 +080063
64 Pad_bin_file_inplace(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True),
65 '%s' % d.getVar('UBOOT_BIN',True)), int(d.getVar('PAD_ALIGN', True)))
66}
67
Tim Leedd14a912022-07-29 16:42:15 +080068# Prepare the Bootblock and U-Boot images using npcm8xx-bingo
69do_prepare_bootloaders() {
70 local olddir="$(pwd)"
71 cd ${DEPLOY_DIR_IMAGE}
72
73 bingo ${IGPS_DIR}/BL31_AndHeader.xml \
Tim Leed52b0f62023-05-29 10:12:08 +080074 -o ${BL31_HEADER_BINARY}
Tim Leedd14a912022-07-29 16:42:15 +080075
76 bingo ${IGPS_DIR}/OpTeeAndHeader.xml \
Tim Leed52b0f62023-05-29 10:12:08 +080077 -o ${OPTEE_HEADER_BINARY}
Tim Leedd14a912022-07-29 16:42:15 +080078
Tim Leed52b0f62023-05-29 10:12:08 +080079 if [ "${TIP_IMAGE}" = "True" ]; then
Tim Leedd14a912022-07-29 16:42:15 +080080 bingo ${IGPS_DIR}/BootBlockAndHeader_${DEVICE_GEN}_${IGPS_MACHINE}.xml \
Tim Leed52b0f62023-05-29 10:12:08 +080081 -o ${BB_HEADER_BINARY}
82 else
83 bingo ${IGPS_DIR}/BootBlockAndHeader_${DEVICE_GEN}_${IGPS_MACHINE}_NoTip.xml \
84 -o ${BB_HEADER_BINARY}
85 fi
Tim Leedd14a912022-07-29 16:42:15 +080086
87 bingo ${IGPS_DIR}/UbootHeader_${DEVICE_GEN}.xml \
Tim Leed52b0f62023-05-29 10:12:08 +080088 -o ${UBOOT_HEADER_BINARY}
Tim Leedd14a912022-07-29 16:42:15 +080089
90 cd "$olddir"
91}
92
Tim Leed52b0f62023-05-29 10:12:08 +080093check_keys() {
94 if [ -n "${KEY_FOLDER}" ]; then
95 echo "local"
96 else
97 echo "default"
98 fi
99}
Tim Leedd14a912022-07-29 16:42:15 +0800100
Tim Leed4452592023-06-15 15:24:13 +0800101# Sign images for secure os be enabled and TIP mode only
Tim Leed52b0f62023-05-29 10:12:08 +0800102do_sign_binary() {
Tim Leed4452592023-06-15 15:24:13 +0800103 if [ "${SECURED_IMAGE}" != "True" -o "${TIP_IMAGE}" != "True" ]; then
Tim Leed52b0f62023-05-29 10:12:08 +0800104 return
105 fi
106 checked=`check_keys`
107 if [ "${checked}" = "local" ]; then
108 bbnote "Sign image with local keys"
109 key_bb=${KEY_FOLDER}/${KEY_BB}
110 key_bl31=${KEY_FOLDER}/${KEY_BL31}
111 key_optee=${KEY_FOLDER}/${KEY_OPTEE}
112 key_uboot=${KEY_FOLDER}/${KEY_UBOOT}
113 else
114 bbnote "Sign image with default keys"
115 key_bb=${KEY_FOLDER_DEFAULT}/${KEY_BB}
116 key_bl31=${KEY_FOLDER_DEFAULT}/${KEY_BL31}
117 key_optee=${KEY_FOLDER_DEFAULT}/${KEY_OPTEE}
118 key_uboot=${KEY_FOLDER_DEFAULT}/${KEY_UBOOT}
119 fi
120 bbnote "BB sign key from ${checked}: ${key_bb}"
121 bbnote "BL31 sign key from ${checked}: ${key_bl31}"
122 bbnote "OPTEE sign key from ${checked}: ${key_optee}"
123 bbnote "UBOOT sign key from ${checked}: ${key_uboot}"
124 # Used to embed the key index inside the image, usually at offset 0x140
125 python3 ${IGPS_DIR}/BinarySignatureGenerator.py Replace_binary_single_byte \
126 ${DEPLOY_DIR_IMAGE}/${BB_HEADER_BINARY} 140 ${KEY_BB_INDEX}
127
128 python3 ${IGPS_DIR}/BinarySignatureGenerator.py Replace_binary_single_byte \
129 ${DEPLOY_DIR_IMAGE}/${BL31_HEADER_BINARY} 140 ${SKMT_BL31_KEY_INDEX}
130
131 python3 ${IGPS_DIR}/BinarySignatureGenerator.py Replace_binary_single_byte \
132 ${DEPLOY_DIR_IMAGE}/${OPTEE_HEADER_BINARY} 140 ${SKMT_BL32_KEY_INDEX}
133
134 python3 ${IGPS_DIR}/BinarySignatureGenerator.py Replace_binary_single_byte \
135 ${DEPLOY_DIR_IMAGE}/${UBOOT_HEADER_BINARY} 140 ${SKMT_BL33_KEY_INDEX}
136
137 # Sign specific image with specific key
138 res=`python3 ${IGPS_DIR}/BinarySignatureGenerator.py Sign_binary \
139 ${DEPLOY_DIR_IMAGE}/${BB_HEADER_BINARY} 112 ${key_bb} 16 \
140 ${DEPLOY_DIR_IMAGE}/${BB_HEADER_BINARY} ${SIGN_TYPE} 0 ${KEY_BB_ID}
141
142 python3 ${IGPS_DIR}/BinarySignatureGenerator.py Sign_binary \
143 ${DEPLOY_DIR_IMAGE}/${BL31_HEADER_BINARY} 112 ${key_bl31} 16 \
144 ${DEPLOY_DIR_IMAGE}/${BL31_HEADER_BINARY} ${SIGN_TYPE} 0 ${KEY_BL31_ID}
145
146 python3 ${IGPS_DIR}/BinarySignatureGenerator.py Sign_binary \
147 ${DEPLOY_DIR_IMAGE}/${OPTEE_HEADER_BINARY} 112 ${key_optee} 16 \
148 ${DEPLOY_DIR_IMAGE}/${OPTEE_HEADER_BINARY} ${SIGN_TYPE} 0 ${KEY_OPTEE_ID}
149
150 python3 ${IGPS_DIR}/BinarySignatureGenerator.py Sign_binary \
151 ${DEPLOY_DIR_IMAGE}/${UBOOT_HEADER_BINARY} 112 ${key_uboot} 16 \
152 ${DEPLOY_DIR_IMAGE}/${UBOOT_HEADER_BINARY} ${SIGN_TYPE} 0 ${KEY_UBOOT_ID}`
153
154 # Stop full image build process when sign binary got failed
155 set +e
156 err=`echo $res | grep -E "missing|Invalid|failed"`
157 if [ -n "${err}" ]; then
158 bbfatal "Sign binary failed: keys are not found or invalid. Please check your KEY_FOLDER and KEY definition."
159 fi
160 set -e
161}
162
163python do_merge_bootloaders() {
164 TIP_IMAGE = d.getVar('TIP_IMAGE', True)
Tim Lee0e2dc682023-11-08 17:29:00 +0800165 SA_TIP_IMAGE = d.getVar('SA_TIP_IMAGE', True)
Tim Lee9d9d9e32022-10-28 16:57:26 +0800166 def Merge_bin_files_and_pad(inF1, inF2, outF, align, align_end):
Tim Leedd14a912022-07-29 16:42:15 +0800167 padding_size = 0
168 padding_size_end = 0
169 F1_size = os.path.getsize(inF1)
170 F2_size = os.path.getsize(inF2)
171
172 if ((F1_size % align) != 0):
173 padding_size = align - (F1_size % align)
174
Tim Lee9d9d9e32022-10-28 16:57:26 +0800175 if ((F2_size % align_end) != 0):
176 padding_size_end = align_end - (F2_size % align_end)
Tim Leedd14a912022-07-29 16:42:15 +0800177
178 with open(outF, "wb") as file3:
179 with open(inF1, "rb") as file1:
180 data = file1.read()
181 file3.write(data)
182
183 file3.write(b'\xFF' * padding_size)
184
185 with open(inF2, "rb") as file2:
186 data = file2.read()
187 file3.write(data)
188
189 file3.write(b'\xFF' * padding_size_end)
190
Tim Leed52b0f62023-05-29 10:12:08 +0800191 if TIP_IMAGE == "True":
192 Merge_bin_files_and_pad(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BINARY',True)),
193 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_HEADER_BINARY',True)),
Tim Leedd14a912022-07-29 16:42:15 +0800194 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_BINARY',True)),
Tim Lee9d9d9e32022-10-28 16:57:26 +0800195 int(d.getVar('BB_ALIGN', True)), int(d.getVar('ALIGN_END', True)))
Tim Leedd14a912022-07-29 16:42:15 +0800196
Tim Leed52b0f62023-05-29 10:12:08 +0800197 Merge_bin_files_and_pad(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_BINARY',True)),
198 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BL31_HEADER_BINARY',True)),
Tim Leedd14a912022-07-29 16:42:15 +0800199 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_BL31_BINARY',True)),
Tim Lee9d9d9e32022-10-28 16:57:26 +0800200 int(d.getVar('ATF_ALIGN', True)), int(d.getVar('ALIGN_END', True)))
Tim Leedd14a912022-07-29 16:42:15 +0800201
Tim Leed52b0f62023-05-29 10:12:08 +0800202 Merge_bin_files_and_pad(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_BL31_BINARY',True)),
203 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('OPTEE_HEADER_BINARY',True)),
Tim Leedd14a912022-07-29 16:42:15 +0800204 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_BL31_TEE_BINARY',True)),
Tim Lee9d9d9e32022-10-28 16:57:26 +0800205 int(d.getVar('OPTEE_ALIGN', True)), int(d.getVar('ALIGN_END', True)))
Tim Leedd14a912022-07-29 16:42:15 +0800206
Tim Leed52b0f62023-05-29 10:12:08 +0800207 Merge_bin_files_and_pad(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_BL31_TEE_BINARY',True)),
208 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('UBOOT_HEADER_BINARY',True)),
Tim Leedd14a912022-07-29 16:42:15 +0800209 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_UBOOT_BINARY',True)),
Tim Lee9d9d9e32022-10-28 16:57:26 +0800210 int(d.getVar('UBOOT_ALIGN', True)), int(d.getVar('ALIGN_END', True)))
Tim Leed52b0f62023-05-29 10:12:08 +0800211 else:
212 Merge_bin_files_and_pad(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_HEADER_BINARY',True)),
213 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BL31_HEADER_BINARY',True)),
214 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_BL31_BINARY',True)),
215 int(d.getVar('ATF_ALIGN', True)), int(d.getVar('ALIGN_END', True)))
216
217 Merge_bin_files_and_pad(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_BL31_BINARY',True)),
218 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('OPTEE_HEADER_BINARY',True)),
219 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_BL31_TEE_BINARY',True)),
220 int(d.getVar('OPTEE_ALIGN', True)), int(d.getVar('ALIGN_END', True)))
221
222 Merge_bin_files_and_pad(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_BL31_TEE_BINARY',True)),
223 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('UBOOT_HEADER_BINARY',True)),
224 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_BL31_TEE_UBOOT_BINARY',True)),
225 int(d.getVar('UBOOT_ALIGN', True)), int(d.getVar('ALIGN_END', True)))
Tim Lee0e2dc682023-11-08 17:29:00 +0800226
227 if SA_TIP_IMAGE == "True":
228 Merge_bin_files_and_pad(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_BL31_TEE_UBOOT_BINARY',True)),
229 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('SA_KMT_TIPFW_BINARY',True)),
230 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_BL31_TEE_UBOOT_SA_BINARY',True)),
231 int(d.getVar('SA_ALIGN', True)), int(d.getVar('ALIGN_END', True)))
232
233 os.rename(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_BL31_TEE_UBOOT_SA_BINARY',True)),
234 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_UBOOT_BINARY',True)))
235 else:
236 os.rename(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_BL31_TEE_UBOOT_BINARY',True)),
237 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_UBOOT_BINARY',True)))
Tim Leedd14a912022-07-29 16:42:15 +0800238}
239
Tim Lee30d2a112022-12-01 14:19:46 +0800240do_pad_binary[depends] += " \
Tim Lee0e2dc682023-11-08 17:29:00 +0800241 ${@'npcm8xx-tip-fw:do_deploy' if d.getVar('TIP_IMAGE', True) == 'True' or d.getVar('SA_TIP_IMAGE', True) == 'True' else ''} \
Tim Leedd14a912022-07-29 16:42:15 +0800242 npcm8xx-bootblock:do_deploy \
Tim Lee3af4d262022-09-27 15:01:43 +0800243 u-boot-nuvoton:do_deploy \
Tim Leedd14a912022-07-29 16:42:15 +0800244 trusted-firmware-a:do_deploy \
245 optee-os:do_deploy \
246 npcm7xx-bingo-native:do_populate_sysroot \
247 npcm8xx-igps-native:do_populate_sysroot \
248 "
249
250# link images for we only need to flash partial image with idea name
251do_generate_ext4_tar:append() {
252 cd ${DEPLOY_DIR_IMAGE}
253 ln -sf ${UBOOT_BINARY}.${MERGED_SUFFIX} image-u-boot
254 ln -sf ${DEPLOY_DIR_IMAGE}/${FLASH_KERNEL_IMAGE} image-kernel
255 ln -sf ${S}/ext4/${IMAGE_LINK_NAME}.${FLASH_EXT4_BASETYPE}.zst image-rofs
256 ln -sf ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.rwfs.${FLASH_EXT4_OVERLAY_BASETYPE} image-rwfs
257 ln -sf ${IMAGE_NAME}.rootfs.wic.gz image-emmc.gz
258}
259
Tim Lee7f23e3a2022-11-30 13:53:50 +0800260addtask do_pad_binary before do_prepare_bootloaders
Tim Leed52b0f62023-05-29 10:12:08 +0800261addtask do_sign_binary before do_merge_bootloaders after do_prepare_bootloaders
Tim Leedd14a912022-07-29 16:42:15 +0800262addtask do_prepare_bootloaders before do_generate_static after do_generate_rwfs_static
Tim Lee3a63ed42024-01-30 13:55:49 +0800263addtask do_prepare_bootloaders before do_generate_static_norootfs after do_image_cpio
Tim Leed52b0f62023-05-29 10:12:08 +0800264addtask do_merge_bootloaders before do_generate_static after do_sign_binary
Tim Lee3a63ed42024-01-30 13:55:49 +0800265addtask do_merge_bootloaders before do_generate_static_norootfs after do_sign_binary
Tim Leedd14a912022-07-29 16:42:15 +0800266addtask do_merge_bootloaders before do_generate_ext4_tar after do_prepare_bootloaders
267
268# Include the full bootblock and u-boot in the final static image
269python do_generate_static:append() {
270 _append_image(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True),
271 'u-boot.%s' % d.getVar('UBOOT_SUFFIX',True)),
272 int(d.getVar('FLASH_UBOOT_OFFSET', True)),
273 int(d.getVar('FLASH_KERNEL_OFFSET', True)))
274}
275
276do_make_ubi:append() {
277 # Concatenate the uboot and ubi partitions
278 dd bs=1k conv=notrunc seek=${FLASH_UBOOT_OFFSET} \
279 if=${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX} \
280 of=${IMGDEPLOYDIR}/${IMAGE_NAME}.ubi.mtd
281}
282
283do_make_ubi[depends] += "${PN}:do_prepare_bootloaders"
284do_generate_ubi_tar[depends] += "${PN}:do_prepare_bootloaders"
285do_generate_ubi_tar[depends] += "${PN}:do_merge_bootloaders"
286do_generate_static_tar[depends] += "${PN}:do_prepare_bootloaders"
287do_generate_static_tar[depends] += "${PN}:do_merge_bootloaders"
Tim Lee3a63ed42024-01-30 13:55:49 +0800288do_generate_static_norootfs[depends] += "${PN}:do_prepare_bootloaders"
289do_generate_static_norootfs[depends] += "${PN}:do_merge_bootloaders"
Tim Leedd14a912022-07-29 16:42:15 +0800290do_generate_ext4_tar[depends] += "${PN}:do_prepare_bootloaders"
291do_generate_ext4_tar[depends] += "${PN}:do_merge_bootloaders"