blob: 118bfcd393b1ef2f6b4e94ddf0ea080b566e5d49 [file] [log] [blame]
Xiaobo Gu059502e2017-01-12 21:20:39 +08001#!/bin/bash
2#
3# author: xiaobo.gu@amlogic.com
4# 2016.09.28
5# 2016.12.01-2016.12.20 Update for bootloader repo
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +08006# 2017.05.20-2017.05.26 Update for txlx and ATF1.3
Xiaobo Gu059502e2017-01-12 21:20:39 +08007
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +08008# include compile check script
9source fip/check_compile.sh
xiaobo gue6c46862018-01-10 18:58:09 +080010source fip/variables.sh
11source fip/lib.sh
12source fip/build_bl2.sh
13source fip/build_bl30.sh
14source fip/build_bl31.sh
15source fip/build_bl32.sh
16source fip/build_bl33.sh
17source fip/build_bl40.sh
dongqing.li154e45e2021-11-22 07:47:38 +000018source fip/check_coverity.sh
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +080019
Bo Lv78837da2020-12-16 04:13:04 -050020function parse_bl33_global_config() {
21 local oldifs="$IFS"
22 IFS=$'\n'
23
24 BL33_GLOBAL_CONFIG=
25 for line in `cat ${SOURCE_FILE}`; do
26 # add any global configs which define in BL33 and need
27 # to used under bl2/bl2x/bl2e/bl31/....
28 if [[ "${line}" == "CONFIG_PXP_"* ]]; then
29 tmp=${line%=*} # delete =y
30 BL33_GLOBAL_CONFIG="${BL33_GLOBAL_CONFIG}"" -D""${tmp}"
31 fi
Tao Zeng68361e62021-01-06 17:29:40 +080032 if [[ "${line}" == "CONFIG_DDR_FULL_FW"* ]]; then
33 tmp=${line%=*} # delete =y
34 BL33_GLOBAL_CONFIG="${BL33_GLOBAL_CONFIG}"" -D""${tmp}"
35 fi
Bo Lv78837da2020-12-16 04:13:04 -050036 done
37 export BL33_GLOBAL_CONFIG
38 echo "==== BL33 GLOBAL CONFIG: ${BL33_GLOBAL_CONFIG} ==="
39 IFS="$oldifs"
40}
Xiaobo Gu059502e2017-01-12 21:20:39 +080041
xiaobo gue6c46862018-01-10 18:58:09 +080042function init_variable_early() {
43 # source uboot pre-build configs
44 if [ ! -e ${SOURCE_FILE} ]; then
45 echo "${SOURCE_FILE} doesn't exist!"
46 cd ${MAIN_FOLDER}
47 exit -1
48 else
49 source ${SOURCE_FILE} &> /dev/null # ignore warning/error
50 fi
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +080051
xiaobo gue6c46862018-01-10 18:58:09 +080052 CUR_SOC=${CONFIG_SYS_SOC}
Honglin Zhange358be42020-08-12 02:16:02 -040053 BL30_SELECT=${CONFIG_BL30_SELECT}
Xiaobo Gu059502e2017-01-12 21:20:39 +080054
xiaobo gue6c46862018-01-10 18:58:09 +080055 if [ "y" == "${CONFIG_NEED_BL32}" ]; then
56 BLX_NEEDFUL[3]="true"
57 fi
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +080058
xiaobo gue6c46862018-01-10 18:58:09 +080059 # export variables
60 #export FIP_BUILD_FOLDER
61 #export CUR_SOC
Xiaobo Gu059502e2017-01-12 21:20:39 +080062
xiaobo gue6c46862018-01-10 18:58:09 +080063 export_variables
Xiaobo Gu059502e2017-01-12 21:20:39 +080064}
65
xiaobo gue6c46862018-01-10 18:58:09 +080066function init_variable_late() {
67 # after uboot build, source configs
xiaobo gua64f93c2018-07-31 21:27:43 +080068 local CONFIG_FILE_TMP="${MAIN_FOLDER}/autoconf"
69 local STR_INVALID="option"
70 if [ ! -e ${CONFIG_FILE} ]; then
71 echo "${CONFIG_FILE} doesn't exist!"
72 cd ${MAIN_FOLDER}
73 exit -1
74 else
75 # workaround for source file error
76 while read LINE
77 do
78 #echo $LINE
79 # ignore "*(option)*" lines
80 if [[ ${LINE} =~ ${STR_INVALID} ]]; then
81 echo "ignore: $LINE"
82 else
83 #echo "LINE: ${LINE}"
84 echo "$LINE" >> "${CONFIG_FILE_TMP}"
85 fi
86 done < ${CONFIG_FILE}
87 source "${CONFIG_FILE_TMP}" &> /dev/null
88 rm ${CONFIG_FILE_TMP}
89 fi
dongqing.lie538ef82022-08-24 15:11:31 +080090 if [ "y" == "${CONFIG_SUPPORT_CUSTOMER_BOARD}" ]; then
xiaobo gue6c46862018-01-10 18:58:09 +080091 BOARD_DIR="customer/board/${CONFIG_SYS_BOARD}"
92 else
93 BOARD_DIR="${CONFIG_BOARDDIR}"
94 fi
xiaobo gua64f93c2018-07-31 21:27:43 +080095 export BOARD_DIR
Xiaobo Gu059502e2017-01-12 21:20:39 +080096}
97
98function build_blx_src() {
xiaobo gue6c46862018-01-10 18:58:09 +080099 # compile $name $src_folder $bin_folder $soc
100 local name=$1
101 local src_folder=$2
102 local bin_folder=$3
103 local soc=$4
104 #dbg "compile - name: ${name}, src_folder: ${src_folder}, bin_folder: ${bin_folder}, soc: ${soc}"
Bo Lv78837da2020-12-16 04:13:04 -0500105
xiaobo gu8a3907e2019-05-22 11:46:49 +0800106 if [ $name == ${BLX_NAME_GLB[0]} ]; then
xiaobo gue6c46862018-01-10 18:58:09 +0800107 # bl2
108 build_bl2 $src_folder $bin_folder $soc
Honglin Zhang637c38b2020-06-28 02:16:39 -0400109 elif [ $name == ${BLX_NAME_GLB[5]} ]; then
110 # bl2e
111 build_bl2e $src_folder $bin_folder $soc
112 elif [ $name == ${BLX_NAME_GLB[6]} ]; then
113 # bl2x
114 build_bl2x $src_folder $bin_folder $soc
xiaobo gu8a3907e2019-05-22 11:46:49 +0800115 elif [ $name == ${BLX_NAME_GLB[1]} ]; then
xiaobo gue6c46862018-01-10 18:58:09 +0800116 # bl30
117 build_bl30 $src_folder $bin_folder $soc
xiaobo gu8a3907e2019-05-22 11:46:49 +0800118 elif [ $name == ${BLX_NAME_GLB[2]} ]; then
xiaobo gue6c46862018-01-10 18:58:09 +0800119 # bl31
120 # some soc use v1.3
benlong.zhou8ecb5ca2023-01-28 19:32:15 +0800121 # some soc use v2.7
122 local version
xiaobo gue6c46862018-01-10 18:58:09 +0800123 check_bl31_ver $soc
benlong.zhou8ecb5ca2023-01-28 19:32:15 +0800124 version=$?
125 #echo "switch_bl31 version=${version}"
126
127 if [ ${version} == 2 ]; then
Meng yue91d80d2023-03-08 10:26:21 +0800128 echo "check bl31 ver: use v2.7"
129 build_bl31_v2_7 $src_folder $bin_folder $soc
benlong.zhou8ecb5ca2023-01-28 19:32:15 +0800130 elif [ ${version} == 1 ]; then
131 echo "check bl31 ver: use v1.3"
132 build_bl31_v1_3 $src_folder $bin_folder $soc
133 else
134 echo "check bl31 ver: use v1.0"
135 build_bl31 $src_folder $bin_folder $soc
Honglin Zhang637c38b2020-06-28 02:16:39 -0400136 fi
xiaobo gu8a3907e2019-05-22 11:46:49 +0800137 elif [ $name == ${BLX_NAME_GLB[3]} ]; then
xiaobo gue8bf44f2019-03-18 14:23:36 +0800138 # control flow for jenkins patchbuild
139 if [ "$BUILD_TYPE" != "AOSP" ]; then
140 # bl32
141 if [ "y" == "${CONFIG_NEED_BL32}" ]; then
142 build_bl32 $src_folder $bin_folder $soc
143 fi
xiaobo gue6c46862018-01-10 18:58:09 +0800144 fi
145 fi
Xiaobo Gu059502e2017-01-12 21:20:39 +0800146}
147
148function build_blx() {
xiaobo gue6c46862018-01-10 18:58:09 +0800149 # build each blx
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +0800150
xiaobo gue6c46862018-01-10 18:58:09 +0800151 # switch bl31 version
152 switch_bl31 ${CUR_SOC}
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +0800153
xiaobo gue6c46862018-01-10 18:58:09 +0800154 # get version of each blx
155 get_versions
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +0800156
Bo Lv78837da2020-12-16 04:13:04 -0500157 # parse bl33 global configs, so BL33 config in .config/config.h
158 # can be used for BL2/2e/2x/31...
159 parse_bl33_global_config $@
160
xiaobo gue6c46862018-01-10 18:58:09 +0800161 # build loop
162 for loop in ${!BLX_NAME[@]}; do
Honglin Zhang805bd102020-02-14 18:23:23 +0800163 dbg "BIN_PATH[${loop}]: ${BIN_PATH[$loop]}"
164 if [ "null" == ${BIN_PATH[$loop]} ]; then
xiaobo gue6c46862018-01-10 18:58:09 +0800165 get_blx_bin ${loop}
Honglin Zhang805bd102020-02-14 18:23:23 +0800166 elif [ "source" == ${BIN_PATH[$loop]} ]; then
xiaobo gue6c46862018-01-10 18:58:09 +0800167 dbg "Build blx source code..."
Honglin Zhang805bd102020-02-14 18:23:23 +0800168 build_blx_src ${BLX_NAME[$loop]} ${BLX_SRC_FOLDER[$loop]} ${FIP_BUILD_FOLDER} ${CUR_SOC}
xiaobo gue6c46862018-01-10 18:58:09 +0800169 else
Honglin Zhang805bd102020-02-14 18:23:23 +0800170 if [ ! -e ${BIN_PATH[$loop]} ]; then
171 echo "Error: ${BIN_PATH[$loop]} doesn't exist... abort"
xiaobo gue6c46862018-01-10 18:58:09 +0800172 exit -1
173 else
Honglin Zhanga5041212020-03-05 21:11:31 +0800174 if [ "y" == "${CONFIG_FIP_IMG_SUPPORT}" ] && \
175 [ -n "${BLX_IMG_NAME[$loop]}" ] && \
176 [ "NULL" != "${BLX_IMG_NAME[$loop]}" ]; then
177 cp ${BIN_PATH[$loop]} ${FIP_BUILD_FOLDER}/${BLX_IMG_NAME[$loop]} -f
Zhongfu Luoa1e540c2020-07-17 15:44:37 +0800178 elif [[ -n "${BLX_IMG_NAME[$loop]}" && "NULL" != "${BLX_BIN_NAME[$loop]}" ]]; then
Honglin Zhanga5041212020-03-05 21:11:31 +0800179 cp ${BIN_PATH[$loop]} ${FIP_BUILD_FOLDER}/${BLX_BIN_NAME[$loop]} -f
180 else
181 cp ${BIN_PATH[$loop]} ${FIP_BUILD_FOLDER} -f
182 fi
183
Honglin Zhang805bd102020-02-14 18:23:23 +0800184 echo "Get ${BLX_NAME[$loop]} from ${BIN_PATH[$loop]}... done"
185 fi
186 fi
187
188 # start to check the blx firmware
189 if [ "bl32" == "${BLX_NAME[$loop]}" ]; then
Honglin Zhanga5041212020-03-05 21:11:31 +0800190 # no bl32/bin are exported for users
Honglin Zhang805bd102020-02-14 18:23:23 +0800191 check_bypass=y
192 else
193 check_bypass=n
194 fi
195
Zhongfu Luo3a6e5342020-12-27 13:11:54 +0800196 if [ "$ADVANCED_BOOTLOADER" == "1" ]; then
Zhongfu Luo7bd99c92020-07-14 19:37:52 +0800197 check_bypass=y
198 fi
199
Honglin Zhang805bd102020-02-14 18:23:23 +0800200 if [ "y" != "${check_bypass}" ]; then
201 if [ "NULL" != "${BLX_BIN_NAME[$loop]}" ] && \
Honglin Zhanga5041212020-03-05 21:11:31 +0800202 [ -n "${BLX_BIN_NAME[$loop]}" ] && \
Honglin Zhang0b81ed72020-03-07 10:38:35 +0800203 [ "NULL" == "${BLX_IMG_NAME[$loop]}" ] && \
Honglin Zhang805bd102020-02-14 18:23:23 +0800204 [ ! -f ${FIP_BUILD_FOLDER}/${BLX_BIN_NAME[$loop]} ]; then
Honglin Zhanga5041212020-03-05 21:11:31 +0800205 echo "Error ${BLX_NAME[$loop]}: ${FIP_BUILD_FOLDER}/${BLX_BIN_NAME[$loop]} doesn't exit... abort"
Honglin Zhang805bd102020-02-14 18:23:23 +0800206 exit -1
207 fi
208 if [ "y" == "${CONFIG_FIP_IMG_SUPPORT}" ] && \
209 [ -n "${BLX_IMG_NAME[$loop]}" ] && \
210 [ "NULL" != "${BLX_IMG_NAME[$loop]}" ] && \
211 [ ! -f ${FIP_BUILD_FOLDER}/${BLX_IMG_NAME[$loop]} ]; then
Honglin Zhanga5041212020-03-05 21:11:31 +0800212 echo "Error ${BLX_NAME[$loop]}: ${FIP_BUILD_FOLDER}/${BLX_IMG_NAME[$loop]} doesn't exit... abort"
Honglin Zhang805bd102020-02-14 18:23:23 +0800213 exit -1
xiaobo gue6c46862018-01-10 18:58:09 +0800214 fi
215 fi
216 done
217 return
Xiaobo Gu059502e2017-01-12 21:20:39 +0800218}
219
220copy_bootloader() {
xiaobo gue6c46862018-01-10 18:58:09 +0800221 mkdir -p ${BUILD_FOLDER}
Haixiang Baof008dc12019-05-23 18:47:15 +0800222 cp ${FIP_BUILD_FOLDER}u-boot.bin* ${BUILD_FOLDER}
xiaobo gue6c46862018-01-10 18:58:09 +0800223 if [ "y" == "${CONFIG_AML_CRYPTO_IMG}" ]; then
224 cp ${FIP_BUILD_FOLDER}boot.img.encrypt ${BUILD_FOLDER}boot.img.encrypt
225 fi
dongqing.lic6275642021-12-17 19:15:52 +0800226
227 if [ ! -z ${CONFIG_CHIPID_SUPPORT} ]; then
228 mv ${BUILD_FOLDER}/u-boot.bin.signed ${BUILD_FOLDER}/u-boot.bin.${CONFIG_RAMDUMP_CHIPID}.signed
229 mv ${BUILD_FOLDER}/u-boot.bin.sd.bin.signed ${BUILD_FOLDER}/u-boot.bin.${CONFIG_RAMDUMP_CHIPID}.sd.bin.signed
230 mv ${BUILD_FOLDER}/u-boot.bin.usb.signed ${BUILD_FOLDER}/u-boot.bin.${CONFIG_RAMDUMP_CHIPID}.usb.signed
231 fi
Xiaobo Gu059502e2017-01-12 21:20:39 +0800232}
233
234function update_bin_path() {
xiaobo gu8a3907e2019-05-22 11:46:49 +0800235 for loop in ${!BLX_NAME[@]}; do
236 if [ "${BLX_NAME[$loop]}" == "${BLX_NAME_GLB[$1]}" ]; then
Honglin Zhangcd8a9fc2019-11-22 17:52:55 +0800237 dbg "Update BIN_PATH[$loop]=$2"
xiaobo gu8a3907e2019-05-22 11:46:49 +0800238 BIN_PATH[$loop]=$2
Honglin Zhangcd8a9fc2019-11-22 17:52:55 +0800239 break
xiaobo gu8a3907e2019-05-22 11:46:49 +0800240 fi
241 done
242}
Xiaobo Gu059502e2017-01-12 21:20:39 +0800243
244function clean() {
xiaobo gue6c46862018-01-10 18:58:09 +0800245 echo "Clean up"
xiaobo gu0c2598b2019-06-28 11:22:17 +0800246 if [ -e ${BL33_PATH1} ]; then
247 cd ${MAIN_FOLDER}
248 cd ${BL33_PATH1}
249 make distclean
250 fi
251 if [ -e ${BL33_PATH2} ]; then
252 cd ${MAIN_FOLDER}
253 cd ${BL33_PATH2}
254 make distclean
255 fi
Bo Lv26b21672023-01-16 01:50:15 +0000256 if [ -e ${BL33_PATH3} ]; then
257 cd ${MAIN_FOLDER}
258 cd ${BL33_PATH3}
259 make distclean
260 fi
xiaobo gue6c46862018-01-10 18:58:09 +0800261 cd ${MAIN_FOLDER}
262 rm ${FIP_BUILD_FOLDER} -rf
xiaobo gu3ce64072018-03-06 17:20:44 +0800263 rm ${BUILD_FOLDER}/* -rf
Haixiang Baof008dc12019-05-23 18:47:15 +0800264 mkdir -p ${BUILD_FOLDER}
xiaobo gue6c46862018-01-10 18:58:09 +0800265 return
Xiaobo Gu059502e2017-01-12 21:20:39 +0800266}
267
268function build() {
xiaobo gue6c46862018-01-10 18:58:09 +0800269 # *************************************************
270 # IMPORTANT!!!!
271 # don't change sequence of following function call
272 # *************************************************
273 clean
274
275 # pre-build, get .config defines
Cheng Wang23dcdb062022-02-25 15:33:03 +0800276 if [ ! $BOARD_COMPILE_HDMITX_ONLY ]; then
277 echo "export BOARD_COMPILE_HDMITX_ONLY=null"
278 export BOARD_COMPILE_HDMITX_ONLY=null
279 fi
xiaobo gue6c46862018-01-10 18:58:09 +0800280 pre_build_uboot $@
281
282 # variable init depends on uboot .config
283 init_variable_early $@
284
285 # must source under main function, all sub function can use these variables
286 # but if source in sub-function, only sub-function(or sub-sub..) can use them
287 source ${FIP_FOLDER}${CUR_SOC}/variable_soc.sh
288
Honglin Zhang694f5342019-12-09 14:54:40 +0800289 # compile fip tools for ddr_parse and map_tool
290 prepare_tools
291
xiaobo gue6c46862018-01-10 18:58:09 +0800292 # source soc package script
293 source ${FIP_FOLDER}${CUR_SOC}/build.sh
294
295 # update bin path, use bin.git or user defined or source code
296 bin_path_parser $@
xiaobo gude8a46a2018-03-05 21:41:54 +0800297 #bin_path_update $@
xiaobo gue6c46862018-01-10 18:58:09 +0800298
299 # build bl33/bl301..etc
Liang Ji51eee082019-05-20 14:01:24 +0800300 if [ ! $CONFIG_SYSTEM_AS_ROOT ]; then
Xindong Xu33eda2d2018-09-25 18:52:38 +0800301 CONFIG_SYSTEM_AS_ROOT=null
302 fi
Liang Ji51eee082019-05-20 14:01:24 +0800303 if [ ! $CONFIG_AVB2 ]; then
Xindong Xu33eda2d2018-09-25 18:52:38 +0800304 CONFIG_AVB2=null
305 fi
ruixuan.li68468212023-05-10 15:25:08 +0800306 if [ ! $CONFIG_AML_GPT ]; then
307 CONFIG_AML_GPT=null
308 fi
Xindong Xu9cf4afc2020-07-24 17:10:21 +0800309 if [ ! $CONFIG_CMD_BOOTCTOL_VAB ]; then
310 CONFIG_CMD_BOOTCTOL_VAB=null
Xindong Xua75ab9b2020-05-25 15:54:01 +0800311 fi
Xindong Xuf010cc32022-05-27 11:04:43 +0800312 if [ ! $CONFIG_FASTBOOT_WRITING_CMD ]; then
313 CONFIG_FASTBOOT_WRITING_CMD=null
314 fi
Matthew Shyu9cf81ee2022-08-30 00:09:36 -0700315 if [ ! $CONFIG_AVB2_RECOVERY ]; then
316 CONFIG_AVB2_RECOVERY=null
317 fi
hao.qi60f37a22022-10-08 16:41:29 +0800318 if [ ! $CONFIG_TESTKEY ]; then
319 CONFIG_TESTKEY=null
320 fi
ruixuan.li68468212023-05-10 15:25:08 +0800321
322 build_uboot ${CONFIG_SYSTEM_AS_ROOT} ${CONFIG_AVB2} ${CONFIG_CMD_BOOTCTOL_VAB} ${CONFIG_FASTBOOT_WRITING_CMD} ${CONFIG_AVB2_RECOVERY} ${CONFIG_TESTKEY} ${CONFIG_AB_UPDATE} ${CONFIG_AML_GPT}
xiaobo gue6c46862018-01-10 18:58:09 +0800323
324 # source other configs after uboot compile
325 init_variable_late
326
327 # bl2/bl30/bl31..etc, build or copy from bin.git
328 build_blx $@
329
qi.wange123e7e2022-06-24 18:39:17 +0800330 if [ "1" == "${CONFIG_NASC_NAGRA_TIER_1}" ]; then
331 # combine bl2f.bin with bl33(uboot)
332 combine_bl2f_with_bl33
333 fi
334
xiaobo gue6c46862018-01-10 18:58:09 +0800335 # cp bl33(uboot)
336 copy_bl33
337
338 # cp other firmwares(soc related)
339 copy_other_soc
340
Zhongfu Luo6c2587f2019-05-15 16:27:50 +0800341 # make build directory
342 mkdir -p ${BUILD_FOLDER}
343
xiaobo gue6c46862018-01-10 18:58:09 +0800344 # package final bootloader
345 package
346
Zhongfu Luofd0ea3e2018-11-30 14:15:16 +0800347 if [ "y" != "${CONFIG_AML_SIGNED_UBOOT}" ]; then
348 # copy bootloader to main folder
349 copy_bootloader
350 fi
Xiaobo Gu059502e2017-01-12 21:20:39 +0800351}
352
353function usage() {
354 cat << EOF
355 Usage:
356 $(basename $0) --help
357
xiaobo gue6c46862018-01-10 18:58:09 +0800358 Bootloader build script.
Xiaobo Gu059502e2017-01-12 21:20:39 +0800359
360 command list:
Xiaobo Gu059502e2017-01-12 21:20:39 +0800361 1. build default uboot:
362 ./$(basename $0) [config_name]
Xiaobo Gu059502e2017-01-12 21:20:39 +0800363
xiaobo gue6c46862018-01-10 18:58:09 +0800364 2. build uboot with specified bl[x].bin
365 ./$(basename $0) [config_name] --bl[x] [path]
Xiaobo Gu059502e2017-01-12 21:20:39 +0800366
xiaobo gue6c46862018-01-10 18:58:09 +0800367 3. build uboot with bl[x]/src source code
Xiaobo Gu059502e2017-01-12 21:20:39 +0800368 ./$(basename $0) [config_name] --update-bl[x]
Xiaobo Gu059502e2017-01-12 21:20:39 +0800369
xiaobo gue6c46862018-01-10 18:58:09 +0800370 4. print config list
371 ./$(basename $0) --config
372
373 5. check compile status with filter(optional)
374 ./$(basename $0) --check-compile [filter]
375
xiaobo gu6368ebe2018-03-29 21:49:25 +0800376 6. update aml ddr fw by source code (for g12a and later use)
377 ./$(basename $0) [config_name] --update-bl2 --ddrfw
378
dongqing.li5849ac72021-11-24 10:49:26 +0000379 7. build uboot with bl[x]/src source code, and run coverity defect
dongqing.li594791b2022-09-30 11:18:01 +0800380 see help info: ./fip/check_coverity.sh -h
xiaobo gue6c46862018-01-10 18:58:09 +0800381
dongqing.lib66a11a2023-03-27 17:18:43 +0800382 8. build uboot with disable full ramdump(enable by default)
383 ./$(basename $0) [config_name] --disable-bl33z
dongqing.lic6275642021-12-17 19:15:52 +0800384
xiaobo gue6c46862018-01-10 18:58:09 +0800385 Example:
386 1) ./$(basename $0) gxb_p200_v1
387 build gxb_p200_v1 config
388
389 2) ./$(basename $0) gxb_p200_v1 --bl2 fip/bl2.bin --bl30 fip/bl30.bin
390 build gxb_p200_v1 with specified bl2.bin and bl30.bin
391
392 3) ./$(basename $0) gxb_p200_v1 --update-bl31 --update-bl2
393 build gxb_p200_v1 with bl31/bl2 source code
394
395 4) ./$(basename $0) --config
396 print config list
397
398 5) ./$(basename $0) --check-compile skt
399 check all skt board compile status
400
401 Remark:
402 bl[x].bin/img priority:
403 1. uboot will use binaries under bl[x]/bin/ folder by default, bl[x] version specified in .repo/manifest.xml
404 2. if you want use your own bl[x].bin, specify path by add "--bl[x] [path]" parameter
405 3. if you want use bl[x].bin by compile source code, please add "--update-bl[x]" parameter
406
Xiaobo Gu059502e2017-01-12 21:20:39 +0800407
408EOF
409 exit 1
410}
411
xiaobo gue6c46862018-01-10 18:58:09 +0800412function print_config() {
413 cat << EOF
414 Usable configs:
415`uboot_config_list`
416EOF
417 exit 1
418}
419
Xiaobo Gu059502e2017-01-12 21:20:39 +0800420function parser() {
xiaobo gue6c46862018-01-10 18:58:09 +0800421 local i=0
422 local argv=()
423 for arg in "$@" ; do
424 argv[$i]="$arg"
425 i=$((i + 1))
426 done
427 i=0
428 while [ $i -lt $# ]; do
429 arg="${argv[$i]}"
xiaobo gu3ce64072018-03-06 17:20:44 +0800430 i=$((i + 1)) # must place here
xiaobo gue6c46862018-01-10 18:58:09 +0800431 case "$arg" in
432 -h|--help|help)
433 usage
434 exit ;;
435 --config)
436 print_config
xiaobo gu3ce64072018-03-06 17:20:44 +0800437 return ;;
Zhongfu Luo019ee832020-11-13 15:56:33 +0800438 # SCRIPT_ARG_CHIPSET_VARIANT is used in source variable
439 # soc, so should add first
440 --chip-varient)
441 SCRIPT_ARG_CHIPSET_VARIANT="${argv[$i]}"
442 export SCRIPT_ARG_CHIPSET_VARIANT
443 continue ;;
xiaobo gue6c46862018-01-10 18:58:09 +0800444 --check-compile)
xiaobo gu66f95292018-01-11 13:38:13 +0800445 check_compile "${argv[@]:$((i))}"
xiaobo gue6c46862018-01-10 18:58:09 +0800446 exit ;;
dongqing.li154e45e2021-11-22 07:47:38 +0000447 --cov|--cov-high)
dongqing.li5849ac72021-11-24 10:49:26 +0000448 PATTERN_PATH="${argv[$i]}"
449 echo "PATTERN_PATH = ${PATTERN_PATH}"
450 export PATTERN_PATH
dongqing.li154e45e2021-11-22 07:47:38 +0000451 check_coverity $@
452 exit ;;
dongqing.lidf6de9c2022-01-03 22:34:01 +0800453 --enable-ramdump)
454 CONFIG_MDUMP_COMPRESS=1
455 export CONFIG_MDUMP_COMPRESS
456 echo "SET CONFIG: CONFIG_MDUMP_COMPRESS"
457 continue ;;
Tao Zeng118bd252022-11-04 13:53:15 +0800458 --uasan)
459 UASAN_DDR_SIZE="${argv[$i]}"
460 if [ -z "${UASAN_DDR_SIZE}" ]; then
461 echo "Must set UASAN_DDR_SIZE when compile uasan"
462 exit -1;
463 fi
464 if [ "${UASAN_DDR_SIZE}" -gt 0 ] 2>/dev/null; then
465 echo "==== UASAN_DDR_SIZE ${UASAN_DDR_SIZE} ===="
466 else
467 echo "UASAN_DDR_SIZE must be a number"
468 exit -1;
469 fi
470 CONFIG_AML_UASAN=1
471 echo "==== BL33 BUILD ENALBED CONFIG_AML_UASAN ===="
472 export CONFIG_AML_UASAN=1
473 export UASAN_DDR_SIZE
474 continue ;;
dongqing.li030579d2022-04-11 10:38:27 +0800475 --enable-bl33z)
476 CONFIG_SUPPORT_BL33Z=1
477 export CONFIG_SUPPORT_BL33Z
dongqing.lib66a11a2023-03-27 17:18:43 +0800478 echo "SET CONFIG: CONFIG_SUPPORT_BL33Z=1"
479 continue ;;
480 --disable-bl33z)
481 CONFIG_SUPPORT_BL33Z=0
482 export CONFIG_SUPPORT_BL33Z
483 echo "SET CONFIG: CONFIG_SUPPORT_BL33Z=0"
dongqing.li030579d2022-04-11 10:38:27 +0800484 continue ;;
dongqing.li1f3354f2022-07-26 15:48:52 +0800485 --compress-bl2e)
486 CONFIG_COMPRESS_BL2E=1
487 export CONFIG_COMPRESS_BL2E
488 echo "SET CONFIG: CONFIG_COMPRESS_BL2E"
489 continue ;;
dongqing.lic6275642021-12-17 19:15:52 +0800490 --chipid)
491 CONFIG_CHIPID_SUPPORT=1
492 export CONFIG_CHIPID_SUPPORT
493 CONFIG_RAMDUMP_CHIPID="${argv[$i]}"
494 export CONFIG_RAMDUMP_CHIPID
dongqing.lidf6de9c2022-01-03 22:34:01 +0800495 echo "SET CHIP ID: ${CONFIG_RAMDUMP_CHIPID}"
dongqing.lic6275642021-12-17 19:15:52 +0800496 continue ;;
Bo Lv26b21672023-01-16 01:50:15 +0000497 --build-version)
498 CONFIG_BUILD_VERSION="${argv[$i]}"
499 if [ -z "${CONFIG_BUILD_VERSION}" ]; then
500 echo "need choice 2015/2019/2023 version"
501 fi
502 CONFIG_CHOICE_BUILD=1
503 export CONFIG_CHOICE_BUILD
504 export CONFIG_BUILD_VERSION
Bo Lv0edfe512022-10-14 21:08:09 +0800505 continue ;;
Bo Lvcefaba42022-11-30 14:36:57 +0800506 --ab-update)
507 CONFIG_AB_UPDATE=y
508 echo "export CONFIG_AB_UPDATE"
509 export CONFIG_AB_UPDATE=y
510 continue ;;
Cheng Wang2e87f4112023-07-06 15:31:52 +0800511 --hdmitx-only)
512 echo "export BOARD_COMPILE_HDMITX_ONLY=true"
513 export BOARD_COMPILE_HDMITX_ONLY=true
514 continue ;;
xiaobo gue6c46862018-01-10 18:58:09 +0800515 clean|distclean|-distclean|--distclean)
516 clean
517 exit ;;
518 *)
519 esac
520 done
dongqing.lib66a11a2023-03-27 17:18:43 +0800521
522 if [ -z $CONFIG_SUPPORT_BL33Z ]; then
523 CONFIG_SUPPORT_BL33Z=1
524 export CONFIG_SUPPORT_BL33Z
525 echo "By default, SET CONFIG_SUPPORT_BL33Z=1"
526 fi
xiaobo gue6c46862018-01-10 18:58:09 +0800527}
528
xiaobo gude8a46a2018-03-05 21:41:54 +0800529function bin_path_update() {
530 # overwrite path in case some git repository doesn't exist
531 for loop in ${!BLX_BIN_FOLDER[@]}; do
532 if [ -ne ${BLX_BIN_FOLDER[$loop]} ]; then
533 dbg "BLX_BIN_FOLDER[$loop] doesn't exist, use src code"
534 update_bin_path $loop "source"
535 fi
536 done
537
538 for loop in ${!BLX_SRC_FOLDER[@]}; do
539 echo ""
540 done
541}
542
xiaobo gue6c46862018-01-10 18:58:09 +0800543function bin_path_parser() {
544 local i=0
545 local argv=()
546 for arg in "$@" ; do
547 argv[$i]="$arg"
548 i=$((i + 1))
549 done
550 i=0
xiaobo gu6368ebe2018-03-29 21:49:25 +0800551 # ddr fw define, co-work with bl2 build script
552 export CONFIG_DDR_FW
xiaobo gue6c46862018-01-10 18:58:09 +0800553 while [ $i -lt $# ]; do
554 arg="${argv[$i]}"
555 i=$((i + 1)) # must pleace here
556 case "$arg" in
557 --bl2)
558 update_bin_path 0 "${argv[@]:$((i))}"
559 continue ;;
Honglin Zhang637c38b2020-06-28 02:16:39 -0400560 --bl2e)
561 update_bin_path 5 "${argv[@]:$((i))}"
562 continue ;;
Tao Zeng73e504b2021-07-13 12:29:08 +0800563 --bl2e-size)
564 BL2E_PAYLOAD_SIZE="${argv[i]}"
565 export BL2E_PAYLOAD_SIZE
566 continue ;;
Honglin Zhang637c38b2020-06-28 02:16:39 -0400567 --bl2x)
568 update_bin_path 6 "${argv[@]:$((i))}"
569 continue ;;
xiaobo gue6c46862018-01-10 18:58:09 +0800570 --bl30)
571 update_bin_path 1 "${argv[@]:$((i))}"
572 continue ;;
573 --bl31)
574 update_bin_path 2 "${argv[@]:$((i))}"
575 continue ;;
576 --bl32)
577 update_bin_path 3 "${argv[@]:$((i))}"
578 continue ;;
Honglin Zhang637c38b2020-06-28 02:16:39 -0400579 --bl40)
Zhongfu Luo3e54c6f2020-02-15 21:30:50 +0800580 update_bin_path 4 "${argv[@]:$((i))}"
581 continue ;;
Tao Zeng68361e62021-01-06 17:29:40 +0800582 --ddr-fip)
583 DDR_FIP_EXTERN_PATH="${argv[@]:$((i))}"
584 export DDR_FIP_EXTERN_PATH
585 continue ;;
Honglin Zhang637c38b2020-06-28 02:16:39 -0400586 --sign-bl40)
Zhongfu Luo3e54c6f2020-02-15 21:30:50 +0800587 update_bin_path 4 "${argv[@]:$((i))}"
588 CONFIG_SIGN_BL40=1
589 continue ;;
xiaobo gue6c46862018-01-10 18:58:09 +0800590 --update-bl2)
591 update_bin_path 0 "source"
592 continue ;;
Honglin Zhang637c38b2020-06-28 02:16:39 -0400593 --update-bl2e)
594 update_bin_path 5 "source"
qi.wange123e7e2022-06-24 18:39:17 +0800595 if [ "1" == "${CONFIG_NASC_NAGRA_TIER_1}" ]; then
596 BL2F_UPDATE_TYPE=y
597 export BL2F_UPDATE_TYPE
598 fi
Tao Zeng332fda22021-07-23 17:52:42 +0800599 if [[ ${argv[i]} == "sto" || ${argv[i]} == "usb" ]]; then
600 BL2E_UPDATE_TYPE=${argv[i]}
601 export BL2E_UPDATE_TYPE
602 fi
Honglin Zhang637c38b2020-06-28 02:16:39 -0400603 continue ;;
604 --update-bl2x)
605 update_bin_path 6 "source"
606 continue ;;
Tao Zeng68361e62021-01-06 17:29:40 +0800607 --update-ddr-fip)
608 GENERATE_DDR_FIP=1
609 export GENERATE_DDR_FIP
610 continue ;;
xiaobo gue6c46862018-01-10 18:58:09 +0800611 --update-bl30)
612 update_bin_path 1 "source"
613 continue ;;
614 --update-bl31)
615 update_bin_path 2 "source"
616 continue ;;
617 --update-bl32)
618 update_bin_path 3 "source"
619 continue ;;
Tao Zengff03b402020-12-09 15:01:44 +0800620 --bl2-branch)
621 BL2_BRANCH_ARG="${argv[i]}"
622 export BL2_BRANCH_ARG
623 continue ;;
xiaobo gu6368ebe2018-03-29 21:49:25 +0800624 --ddrfw)
625 CONFIG_DDR_FW=1
626 export CONFIG_DDR_FW
627 continue ;;
Bo Lv9edb6992021-09-06 11:31:00 +0800628 --jenkins-sign)
629 CONFIG_JENKINS_SIGN=1
630 export CONFIG_JENKINS_SIGN
631 continue ;;
632 --former-sign)
633 CONFIG_FORMER_SIGN=1
634 export CONFIG_FORMER_SIGN
635 continue ;;
Zhongfu Luo43f1a8a2022-03-16 19:13:07 +0800636 --build-unsign)
637 CONFIG_BUILD_UNSIGN=1
638 export CONFIG_BUILD_UNSIGN
639 continue ;;
qi.wange123e7e2022-06-24 18:39:17 +0800640 --nasc_nagra_tier_1)
641 CONFIG_NASC_NAGRA_TIER_1=1
642 export CONFIG_NASC_NAGRA_TIER_1
643 continue;;
Bo Lvc8e2bee2022-09-28 12:48:45 +0800644 --build-nogit)
645 CONFIG_WITHOUT_BIN_GIT=1
646 export CONFIG_WITHOUT_BIN_GIT
647 continue ;;
Honglin Zhang8fa9d152020-02-10 12:29:27 +0800648 --cas)
649 cas="${argv[$i]}"
650 #limit the "--cas xxx" only works for g12a
Lawrence Mok762306e2020-05-13 20:38:08 -0700651 if [ "${CUR_SOC}" == "g12a" ] ||
652 ( [ "${cas}" == "vmx" ] && [ "${CUR_SOC}" == "gxl" ] ); then
Honglin Zhang8fa9d152020-02-10 12:29:27 +0800653 CONFIG_CAS=${cas}
654 fi
Sangho Lee41cedd22023-09-22 13:02:21 +0800655 if [ "${cas}" == "nsk" ]; then
Sangho Lee6be1bf22021-05-24 07:54:37 +0800656 CONFIG_CAS=${cas}
657 fi
Honglin Zhang8fa9d152020-02-10 12:29:27 +0800658 if [[ "${CONFIG_CAS}" == "irdeto" || \
659 "${CONFIG_CAS}" == "vmx" || \
660 "${CONFIG_CAS}" == "nagra" ]]; then
661 CONFIG_AML_SIGNED_UBOOT=y
662 export CONFIG_AML_SIGNED_UBOOT
663 fi
Lawrence Mok048be0f2020-02-24 18:03:43 -0800664 if [ "${CONFIG_CAS}" == "vmx" ]; then
665 dbg "Loading CAS VMX config"
666 source fip/config_cas_vmx.sh
667 fi
Doosan Baek284dc972022-02-11 11:04:26 +0800668 if [ "${CUR_SOC}" == "s4" ] && [ "${cas}" == "gs" ]; then
669 CONFIG_CAS=${cas}
670 fi
Doosan Baekd2a27822023-06-15 16:28:27 +0800671 if [ "${cas}" == "comcast" ]; then
672 CONFIG_CAS=${cas}
673 fi
Honglin Zhang8fa9d152020-02-10 12:29:27 +0800674 echo "CAS: ${cas},${CONFIG_CAS}"
675 export CONFIG_CAS
676 continue ;;
Xindong Xuad0d2832018-07-30 19:15:52 +0800677 --systemroot)
678 CONFIG_SYSTEM_AS_ROOT=systemroot
679 echo "export CONFIG_SYSTEM_AS_ROOT"
680 export CONFIG_SYSTEM_AS_ROOT=systemroot
681 continue ;;
Xindong Xu33eda2d2018-09-25 18:52:38 +0800682 --avb2)
683 CONFIG_AVB2=avb2
684 echo "export CONFIG_AVB2"
685 export CONFIG_AVB2=avb2
686 continue ;;
Xindong Xu9cf4afc2020-07-24 17:10:21 +0800687 --vab)
688 CONFIG_CMD_BOOTCTOL_VAB=1
689 echo "export CONFIG_CMD_BOOTCTOL_VAB"
690 export CONFIG_CMD_BOOTCTOL_VAB=1
Xindong Xua75ab9b2020-05-25 15:54:01 +0800691 continue ;;
Xindong Xuf010cc32022-05-27 11:04:43 +0800692 --fastboot-write)
693 CONFIG_FASTBOOT_WRITING_CMD=1
694 echo "export CONFIG_FASTBOOT_WRITING_CMD"
695 export CONFIG_FASTBOOT_WRITING_CMD=1
696 continue ;;
Huaihong Leia40d4ba2023-04-14 15:13:15 +0800697 --signpipe)
698 CONFIG_SIGNPIPE=1
699 echo "export CONFIG_SIGNPIPE"
700 export CONFIG_SIGNPIPE=1
701 continue ;;
Matthew Shyu9cf81ee2022-08-30 00:09:36 -0700702 --avb2-recovery)
703 CONFIG_AVB2_RECOVERY=1
704 echo "export CONFIG_AVB2_RECOVERY"
705 export CONFIG_AVB2_RECOVERY=1
706 continue ;;
Lele Liu5767b162023-02-22 19:45:13 +0800707 --patch)
708 CONFIG_PATCH=1
709 echo "export CONFIG_PATCH"
710 export CONFIG_PATCH
711 source fip/auto_patch.sh
712 continue ;;
hao.qi60f37a22022-10-08 16:41:29 +0800713 --testkey)
714 CONFIG_TESTKEY=1
715 echo "export CONFIG_TESTKEY"
716 export CONFIG_TESTKEY=1
717 continue ;;
ruixuan.li68468212023-05-10 15:25:08 +0800718 --gpt)
719 CONFIG_AML_GPT=1
720 export CONFIG_AML_GPT=1
721 continue ;;
xiaobo gue6c46862018-01-10 18:58:09 +0800722 *)
ruixuan.li68468212023-05-10 15:25:08 +0800723
xiaobo gue6c46862018-01-10 18:58:09 +0800724 esac
725 done
Xiaobo Gu059502e2017-01-12 21:20:39 +0800726}
727
qi.wange123e7e2022-06-24 18:39:17 +0800728function combine_bl2f_with_bl33() {
729 if [ "1" == "${CONFIG_NASC_NAGRA_TIER_1}" ]; then
730 # place bl2f at end of u-boot.bin, _end align(4096)
731 if [ "y" == "${BL2F_UPDATE_TYPE}" ]; then
732 BL2F_BIN=bl2/ree/bl2f/bl2f.bin
733 else
734 echo CUR_SOC is $CUR_SOC
735 echo CONFIG_CHIPSET_NAME is $CONFIG_CHIPSET_NAME
736 BL2F_BIN=bl2/bin/$CUR_SOC/$CONFIG_CHIPSET_NAME/bl2f.bin
737 fi
738
739 if [ ! -f ${BL2F_BIN} ]; then
740 echo No $BL2F_BIN
741 exit -1
742 fi
743
744 END_LENS=`stat -c "%s" "./bl33/v2019/build/u-boot.bin"`
745 END_ALIGN=4096
746 BL2F_LOAD=`echo "((($END_LENS-1) / $END_ALIGN * $END_ALIGN) + $END_ALIGN)" | bc`
747 echo "uboot.bin size:$END_LENS, align:$END_ALIGN, new uboot size:$BL2F_LOAD"
748
749 dd if=/dev/zero of=./bl33/v2019/u-boot.tmp bs=$BL2F_LOAD count=1
750 dd if=./bl33/v2019/build/u-boot.bin of=./bl33/v2019/u-boot.tmp conv=notrunc &> /dev/null
751 cat $BL2F_BIN >> bl33/v2019/u-boot.tmp
752 cp -rf bl33/v2019/u-boot.tmp bl33/v2019/build/u-boot.bin
753 echo "Append bl2f.bin to the end of uboot.bin OK."
754 fi
755}
756
Xiaobo Gu059502e2017-01-12 21:20:39 +0800757function main() {
xiaobo gue6c46862018-01-10 18:58:09 +0800758 if [ -z $1 ]
759 then
760 usage
761 return
762 fi
Xiaobo Gu059502e2017-01-12 21:20:39 +0800763
xiaobo gue6c46862018-01-10 18:58:09 +0800764 MAIN_FOLDER=`pwd`
765 parser $@
766 build $@
Xiaobo Gu059502e2017-01-12 21:20:39 +0800767}
768
769main $@ # parse all paras to function