blob: 4c81b92d0d7903faaf6472e29383a60ec6e21e07 [file] [log] [blame]
wanwei.jiang91776952021-11-19 13:10:32 +08001#!/bin/bash
2
qinglin.lia40f7b62023-07-26 18:52:35 +08003function real_path() {
Wanwei Jiangd71aca62023-09-13 18:14:07 +08004 if [[ "${FULL_KERNEL_VERSION}" == "common13-5.15" ]]; then
5 rel_path $@
6 else
7 realpath $1 --relative-to $2
8 fi
qinglin.lia40f7b62023-07-26 18:52:35 +08009}
10
wanwei.jiang91776952021-11-19 13:10:32 +080011function pre_defconfig_cmds() {
wanwei.jiangff4dccd2022-08-14 01:14:51 +080012 export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
Lei Zhang2853aa52022-08-23 09:40:06 +080013 if [ "${ARCH}" = "arm" ]; then
14 export PATH=${PATH}:/usr/bin/
15 fi
wanwei.jiangff4dccd2022-08-14 01:14:51 +080016
Wanwei Jiang51217812022-11-01 20:23:03 +080017 if [[ -z ${ANDROID_PROJECT} ]]; then
18 local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
19 echo "CONFIG_AMLOGIC_SERIAL_MESON=y" > ${temp_file}
qinglin.li931a53f2022-11-23 11:09:03 +080020 echo "CONFIG_DEVTMPFS=y" >> ${temp_file}
Dezhen Wanga6806c52023-06-13 19:47:05 +080021 if [[ ${ARCH} == arm ]]; then
Wanwei Jiang51217812022-11-01 20:23:03 +080022 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG} ${temp_file}
Dezhen Wanga6806c52023-06-13 19:47:05 +080023 else
24 if [[ ${GKI_CONFIG} == gki_20 ]]; then
25 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG} ${temp_file}
Wanwei Jiange5426752023-07-03 00:56:39 +080026 else
Dezhen Wanga6806c52023-06-13 19:47:05 +080027 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_GKI10} ${ROOT_DIR}/${FRAGMENT_CONFIG_DEBUG} ${temp_file}
28 fi
Wanwei Jiang51217812022-11-01 20:23:03 +080029 fi
30 rm ${temp_file}
31 else
Dezhen Wanga6806c52023-06-13 19:47:05 +080032 if [[ ${ARCH} == arm ]]; then
33 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG}
34 else
35 if [[ ${GKI_CONFIG} == gki_20 ]]; then
36 if [[ -n ${CHECK_GKI_20} ]]; then
37 local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
38 echo "CONFIG_STMMAC_ETH=n" > ${temp_file}
39 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG} ${temp_file}
40 rm ${temp_file}
41 else
42 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG}
43 fi
Wanwei Jiange5426752023-07-03 00:56:39 +080044 else
Dezhen Wanga6806c52023-06-13 19:47:05 +080045 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_GKI10} ${ROOT_DIR}/${FRAGMENT_CONFIG_DEBUG}
qinglin.li8d41aaf2023-02-07 19:49:44 +080046 fi
Wanwei Jiang51217812022-11-01 20:23:03 +080047 fi
wanwei.jiang6fdd3152022-08-01 20:35:05 +080048 fi
qinglin.li7a994a02022-12-05 15:04:40 +080049
qinglin.li62b23332023-06-25 10:37:41 +080050 if [[ ${UPGRADE_PROJECT} == r || ${UPGRADE_PROJECT} == R ]]; then
51 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_UPGRADE_R}
52 fi
53 if [[ ${UPGRADE_PROJECT} == p || ${UPGRADE_PROJECT} == P ]]; then
54 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_UPGRADE_P}
55 fi
56 if [[ ${UPGRADE_PROJECT} == s || ${UPGRADE_PROJECT} == S ]]; then
57 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_UPGRADE_S}
58 fi
59 if [[ ${UPGRADE_PROJECT} == u || ${UPGRADE_PROJECT} == U ]]; then
60 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_UPGRADE_U}
qinglin.li7a994a02022-12-05 15:04:40 +080061 fi
Dezhen Wangab7ba642023-03-15 14:10:44 +080062
Wanwei Jiangc65e4d32023-03-21 16:24:41 +080063 if [[ ${IN_BUILD_GKI_10} == 1 ]]; then
64 local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
65 echo "CONFIG_MODULE_SIG_ALL=y" >> ${temp_file}
66 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${temp_file}
67 rm ${temp_file}
68 fi
Dezhen Wanga5f456a2023-05-05 17:40:31 +080069
70 if [[ -n ${DEV_CONFIGS} ]]; then
Wanwei Jiang7c582c02023-07-21 18:34:50 +080071 local config_list=$(echo ${DEV_CONFIGS}|sed 's/+/ /g')
Dezhen Wanga5f456a2023-05-05 17:40:31 +080072 for config_name in ${config_list[@]}
73 do
Wanwei Jiang7c582c02023-07-21 18:34:50 +080074 if [[ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/configs/${config_name} ]]; then
75 config_file=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/configs/${config_name}
76 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${config_file}
Dezhen Wanga5f456a2023-05-05 17:40:31 +080077 elif [[ -f ${config_name} ]]; then
78 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${config_name}
79 else
80 echo "ERROR: config file ${config_name} is not in the right path!!"
81 exit
82 fi
83 done
84 fi
qinglin.lib71c3202023-08-01 10:29:53 +080085
86 if [[ ${UPGRADE_PROJECT} == r || ${UPGRADE_PROJECT} == R ]] && [[ "${CONFIG_BOOTIMAGE}" == "user" ]]; then
87 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${AMLOGIC_R_USER_DIFFCONFIG}
88 fi
wanwei.jiang91776952021-11-19 13:10:32 +080089}
90export -f pre_defconfig_cmds
91
92function post_defconfig_cmds() {
Wanwei Jiang2d4f9742022-09-13 11:22:17 +080093 rm ${ROOT_DIR}/${KCONFIG_DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080094}
95export -f post_defconfig_cmds
96
97function read_ext_module_config() {
98 ALL_LINE=""
99 while read LINE
100 do
101 if [[ $LINE != \#* && $LINE != "" ]]; then
102 ALL_LINE="$ALL_LINE"" ""$LINE"
103 fi
104 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800105
106 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +0800107}
108
pengzhao.liua923dea2023-06-25 09:58:20 +0800109function autotest(){
110 if [[ -d ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/.git/hooks/ ]]; then
111 if [[ ! -f ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/.git/hooks/pre-commit ]]; then
112 cp ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/pre-commit ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/.git/hooks/pre-commit
113 cp ${KERNEL_DIR}/scripts/amlogic/pre-commit ${KERNEL_DIR}/.git/hooks/pre-commit
114 chmod +x ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/.git/hooks/pre-commit
115 chmod +x ${KERNEL_DIR}/.git/hooks/pre-commit
116 fi
117 fi
118}
119
wanwei.jiang91776952021-11-19 13:10:32 +0800120function read_ext_module_predefine() {
121 PRE_DEFINE=""
122
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800123 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +0800124 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
125 done
126
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800127 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +0800128 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
129 done
130
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800131 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +0800132}
133
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800134top_ext_drivers=top_ext_drivers
wanwei.jiang91776952021-11-19 13:10:32 +0800135function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800136 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800137 if [[ ! `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800138 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
139 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
140 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
141 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +0800142 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800143
144 for ext_module_config in ${EXT_MODULES_CONFIG}; do
145 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
146 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
147 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
148 done
149 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
150 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
151 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
152
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800153 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
154 if [[ -d ${top_ext_drivers} ]]; then
155 rm -rf ${top_ext_drivers}
156 fi
157 mkdir -p ${top_ext_drivers}
158 fi
159
160 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
161 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
162 fi
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800163 ext_modules=
164 for ext_module in ${EXT_MODULES}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800165 module_abs_path=`readlink -e ${ext_module}`
qinglin.lia40f7b62023-07-26 18:52:35 +0800166 module_rel_path=$(real_path ${module_abs_path} ${ROOT_DIR})
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800167 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
168 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
169 cp -rf ${module_abs_path} ${top_ext_drivers}
170 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
171 fi
172 fi
173 ext_modules="${ext_modules} ${module_rel_path}"
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800174 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800175
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800176 for ext_module_path in ${EXT_MODULES_PATH}; do
177 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800178 while read LINE
179 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800180 module_abs_path=`readlink -e ${LINE}`
qinglin.lia40f7b62023-07-26 18:52:35 +0800181 module_rel_path=$(real_path ${module_abs_path} ${ROOT_DIR})
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800182 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
183 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
184 cp -rf ${module_abs_path} ${top_ext_drivers}
185 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
186 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800187 fi
188 ext_modules="${ext_modules} ${module_rel_path}"
189
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800190 done < ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800191 done
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800192 EXT_MODULES=${ext_modules}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800193
194 local flag=0
195 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
196 for ext_module in ${EXT_MODULES}; do
qinglin.lia40f7b62023-07-26 18:52:35 +0800197 ext_mod_rel=$(real_path ${ext_module} ${KERNEL_DIR})
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800198 if [[ ${flag} -eq "1" ]]; then
199 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
200 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${ext_module}/Makefile
201 sed -i "2 i ${extra_symbols}" ${ext_module}/Makefile
202 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${ext_module}/Makefile
203 echo "${ext_module}/Makefile add: ${extra_symbols}"
204 fi
205 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
206 flag=1
207 done
208 fi
209
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800210 export EXT_MODULES
211 echo EXT_MODULES=${EXT_MODULES}
212
213 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +0800214}
wanwei.jiang91776952021-11-19 13:10:32 +0800215export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +0800216
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800217function extra_cmds() {
Dezhen Wang1176fad2023-06-09 11:22:17 +0800218 echo "========================================================"
219 echo " Running extra build command(s):"
220
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800221 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
222 for ext_module in ${EXT_MODULES}; do
223 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
224 done
225 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800226
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800227 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
228 if [[ -d ${top_ext_drivers} ]]; then
229 rm -rf ${top_ext_drivers}
230 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800231 fi
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800232
233 for FILE in ${FILES}; do
234 if [[ "${FILE}" =~ \.dtbo ]] && \
235 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
236 MKDTIMG_DTBOS="${MKDTIMG_DTBOS} ${DIST_DIR}/${FILE}"
237 fi
238 done
239 export MKDTIMG_DTBOS
240
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800241 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800242 modules_install
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800243 set -x
244
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800245 local src_dir=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
246 pushd ${src_dir}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800247 cp modules.order modules_order.back
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800248 : > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800249 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800250 while read LINE
251 do
252 find -name ${LINE} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800253 done < ${OUT_AMLOGIC_DIR}/modules/modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800254 set -x
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800255 sed -i "s/^\.\///" modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800256 : > ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800257 ext_modules=
258 for ext_module in ${EXT_MODULES}; do
259 if [[ ${ext_module} =~ "../" ]]; then
260 ext_module_old=${ext_module}
261 ext_module=${ext_module//\.\.\//}
262 ext_dir=$(dirname ${ext_module})
263 [[ -d extra/${ext_module} ]] && rm -rf extra/${ext_dir}
264 mkdir -p extra/${ext_dir}
265 cp -rf extra/${ext_module_old} extra/${ext_dir}
266
267 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
268 ext_dir_top=${ext_module%/*}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800269 sed -i "s/\.\.\///g" ${ext_modules_order_file}
270 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800271 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800272 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800273 else
274 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
wanwei.jiangf73b2202022-07-23 16:00:44 +0800275 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800276 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800277 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800278 fi
279 ext_modules="${ext_modules} ${ext_module}"
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800280 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800281 EXT_MODULES=${ext_modules}
282 echo EXT_MODULES=${EXT_MODULES}
283 export EXT_MODULES
wanwei.jiangf73b2202022-07-23 16:00:44 +0800284
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800285 head -n ${ramdisk_last_line} modules.order > vendor_boot_modules
wanwei.jiangf73b2202022-07-23 16:00:44 +0800286 file_last_line=`sed -n "$=" modules.order`
287 let line=${file_last_line}-${ramdisk_last_line}
288 tail -n ${line} modules.order > vendor_dlkm_modules
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800289 export MODULES_LIST=${src_dir}/vendor_boot_modules
290 if [[ "${ARCH}" = "arm64" && -z ${FAST_BUILD} ]]; then
Lei Zhang96efea62022-09-02 14:55:06 +0800291 export VENDOR_DLKM_MODULES_LIST=${src_dir}/vendor_dlkm_modules
292 fi
wanwei.jiangf73b2202022-07-23 16:00:44 +0800293
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800294 popd
wanwei.jiang1d154992022-05-30 14:56:26 +0800295
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800296 if [[ -z ${ANDROID_PROJECT} ]] && [[ -d ${OUT_DIR}/${DTS_EXT_DIR} ]]; then
wanwei.jiang1d154992022-05-30 14:56:26 +0800297 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
298 fi
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800299
300 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
301 : > ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangb2ed83c2022-09-09 14:01:20 +0800302 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800303 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
304 echo "OUT_DIR=${OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
305 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800306 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800307 echo "MODULES_STAGING_DIR=${MODULES_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
308 echo "MODULES_PRIVATE_DIR=${MODULES_PRIVATE_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
309 echo "INITRAMFS_STAGING_DIR=${INITRAMFS_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
310 echo "SYSTEM_DLKM_STAGING_DIR=${SYSTEM_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
311 echo "VENDOR_DLKM_STAGING_DIR=${VENDOR_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
312 echo "MKBOOTIMG_STAGING_DIR=${MKBOOTIMG_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800313 echo "DIST_GKI_DIR=${DIST_GKI_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
314 echo "FULL_KERNEL_VERSION=${FULL_KERNEL_VERSION}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8fe00342023-05-16 22:53:14 +0800315 echo "GKI_MODULES_LOAD_WHITE_LIST=\"${GKI_MODULES_LOAD_WHITE_LIST[*]}\"" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8042e472023-06-06 14:12:32 +0800316 echo "BAZEL=${BAZEL}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800317 fi
Wanwei Jianga07f9a52022-09-30 18:40:40 +0800318
319 for module_path in ${PREBUILT_MODULES_PATH}; do
320 find ${module_path} -type f -name "*.ko" -exec cp {} ${DIST_DIR} \;
321 done
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800322}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800323export -f extra_cmds
324
Wanwei Jiang2218b892023-03-17 17:31:21 +0800325function bazel_extra_cmds() {
326 modules_install
327
328 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
329 : > ${KERNEL_BUILD_VAR_FILE}
330 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
331 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
332 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
333 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8fe00342023-05-16 22:53:14 +0800334 echo "GKI_MODULES_LOAD_WHITE_LIST=\"${GKI_MODULES_LOAD_WHITE_LIST[*]}\"" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8042e472023-06-06 14:12:32 +0800335 echo "BAZEL=${BAZEL}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang2218b892023-03-17 17:31:21 +0800336 fi
337
338 if [[ ${GKI_CONFIG} != gki_20 ]]; then
339 [[ -f ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz ]] && rm -f ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
340 mv ${DIST_DIR}/system_dlkm_staging_archive.tar.gz ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
341 [[ -d ${DIST_DIR}/system_dlkm_gki10 ]] && rm -rf ${DIST_DIR}/system_dlkm_gki10
342 mkdir ${DIST_DIR}/system_dlkm_gki10
343 pushd ${DIST_DIR}/system_dlkm_gki10
344 tar zxf ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
345 find -name "*.ko" | while read module; do
Wanwei Jiang475245b2023-05-10 21:06:52 +0800346 module_name=${module##*/}
Wanwei Jiang2218b892023-03-17 17:31:21 +0800347 if [[ ! `grep "/${module_name}" ${DIST_DIR}/system_dlkm.modules.load` ]]; then
348 rm -f ${module}
349 fi
350 done
351 tar czf ${DIST_DIR}/system_dlkm_staging_archive.tar.gz lib
352 popd
353 rm -rf ${DIST_DIR}/system_dlkm_gki10
354 fi
355}
Wanwei Jiang2218b892023-03-17 17:31:21 +0800356export -f bazel_extra_cmds
357
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800358#$1 dep_file
359#$2 ko
360#$3 install_sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800361function mod_probe() {
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800362 local dep_file=$1
363 local ko=$2
364 local install_sh=$3
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800365 local loop
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800366 for loop in `grep "^${ko}:" ${dep_file} | sed 's/.*://'`; do
367 [[ `grep ${loop} ${install_sh}` ]] && continue
368 mod_probe ${dep_file} ${loop} ${install_sh}
369 echo insmod ${loop} >> ${install_sh}
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800370 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800371}
372
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800373function create_install_and_order_filles() {
374 local modules_dep_file=$1
375 local install_file=$2
376 local modules_order_file=$3
Wanwei Jiang571dde62022-11-17 14:37:41 +0800377 local loop
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800378
379 [[ -f ${install_file} ]] && rm -f ${install_file}
380 touch ${install_file}
381 [[ -f ${install_file}.tmp ]] && rm -f ${install_file}.tmp
382 touch ${install_file}.tmp
383 [[ -f ${modules_order_file} ]] && rm -f ${modules_order_file}
384 touch ${modules_order_file}
385 [[ -f ${modules_order_file}.tmp ]] && rm -f ${modules_order_file}.tmp
386 touch ${modules_order_file}.tmp
387
388 for loop in `cat ${modules_dep_file} | sed 's/:.*//'`; do
389 echo ${loop} >> ${modules_order_file}.tmp
390 [[ `grep ${loop} ${install_file}.tmp` ]] && continue
391 mod_probe ${modules_dep_file} ${loop} ${install_file}.tmp
392 echo insmod ${loop} >> ${install_file}.tmp
Wanwei Jiang571dde62022-11-17 14:37:41 +0800393 done
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800394
395 cat ${install_file}.tmp | awk ' {
396 if (!cnt[$2]) {
397 print $0;
398 cnt[$2]++;
399 }
400 }' > ${install_file}
401
402 cut -d ' ' -f 2 ${install_file} > ${modules_order_file}
Wanwei Jiang571dde62022-11-17 14:37:41 +0800403}
404
wanwei.jiangb12abc82021-12-25 22:17:10 +0800405function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800406 if [[ -n $1 ]]; then
407 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800408 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800409
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800410 cp modules.dep modules.dep.temp
411
412 soc_module=()
413 for chip in ${chips[@]}; do
414 chip_module=`ls amlogic-*-soc-${chip}.ko`
415 soc_module=(${soc_module[@]} ${chip_module[@]})
416 done
417 echo soc_module=${soc_module[*]}
418
419 delete_soc_module=()
420 if [[ ${#soc_module[@]} == 0 ]]; then
421 echo "Use all soc module"
422 else
423 for module in `ls amlogic-*-soc-*`; do
424 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
425 echo Delete soc module: ${module}
426 sed -n "/${module}:/p" modules.dep.temp
427 sed -i "/${module}:/d" modules.dep.temp
428 delete_soc_module=(${delete_soc_module[@]} ${module})
429 fi
430 done
431 echo delete_soc_module=${delete_soc_module[*]}
432 fi
433
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800434 if [[ -n ${CLK_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800435 delete_clk_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800436 for module in `ls amlogic-clk-soc-*`; do
437 if [[ "${CLK_SOC_MODULE}" != "${module}" ]] ; then
438 echo Delete clk soc module: ${module}
439 sed -n "/${module}:/p" modules.dep.temp
440 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800441 delete_clk_soc_modules=(${delete_clk_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800442 fi
443 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800444 echo delete_clk_soc_modules=${delete_clk_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800445 fi
446
447 if [[ -n ${PINCTRL_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800448 delete_pinctrl_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800449 for module in `ls amlogic-pinctrl-soc-*`; do
450 if [[ "${PINCTRL_SOC_MODULE}" != "${module}" ]] ; then
451 echo Delete pinctrl soc module: ${module}
452 sed -n "/${module}:/p" modules.dep.temp
453 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800454 delete_pinctrl_soc_modules=(${delete_pinctrl_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800455 fi
456 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800457 echo delete_pinctrl_soc_modules=${delete_pinctrl_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800458 fi
459
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800460 in_line_i=a
461 delete_type_modules=()
Wanwei Jiang7c582c02023-07-21 18:34:50 +0800462 [[ -z ${TYPE_MODULE_SELECT_MODULE} ]] && TYPE_MODULE_SELECT_MODULE=${TYPE_MODULE_SELECT_MODULE_ANDROID}
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800463 echo "TYPE_MODULE_SELECT_MODULE=${TYPE_MODULE_SELECT_MODULE}"
464 mkdir temp_dir
465 cd temp_dir
466 in_temp_dir=y
467 for element in ${TYPE_MODULE_SELECT_MODULE}; do
468 if [[ ${in_temp_dir} = y ]]; then
469 cd ../
470 rm -r temp_dir
471 in_temp_dir=
472 fi
473 if [[ ${in_line_i} = a ]]; then
474 in_line_i=b
475 type_module=${element}
476 select_modules_i=0
477 select_modules_count=
478 select_modules=
479 elif [[ ${in_line_i} = b ]]; then
480 in_line_i=c
481 select_modules_count=${element}
482 else
483 let select_modules_i+=1
484 select_modules="${select_modules} ${element}"
485 if [[ ${select_modules_i} -eq ${select_modules_count} ]]; then
486 in_line_i=a
487 echo type_module=$type_module select_modules=$select_modules
488 for module in `ls ${type_module}`; do
489 dont_delete_module=0
490 for select_module in ${select_modules}; do
491 if [[ "${select_module}" == "${module}" ]] ; then
492 dont_delete_module=1
493 break;
494 fi
495 done
496 if [[ ${dont_delete_module} != 1 ]]; then
497 echo Delete module: ${module}
498 sed -n "/${module}:/p" modules.dep.temp
499 sed -i "/${module}:/d" modules.dep.temp
500 delete_type_modules=(${delete_type_modules[@]} ${module})
501 fi
502 done
503 echo delete_type_modules=${delete_type_modules[*]}
504 fi
505 fi
506 done
507 if [[ -n ${in_temp_dir} ]]; then
508 cd ../
509 rm -r temp_dir
510 fi
511
512 black_modules=()
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800513 mkdir service_module
514 echo MODULES_SERVICE_LOAD_LIST=${MODULES_SERVICE_LOAD_LIST[@]}
515 BLACK_AND_SERVICE_LIST=(${MODULES_LOAD_BLACK_LIST[@]} ${MODULES_SERVICE_LOAD_LIST[@]})
516 echo ${BLACK_AND_SERVICE_LIST[@]}
517 for module in ${BLACK_AND_SERVICE_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800518 modules=`ls ${module}*`
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800519 black_modules=(${black_modules[@]} ${modules[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800520 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800521 if [[ ${#black_modules[@]} == 0 ]]; then
522 echo "black_modules is null, don't delete modules, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800523 else
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800524 echo black_modules=${black_modules[*]}
525 for module in ${black_modules[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800526 echo Delete module: ${module}
527 sed -n "/${module}:/p" modules.dep.temp
528 sed -i "/${module}:/d" modules.dep.temp
529 done
530 fi
531
Wanwei Jiang475245b2023-05-10 21:06:52 +0800532 GKI_MODULES_LOAD_BLACK_LIST=()
Wanwei Jiang16554d02023-07-14 17:01:00 +0800533 if [[ "${FULL_KERNEL_VERSION}" != "common13-5.15" && "${ARCH}" == "arm64" ]]; then
Wanwei Jiang475245b2023-05-10 21:06:52 +0800534 gki_modules_temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
qinglin.lieafebcf2023-06-27 12:48:22 +0800535 if [[ ${BAZEL} == "1" ]]; then
536 cp $DIST_DIR/system_dlkm.modules.load ${gki_modules_temp_file}
537 else
538 rm -f ${gki_modules_temp_file}
539 cat ${ROOT_DIR}/${KERNEL_DIR}/modules.bzl |grep ko | while read LINE
540 do
541 echo $LINE | sed 's/^[^"]*"//' | sed 's/".*$//' >> ${gki_modules_temp_file}
542 done
543 fi
Wanwei Jiang475245b2023-05-10 21:06:52 +0800544
545 for module in ${GKI_MODULES_LOAD_WHITE_LIST[@]}; do
546 sed -i "/\/${module}/d" ${gki_modules_temp_file}
547 done
548
549 for module in `cat ${gki_modules_temp_file}`; do
550 module=${module##*/}
551 GKI_MODULES_LOAD_BLACK_LIST[${#GKI_MODULES_LOAD_BLACK_LIST[*]}]=${module}
552 done
553 rm -f ${gki_modules_temp_file}
554
555 for module in ${GKI_MODULES_LOAD_BLACK_LIST[@]}; do
556 echo Delete module: ${module}
557 sed -n "/${module}:/p" modules.dep.temp
558 sed -i "/${module}:/d" modules.dep.temp
559 done
560 fi
561
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800562 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
Wanwei Jiang475245b2023-05-10 21:06:52 +0800563 delete_modules=(${delete_soc_module[@]} ${delete_clk_soc_modules[@]} ${delete_pinctrl_soc_modules[@]} ${delete_type_modules[@]} ${black_modules[@]} ${GKI_MODULES_LOAD_BLACK_LIST[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800564 for module in ${delete_modules[@]}; do
Wanwei Jiang16554d02023-07-14 17:01:00 +0800565 if [[ ! -f $module ]]; then
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800566 continue
567 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800568 match=`sed -n "/${module}/=" modules.dep.temp1`
569 for match in ${match[@]}; do
570 match_count=(${match_count[@]} $match)
571 done
572 if [[ ${#match_count[@]} != 0 ]]; then
573 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
Wanwei Jiang7c582c02023-07-21 18:34:50 +0800574 echo ${MODULES_SEQUENCE_LIST}:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800575 exit
576 fi
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800577 if [[ -n ${ANDROID_PROJECT} ]]; then
578 for service_module_temp in ${MODULES_SERVICE_LOAD_LIST[@]}; do
579 if [[ ${module} = ${service_module_temp} ]]; then
580 mv ${module} service_module
581 fi
582 done
583 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800584 rm -f ${module}
585 done
586 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800587 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800588
589 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
590 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800591 sed -n "/${module}:/p" modules.dep.temp
592 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
593 sed -i "/${module}:/d" modules.dep.temp
594 sed -n "/${module}.*\.ko:/p" modules.dep.temp
595 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
596 sed -i "/${module}.*\.ko:/d" modules.dep.temp
597 done
598
Wanwei Jiang571dde62022-11-17 14:37:41 +0800599 if [[ -n ${ANDROID_PROJECT} ]]; then
600 cp modules.dep.temp modules_recovery.dep.temp
601 cp modules.dep.temp1 modules_recovery.dep.temp1
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800602 for module in ${RECOVERY_MODULES_LOAD_LIST[@]}; do
603 echo RECOVERY_MODULES_LOAD_LIST: $module
604 sed -n "/${module}:/p" modules_recovery.dep.temp
605 sed -n "/${module}:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
606 sed -i "/${module}:/d" modules_recovery.dep.temp
607 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp
608 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
609 sed -i "/${module}.*\.ko:/d" modules_recovery.dep.temp
610 done
611 cat modules_recovery.dep.temp >> modules_recovery.dep.temp1
612 cp modules_recovery.dep.temp1 modules_recovery.dep
613 rm modules_recovery.dep.temp
614 rm modules_recovery.dep.temp1
Wanwei Jiang571dde62022-11-17 14:37:41 +0800615 fi
616
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800617 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
618 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
619 sed -n "/${module}:/p" modules.dep.temp
620 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
621 sed -i "/${module}:/d" modules.dep.temp
622 sed -n "/${module}.*\.ko:/p" modules.dep.temp
623 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
624 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800625 done
626
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800627 : > modules.dep.temp2
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800628 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
629 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
630 sed -n "/${module}:/p" modules.dep.temp
631 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
632 sed -i "/${module}:/d" modules.dep.temp
633 sed -n "/${module}.*\.ko:/p" modules.dep.temp
634 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
635 sed -i "/${module}.*\.ko:/d" modules.dep.temp
636 done
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800637 cat modules.dep.temp >> modules.dep.temp1
638 cat modules.dep.temp2 >> modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800639 cp modules.dep.temp1 modules.dep
640 rm modules.dep.temp
641 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800642 rm modules.dep.temp2
643}
644
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800645function calculate_first_line() {
646 local modules_order_file=$1
647 local modules_list=($2)
648 local module
649 local module_lines=()
650 local lines
651 local first_line
652
653 for module in ${modules_list[@]}; do
654 module_lines[${#module_lines[@]}]=`sed -n "/${module}/=" ${modules_order_file}`
Wanwei Jiang9173e462022-09-29 00:58:33 +0800655 done
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800656 lines=`echo ${module_lines[*]} | tr ' ' '\n' | sort -n`
657 first_line=`echo ${lines} | cut -d ' ' -f 1`
658 echo ${first_line}
659}
660
661function calculate_last_line() {
662 local modules_order_file=$1
663 local modules_list=($2)
664 local module
665 local module_lines=()
666 local lines
667 local last_line
668
669 for module in ${modules_list[@]}; do
670 module_lines[${#module_lines[@]}]=`sed -n "/${module}/=" ${modules_order_file}`
671 done
672 lines=`echo ${module_lines[*]} | tr ' ' '\n' | sort -n -r`
673 last_line=`echo ${lines} | cut -d ' ' -f 1`
674 [[ -z ${last_line} ]] && last_line=0
675 echo ${last_line}
676}
677
678function create_ramdisk_vendor_recovery() {
679 modules_order=$1
680 if [[ -n ${ANDROID_PROJECT} ]]; then
681 modules_recovery_order=$2
qinglin.libce54712023-05-08 13:56:31 +0800682 fi
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800683 local modules_list
684
685 modules_list=`echo ${RAMDISK_MODULES_LOAD_LIST[@]}`
686 export ramdisk_last_line=`calculate_last_line ${modules_order} "${modules_list}"`
687 export ramdisk_last_line_add_1=${ramdisk_last_line}
688 let ramdisk_last_line_add_1+=1
689 echo ramdisk_last_line=${ramdisk_last_line}
Wanwei Jiang571dde62022-11-17 14:37:41 +0800690
691 if [[ -n ${ANDROID_PROJECT} ]]; then
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800692 modules_list=`echo ${RECOVERY_MODULES_LOAD_LIST[@]}`
693 recovery_last_line=`calculate_last_line ${modules_recovery_order} "${modules_list}"`
694 echo recovery_last_line=${recovery_last_line}
Wanwei Jiang571dde62022-11-17 14:37:41 +0800695 mkdir recovery
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800696 if [[ ${recovery_last_line} == 0 ]]; then
697 : > recovery/recovery_modules.order
698 : > recovery_install.sh
699 else
700 sed -n "${ramdisk_last_line_add_1},${recovery_last_line}p" ${modules_recovery_order} > recovery/recovery_modules.order
701 cat recovery/recovery_modules.order | xargs cp -t recovery/
702 cat recovery/recovery_modules.order | sed "s/^/insmod &/" > recovery_install.sh
qinglin.lidba324f2023-03-02 19:56:21 +0800703 fi
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800704
Wanwei Jiang571dde62022-11-17 14:37:41 +0800705 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' recovery_install.sh
706 echo "echo Install recovery modules success!" >> recovery_install.sh
707 chmod 755 recovery_install.sh
708 mv recovery_install.sh recovery/
709 fi
710
wanwei.jiang50759e12022-03-24 12:36:17 +0800711 mkdir ramdisk
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800712 head -n ${ramdisk_last_line} ${modules_order} > ramdisk/ramdisk_modules.order
713 echo -e "#!/bin/sh\n\nset -x" > ramdisk/ramdisk_install.sh
714 if [[ ${ramdisk_last_line} != 0 ]]; then
715 cat ramdisk/ramdisk_modules.order | xargs mv -t ramdisk/
716 cat ramdisk/ramdisk_modules.order | sed "s/^/insmod &/" >> ramdisk/ramdisk_install.sh
qinglin.li6e3847d2023-08-09 15:39:05 +0800717 fi
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800718 echo "echo Install ramdisk modules success!" >> ramdisk/ramdisk_install.sh
719 chmod 755 ramdisk/ramdisk_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800720
wanwei.jiang50759e12022-03-24 12:36:17 +0800721 mkdir vendor
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800722 sed -n "${ramdisk_last_line_add_1},$$p" ${modules_order} > vendor/vendor_modules.order
723 echo -e "#!/bin/sh\n\nset -x" > vendor/vendor_install.sh
724 if [[ -s vendor/vendor_modules.order ]]; then
725 cat vendor/vendor_modules.order | xargs mv -t vendor/
726 cat vendor/vendor_modules.order | sed "s/^/insmod &/" >> vendor/vendor_install.sh
727 fi
728 echo "echo Install vendor modules success!" >> vendor/vendor_install.sh
729 chmod 755 vendor/vendor_install.sh
wanwei.jiangb12abc82021-12-25 22:17:10 +0800730}
731
wanwei.jiang612a8882021-11-23 17:12:23 +0800732function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800733 arg1=$1
734
Wanwei Jiang7c582c02023-07-21 18:34:50 +0800735 if [[ ! -f ${MODULES_SEQUENCE_LIST} ]]; then
736 MODULES_SEQUENCE_LIST=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
737 fi
738 source ${MODULES_SEQUENCE_LIST}
739
Wanwei Jiang2218b892023-03-17 17:31:21 +0800740 export OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR:-$(readlink -m ${COMMON_OUT_DIR}/amlogic)}
741 echo $OUT_AMLOGIC_DIR
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800742 rm -rf ${OUT_AMLOGIC_DIR}
743 mkdir -p ${OUT_AMLOGIC_DIR}
744 mkdir -p ${OUT_AMLOGIC_DIR}/modules
745 mkdir -p ${OUT_AMLOGIC_DIR}/ext_modules
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800746 mkdir -p ${OUT_AMLOGIC_DIR}/symbols
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800747
Wanwei Jiang2218b892023-03-17 17:31:21 +0800748 if [[ ${BAZEL} == "1" ]]; then
Wanwei Jiang7c582c02023-07-21 18:34:50 +0800749 BAZEL_OUT=bazel-out/
Wanwei Jiang0df84602023-05-05 14:40:42 +0800750 while read module
751 do
Wanwei Jiang475245b2023-05-10 21:06:52 +0800752 module_name=${module##*/}
Wanwei Jiang16554d02023-07-14 17:01:00 +0800753 if [[ -z ${ANDROID_PROJECT} || `echo ${module} | grep "^kernel\/"` ]]; then
Wanwei Jiang0df84602023-05-05 14:40:42 +0800754 if [[ -f ${DIST_DIR}/${module_name} ]]; then
755 cp ${DIST_DIR}/${module_name} ${OUT_AMLOGIC_DIR}/modules
756 else
Wanwei Jiang7c582c02023-07-21 18:34:50 +0800757 module=`find ${BAZEL_OUT} -name ${module_name} | grep "amlogic_modules_install"`
Wanwei Jiang0df84602023-05-05 14:40:42 +0800758 cp ${module} ${OUT_AMLOGIC_DIR}/modules
759 fi
760 elif [[ `echo ${module} | grep "^extra\/"` ]]; then
Wanwei Jiang16554d02023-07-14 17:01:00 +0800761 module=${module#*/}
762 local match=
763 for ext_module in ${EXT_MODULES_ANDROID_AUTO_LOAD}; do
764 if [[ "${module}" =~ "${ext_module}" ]]; then
765 match=1
766 break
767 fi
768 done
769 if [[ ${match} == 1 ]]; then
770 cp ${DIST_DIR}/${module_name} ${OUT_AMLOGIC_DIR}/modules
771 else
772 cp ${DIST_DIR}/${module_name} ${OUT_AMLOGIC_DIR}/ext_modules
773 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800774 else
Wanwei Jiang0df84602023-05-05 14:40:42 +0800775 echo "warning unrecognized module: ${module}"
Wanwei Jiang2218b892023-03-17 17:31:21 +0800776 fi
Wanwei Jiang0df84602023-05-05 14:40:42 +0800777 done < ${DIST_DIR}/modules.load
Wanwei Jiang2218b892023-03-17 17:31:21 +0800778
Wanwei Jiang7c582c02023-07-21 18:34:50 +0800779 dep_file=`find ${BAZEL_OUT} -name *.dep | grep "amlogic"`
Wanwei Jiang2218b892023-03-17 17:31:21 +0800780 cp ${dep_file} ${OUT_AMLOGIC_DIR}/modules/full_modules.dep
Wanwei Jiang16554d02023-07-14 17:01:00 +0800781 if [[ -n ${ANDROID_PROJECT} ]]; then
782 grep -E "^kernel\/" ${dep_file} > ${OUT_AMLOGIC_DIR}/modules/modules.dep
783 for ext_module in ${EXT_MODULES_ANDROID_AUTO_LOAD}; do
784 cat ${dep_file} | cut -d ':' -f 1 | grep -n "${ext_module}" | cut -d ':' -f 1 | while read line; do
785 sed -n ${line}p ${dep_file} >> ${OUT_AMLOGIC_DIR}/modules/modules.dep
786 done
787 done
788
789 touch ${module} ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
Wanwei Jiang7c582c02023-07-21 18:34:50 +0800790 for order_file in `find ${BAZEL_OUT} -name "modules.order.*" | grep "amlogic"`; do
Wanwei Jiang16554d02023-07-14 17:01:00 +0800791 order_file_dir=${order_file#*/extra/}
792 order_file_dir=${order_file_dir%/modules.order.*}
793 if [[ ! "${EXT_MODULES_ANDROID_AUTO_LOAD}" =~ "${order_file_dir}" ]]; then
794 echo "# ${order_file}" >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
795 cat ${order_file} >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
796 echo >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
797 fi
798 done
799 else
800 cp ${dep_file} ${OUT_AMLOGIC_DIR}/modules/modules.dep
801 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800802 else
803 local MODULES_ROOT_DIR=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
804 pushd ${MODULES_ROOT_DIR}
805 local common_drivers=${COMMON_DRIVERS_DIR##*/}
806 local modules_list=$(find -type f -name "*.ko")
807 for module in ${modules_list}; do
808 if [[ -n ${ANDROID_PROJECT} ]]; then # copy internal build modules
809 if [[ `echo ${module} | grep -E "\.\/kernel\/|\/${common_drivers}\/"` ]]; then
810 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
811 else
Wanwei Jiang16554d02023-07-14 17:01:00 +0800812 local match=
813 for ext_module in ${EXT_MODULES_ANDROID_AUTO_LOAD}; do
814 if [[ "${module}" =~ "${ext_module}" ]]; then
815 match=1
816 break
817 fi
818 done
819 if [[ ${match} == 1 ]]; then
820 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
821 else
822 cp ${module} ${OUT_AMLOGIC_DIR}/ext_modules/
823 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800824 fi
Wanwei Jiang16554d02023-07-14 17:01:00 +0800825 else
Wanwei Jiang2218b892023-03-17 17:31:21 +0800826 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
827 fi
828 done
829
830 if [[ -n ${ANDROID_PROJECT} ]]; then # internal build modules
831 grep -E "^kernel\/|^${common_drivers}\/" modules.dep > ${OUT_AMLOGIC_DIR}/modules/modules.dep
Wanwei Jiang16554d02023-07-14 17:01:00 +0800832 dep_file=modules.dep
833 for ext_module in ${EXT_MODULES_ANDROID_AUTO_LOAD}; do
834 cat ${dep_file} | cut -d ':' -f 1 | grep -n "${ext_module}" | cut -d ':' -f 1 | while read line; do
835 sed -n ${line}p ${dep_file} >> ${OUT_AMLOGIC_DIR}/modules/modules.dep
836 done
837 done
Wanwei Jiang2218b892023-03-17 17:31:21 +0800838 else # all modules, include external modules
839 cp modules.dep ${OUT_AMLOGIC_DIR}/modules
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800840 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800841 popd
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800842 fi
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800843 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang612a8882021-11-23 17:12:23 +0800844 sed -i 's#[^ ]*/##g' modules.dep
845
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800846 echo adjust_sequence_modules_loading
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800847 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800848
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800849 echo create_install_and_order_filles modules.order
850 create_install_and_order_filles modules.dep __install.sh modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800851
852 if [[ -n ${ANDROID_PROJECT} ]]; then
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800853 echo create_install_and_order_filles modules_recovery.order
854 create_install_and_order_filles modules_recovery.dep __install_recovery.sh modules_recovery.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800855 fi
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800856
857 create_ramdisk_vendor_recovery modules.order modules_recovery.order
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800858
Dezhen Wang124ad7d2023-02-06 15:35:14 +0800859 if [[ -n ${MANUAL_INSMOD_MODULE} ]]; then
860 install_file=manual_install.sh
861 else
862 install_file=install.sh
863 fi
864 echo "#!/bin/sh" > ${install_file}
865 echo "cd ramdisk" >> ${install_file}
866 echo "./ramdisk_install.sh" >> ${install_file}
867 echo "cd ../vendor" >> ${install_file}
868 echo "./vendor_install.sh" >> ${install_file}
869 echo "cd ../" >> ${install_file}
870 chmod 755 ${install_file}
wanwei.jiang612a8882021-11-23 17:12:23 +0800871
872 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
873
Wanwei Jiang571dde62022-11-17 14:37:41 +0800874 if [[ -n ${ANDROID_PROJECT} ]]; then
875 rm __install_recovery.sh __install_recovery.sh.tmp
876 fi
877
wanwei.jiang236e9a32021-12-07 16:34:14 +0800878 popd
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800879
Wanwei Jiang2218b892023-03-17 17:31:21 +0800880 if [[ ${BAZEL} == "1" ]]; then
881 cp ${DIST_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
882
Wanwei Jiang7c582c02023-07-21 18:34:50 +0800883 find ${BAZEL_OUT} -name *.ko | grep "unstripped" | while read module; do
Wanwei Jiang2218b892023-03-17 17:31:21 +0800884 cp ${module} ${OUT_AMLOGIC_DIR}/symbols
Wanwei Jiang2218b892023-03-17 17:31:21 +0800885 done
Wanwei Jiang2218b892023-03-17 17:31:21 +0800886 else
887 cp ${OUT_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
888 find ${OUT_DIR} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
889 for ext_module in ${EXT_MODULES}; do
890 find ${COMMON_OUT_DIR}/${ext_module} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
891 done
892 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800893}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800894export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800895
Wanwei Jiang2218b892023-03-17 17:31:21 +0800896function rename_external_module_name() {
897 local external_coppied
Wanwei Jiang92c89432023-05-15 23:57:16 +0800898 sed 's/^[\t ]*\|[\t ]*$//g' ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/modules_rename.txt | sed '/^#/d;/^$/d' | sed 's/[[:space:]][[:space:]]*/ /g' | while read module_line; do
Wanwei Jiang2218b892023-03-17 17:31:21 +0800899 target_module_name=`echo ${module_line%%:*} | sed '/^#/d;/^$/d'`
900 modules_name=`echo ${module_line##:*} | sed '/^#/d;/^$/d'`
901 [[ -f ${OUT_AMLOGIC_DIR}/ext_modules/${target_module_name} ]] && external_coppied=1
Wanwei Jiang16554d02023-07-14 17:01:00 +0800902 echo target_module_name=$target_module_name modules_name=$modules_name external_coppied=$external_coppied
Wanwei Jiang2218b892023-03-17 17:31:21 +0800903 for module in ${modules_name}; do
904 echo module=$module
905 if [[ -f ${OUT_AMLOGIC_DIR}/ext_modules/${module} ]]; then
906 if [[ -z ${external_coppied} ]]; then
907 cp ${OUT_AMLOGIC_DIR}/ext_modules/${module} ${OUT_AMLOGIC_DIR}/ext_modules/${target_module_name}
908 external_coppied=1
909 fi
910 rm -f ${OUT_AMLOGIC_DIR}/ext_modules/${module}
911 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800912 done
913 external_coppied=
Wanwei Jiang2218b892023-03-17 17:31:21 +0800914 done
915}
916export -f rename_external_module_name
917
Dezhen Wang5ad119c2023-05-04 15:07:49 +0800918# function rebuild_rootfs can rebuild the rootfs if rootfs_base.cpio.gz.uboot exist
wanwei.jiang612a8882021-11-23 17:12:23 +0800919function rebuild_rootfs() {
Wanwei Jiang2218b892023-03-17 17:31:21 +0800920 echo
921 echo "========================================================"
922 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
923 echo "Rebuild rootfs in order to install modules!"
924 else
925 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
926 return
927 fi
928
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800929 pushd ${OUT_AMLOGIC_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800930
Lei Zhang475c17b2022-03-03 11:08:50 +0800931 local ARCH=arm64
932 if [[ -n $1 ]]; then
933 ARCH=$1
934 fi
935
wanwei.jiang612a8882021-11-23 17:12:23 +0800936 rm rootfs -rf
937 mkdir rootfs
Wanwei Jiang2218b892023-03-17 17:31:21 +0800938 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800939 cd rootfs
940 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
941 gunzip rootfs_base.cpio.gz
942 mkdir rootfs
943 cd rootfs
dongqing.li6fd83502023-06-15 09:59:40 +0800944 fakeroot cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800945 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
946 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800947 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800948 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800949
dongqing.li6fd83502023-06-15 09:59:40 +0800950 find . | fakeroot cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
wanwei.jiang612a8882021-11-23 17:12:23 +0800951 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800952 mkimage -A ${ARCH} -O linux -T ramdisk -C none -d rootfs_new.cpio.gz rootfs_new.cpio.gz.uboot
wanwei.jiang612a8882021-11-23 17:12:23 +0800953 mv rootfs_new.cpio.gz.uboot ../
954 cd ../
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800955 cp rootfs_new.cpio.gz.uboot ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800956
957 popd
958}
959export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800960
Dezhen Wang5ad119c2023-05-04 15:07:49 +0800961# function check_undefined_symbol can check the dependence among the modules
962# parameter:
963# --modules_depend
wanwei.jiang403c9942021-11-30 18:29:02 +0800964function check_undefined_symbol() {
Wanwei Jiang2218b892023-03-17 17:31:21 +0800965 if [[ ${MODULES_DEPEND} != "1" ]]; then
966 return
967 fi
968
969 echo "========================================================"
970 echo "print modules depend"
971
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800972 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800973 echo
974 echo "========================================================"
975 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800976 if [[ -n ${LLVM} ]]; then
977 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
978 elif [[ -n ${CROSS_COMPILE} ]]; then
979 compile_tool=${CROSS_COMPILE}
980 else
981 echo "can't find compile tool"
982 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800983 ${compile_tool}nm ${DIST_DIR}/vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
Wanwei Jiangd71aca62023-09-13 18:14:07 +0800984 cp modules.order module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800985 cp ramdisk/*.ko .
986 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800987 while read LINE
988 do
989 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800990 for U in `${compile_tool}nm ${LINE} | grep " U " | sed -e 's/^\s*//' -e 's/\s*$//' | cut -d ' ' -f 2`
wanwei.jiang403c9942021-11-30 18:29:02 +0800991 do
992 #echo ${U}
993 U_v=`grep -w ${U} vmlinux_T.txt`
994 in_vmlinux=0
995 if [ -n "${U_v}" ];
996 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800997 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800998 in_vmlinux=1
999 continue
1000 fi
1001 in_module=0
1002 MODULE=
1003 while read LINE1
1004 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +08001005 U_m=`${compile_tool}nm ${LINE1} | grep -E " T | D | B | R " | grep -v "\.cfi_jt" | grep "${U}"`
wanwei.jiang403c9942021-11-30 18:29:02 +08001006 if [ -n "${U_m}" ];
1007 then
1008 in_module=1
1009 MODULE=${LINE1}
1010 fi
1011 done < module_list.txt
1012 if [ ${in_module} -eq "1" ];
1013 then
1014 printf "\t%-50s <== %s\n" ${U} ${MODULE}
1015 continue
1016 else
1017 printf "\t%-50s <== none\n" ${U}
1018 fi
1019 done
1020 echo
1021 echo
1022 done < module_list.txt
1023 rm vmlinux_T.txt
1024 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +08001025 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +08001026 popd
1027}
1028export -f check_undefined_symbol
Dezhen Wangd40fa552023-04-11 16:13:27 +08001029
1030function reorganized_abi_symbol_list_file() { # delete the extra information but symbol
1031 cat $@ | sed '/^$/d' >> ${symbol_tmp} # remove blank lines
1032 sed -i '/^\[/d' ${symbol_tmp} # remove the title
1033 sed -i '/^\#/d' ${symbol_tmp} # remove the comment
1034}
1035export -f reorganized_abi_symbol_list_file
1036
1037function abi_symbol_list_detect () { # detect symbol information that should be submitted or fix
Dezhen Wang3e94b292023-07-10 20:14:57 +08001038 if [[ "${FULL_KERNEL_VERSION}" = "common13-5.15" ]]; then
1039 symbol_file1=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic
1040 symbol_file2=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.10
1041 symbol_file3=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.debug
1042 symbol_file4=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.illegal
1043 else
1044 symbol_file1=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/${FULL_KERNEL_VERSION}_abi_gki_aarch64_amlogic
1045 symbol_file2=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/${FULL_KERNEL_VERSION}_abi_gki_aarch64_amlogic.10
1046 symbol_file3=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/${FULL_KERNEL_VERSION}_abi_gki_aarch64_amlogic.debug
1047 symbol_file4=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/${FULL_KERNEL_VERSION}_abi_gki_aarch64_amlogic.illegal
1048 fi
Dezhen Wangd40fa552023-04-11 16:13:27 +08001049
1050 file_list=("${symbol_file1} ${symbol_file2} ${symbol_file3} ${symbol_file4}")
1051 for file in ${file_list}
1052 do
1053 local symbol_tmp=`mktemp tmp.XXXXXXXXXXXX`
1054 reorganized_abi_symbol_list_file "${file}"
1055
1056 if [[ -s ${symbol_tmp} ]]; then
1057 if [[ ${file} =~ abi_gki_aarch64_amlogic.illegal ]]; then
1058 echo "WARNING: The symbols in ${file} are illegal, please deal with them as soon as possible!!!"
1059 else
1060 echo "WARNING: The symbols in ${file} should be submit to google!!!"
1061 fi
1062 cat ${symbol_tmp}
1063 echo -e "\n------------------------------------------------------------"
1064 fi
1065 rm ${symbol_tmp}
1066 done
1067}
1068export -f abi_symbol_list_detect
1069
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001070# adjust_config_action concerns three types of cmd:
1071# parameters:
1072# --menuconfig: make menuconfig manually based on different gki standard
1073# --basicconfig: only config kernel with google original gki_defconfig as base
1074# --check_defconfig: contrast the defconfig generated in out directory with gki_defconfig and show the difference
1075function adjust_config_action () {
1076 if [[ -n ${MENUCONFIG} ]] || [[ -n ${BASICCONFIG} ]] || [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
1077 # ${ROOT_DIR}/${BUILD_DIR}/config.sh menuconfig
1078 HERMETIC_TOOLCHAIN=0
Dezhen Wang2edb5232023-07-06 14:15:33 +08001079
1080 if [[ "${FULL_KERNEL_VERSION}" = "common13-5.15" ]]; then
1081 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
1082 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
1083 else
1084 source ${ROOT_DIR}/${BUILD_CONFIG}
1085 export COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}})
1086 export OUT_DIR=$(readlink -m ${COMMON_OUT_DIR}/${KERNEL_DIR})
1087 fi
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001088
1089 orig_config=$(mktemp)
1090 orig_defconfig=$(mktemp)
1091 out_config="${OUT_DIR}/.config"
1092 out_defconfig="${OUT_DIR}/defconfig"
1093 changed_config=$(mktemp)
1094 changed_defconfig=$(mktemp)
1095
1096 if [[ -n ${BASICCONFIG} ]]; then # config kernel with gki_defconfig or make menuconfig based on it
1097 set -x
1098 defconfig_name=`basename ${GKI_BASE_CONFIG}`
1099 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${defconfig_name})
1100 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1101 cp ${out_config} ${orig_config}
1102 cp ${out_defconfig} ${orig_defconfig}
1103 if [ "${BASICCONFIG}" = "m" ]; then # make menuconfig based on gki_defconfig
1104 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
1105 fi
1106 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1107 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
1108 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
1109 if [ "${ARCH}" = "arm" ]; then
1110 cp ${out_defconfig} ${GKI_BASE_CONFIG}
1111 fi
1112 set +x # show the difference between the gki_defconfig and the config after make menuconfig
1113 echo
1114 echo "========================================================"
1115 echo "==================== .config diff ===================="
1116 cat ${changed_config}
1117 echo "==================== defconfig diff ===================="
1118 cat ${changed_defconfig}
1119 echo "========================================================"
1120 echo
1121 elif [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then # compare the defconfig generated in out directory with gki_defconfig
1122 set -x
1123 pre_defconfig_cmds
1124 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1125 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig) # export the defconfig to out directory
1126 diff -u ${ROOT_DIR}/${GKI_BASE_CONFIG} ${OUT_DIR}/defconfig
1127 post_defconfig_cmds
1128 set +x
1129 else # make menuconfig based on config with different gki standard
1130 set -x
1131 pre_defconfig_cmds
1132 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1133 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1134 cp ${out_config} ${orig_config}
1135 cp ${out_defconfig} ${orig_defconfig}
1136 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
1137 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1138 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
1139 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
1140 post_defconfig_cmds
1141 set +x
1142 echo
1143 echo "========================================================"
1144 echo "if the config follows GKI2.0, please add it to the file amlogic_gki.fragment manually"
1145 echo "if the config follows GKI1.0 optimize, please add it to the file amlogic_gki.10 manually"
1146 echo "if the config follows GKI1.0 debug, please add it to the file amlogic_gki.debug manually"
1147 echo "==================== .config diff ===================="
1148 cat ${changed_config}
1149 echo "==================== defconfig diff ===================="
1150 cat ${changed_defconfig}
1151 echo "========================================================"
1152 echo
1153 fi
1154 rm -f ${orig_config} ${changed_config} ${orig_defconfig} ${changed_defconfig}
1155 exit
1156 fi
1157}
1158export -f adjust_config_action
1159
1160# function build_part_of_kernel can only build part of kernel such as image modules or dtbs
1161# parameter:
1162# --image: only build image
1163# --modules: only build kernel modules
1164# --dtbs: only build dtbs
1165function build_part_of_kernel () {
1166 if [[ -n ${IMAGE} ]] || [[ -n ${MODULES} ]] || [[ -n ${DTB_BUILD} ]]; then
1167 old_path=${PATH}
Dezhen Wangc5c95c32023-07-09 23:14:12 +08001168 if [[ "${FULL_KERNEL_VERSION}" = "common13-5.15" ]]; then
1169 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
1170 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
1171 else
1172 source ${ROOT_DIR}/${BUILD_CONFIG}
1173 export COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}})
1174 export OUT_DIR=$(readlink -m ${COMMON_OUT_DIR}/${KERNEL_DIR})
1175 export DIST_DIR=$(readlink -m ${DIST_DIR:-${COMMON_OUT_DIR}/dist})
1176 tool_args+=("LLVM=1")
1177 tool_args+=("DEPMOD=${DEPMOD}")
1178 fi
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001179
1180 if [[ ! -f ${OUT_DIR}/.config ]]; then
1181 pre_defconfig_cmds
1182 set -x
1183 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1184 set +x
1185 post_defconfig_cmds
1186 fi
1187
1188 if [[ -n ${IMAGE} ]]; then
1189 set -x
1190 if [ "${ARCH}" = "arm64" ]; then
1191 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) Image)
1192 elif [ "${ARCH}" = "arm" ]; then
1193 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) LOADADDR=0x108000 uImage)
1194 fi
1195 set +x
1196 fi
1197 mkdir -p ${DIST_DIR}
1198 if [[ -n ${DTB_BUILD} ]]; then
1199 set -x
1200 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) dtbs)
1201 set +x
1202 fi
1203 if [[ -n ${MODULES} ]]; then
1204 export MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
1205 rm -rf ${MODULES_STAGING_DIR}
1206 mkdir -p ${MODULES_STAGING_DIR}
1207 if [ "${DO_NOT_STRIP_MODULES}" != "1" ]; then
1208 MODULE_STRIP_FLAG="INSTALL_MOD_STRIP=1"
1209 fi
1210 if [[ `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
1211 set -x
1212 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) modules)
1213 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} "${MAKE_ARGS[@]}" modules_install)
1214 set +x
1215 fi
1216 echo EXT_MODULES=$EXT_MODULES
1217 prepare_module_build
1218 if [[ -z "${SKIP_EXT_MODULES}" ]] && [[ -n "${EXT_MODULES}" ]]; then
1219 echo "========================================================"
1220 echo " Building external modules and installing them into staging directory"
1221 KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
1222 for EXT_MOD in ${EXT_MODULES}; do
qinglin.lia40f7b62023-07-26 18:52:35 +08001223 EXT_MOD_REL=$(real_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001224 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
1225 set -x
1226 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1227 O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}"
1228 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1229 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
1230 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
1231 INSTALL_MOD_DIR="extra/${EXT_MOD}" \
1232 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" \
1233 "${MAKE_ARGS[@]}" modules_install
1234 set +x
1235 done
1236 fi
1237 export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
1238 set -x
1239 extra_cmds
1240 set +x
1241 MODULES=$(find ${MODULES_STAGING_DIR} -type f -name "*.ko")
1242 cp -p ${MODULES} ${DIST_DIR}
1243
1244 new_path=${PATH}
1245 PATH=${old_path}
1246 echo "========================================================"
1247 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
1248 echo "Rebuild rootfs in order to install modules!"
1249 rebuild_rootfs ${ARCH}
1250 else
1251 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
1252 fi
1253 PATH=${new_path}
1254 fi
1255 if [ -n "${DTS_EXT_DIR}" ]; then
1256 if [ -d "${ROOT_DIR}/${DTS_EXT_DIR}" ]; then
qinglin.lia40f7b62023-07-26 18:52:35 +08001257 DTS_EXT_DIR=$(real_path ${ROOT_DIR}/${DTS_EXT_DIR} ${KERNEL_DIR})
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001258 if [ -d ${OUT_DIR}/${DTS_EXT_DIR} ]; then
1259 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
1260 fi
1261 fi
1262 fi
1263 for FILE in ${FILES}; do
1264 if [ -f ${OUT_DIR}/${FILE} ]; then
1265 echo " $FILE"
1266 cp -p ${OUT_DIR}/${FILE} ${DIST_DIR}/
1267 elif [[ "${FILE}" =~ \.dtb|\.dtbo ]] && \
1268 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
1269 # DTS_EXT_DIR is recalculated before to be relative to KERNEL_DIR
1270 echo " $FILE"
1271 cp -p "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" "${DIST_DIR}/"
1272 else
1273 echo " $FILE is not a file, skipping"
1274 fi
1275 done
1276 exit
1277 fi
1278}
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001279export -f build_part_of_kernel
1280
1281function export_env_variable () {
1282 export ABI BUILD_CONFIG LTO KMI_SYMBOL_LIST_STRICT_MODE CHECK_DEFCONFIG MANUAL_INSMOD_MODULE ARCH
qinglin.libce54712023-05-08 13:56:31 +08001283 export KERNEL_DIR COMMON_DRIVERS_DIR BUILD_DIR ANDROID_PROJECT GKI_CONFIG UPGRADE_PROJECT ANDROID_VERSION FAST_BUILD CHECK_GKI_20 DEV_CONFIGS
qinglin.li7cf37c02023-07-04 16:06:04 +08001284 export FULL_KERNEL_VERSION BAZEL PREBUILT_GKI KASAN
qinglin.lib71c3202023-08-01 10:29:53 +08001285 export AMLOGIC_R_USER_DIFFCONFIG=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/configs/amlogic_r_user_diff.fragment
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001286
1287 echo ROOT_DIR=$ROOT_DIR
1288 echo ABI=${ABI} BUILD_CONFIG=${BUILD_CONFIG} LTO=${LTO} KMI_SYMBOL_LIST_STRICT_MODE=${KMI_SYMBOL_LIST_STRICT_MODE} CHECK_DEFCONFIG=${CHECK_DEFCONFIG} MANUAL_INSMOD_MODULE=${MANUAL_INSMOD_MODULE}
qinglin.libce54712023-05-08 13:56:31 +08001289 echo KERNEL_DIR=${KERNEL_DIR} COMMON_DRIVERS_DIR=${COMMON_DRIVERS_DIR} BUILD_DIR=${BUILD_DIR} ANDROID_PROJECT=${ANDROID_PROJECT} GKI_CONFIG=${GKI_CONFIG} UPGRADE_PROJECT=${UPGRADE_PROJECT} ANDROID_VERSION=${ANDROID_VERSION} FAST_BUILD=${FAST_BUILD} CHECK_GKI_20=${CHECK_GKI_20}
qinglin.li7cf37c02023-07-04 16:06:04 +08001290 echo FULL_KERNEL_VERSION=${FULL_KERNEL_VERSION} BAZEL=${BAZEL} PREBUILT_GKI=${PREBUILT_GKI} KASAN=${KASAN}
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001291 echo MENUCONFIG=${MENUCONFIG} BASICCONFIG=${BASICCONFIG} IMAGE=${IMAGE} MODULES=${MODULES} DTB_BUILD=${DTB_BUILD}
qinglin.lib71c3202023-08-01 10:29:53 +08001292 echo AMLOGIC_R_USER_DIFFCONFIG=${AMLOGIC_R_USER_DIFFCONFIG} CONFIG_BOOTIMAGE=${CONFIG_BOOTIMAGE}
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001293}
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001294export -f export_env_variable
Dezhen Wang850c0d22023-05-31 19:26:20 +08001295
1296function handle_input_parameters () {
1297 VA=
1298 ARGS=()
1299 for i in "$@"
1300 do
1301 case $i in
1302 --arch)
1303 ARCH=$2
1304 VA=1
1305 shift
1306 ;;
1307 --abi)
1308 ABI=1
1309 shift
1310 ;;
1311 --build_config)
1312 BUILD_CONFIG=$2
1313 VA=1
1314 shift
1315 ;;
1316 --lto)
1317 LTO=$2
1318 VA=1
1319 shift
1320 ;;
Dezhen Wang850c0d22023-05-31 19:26:20 +08001321 --menuconfig)
1322 MENUCONFIG=1
1323 shift
1324 ;;
1325 --basicconfig)
1326 if [ "$2" = "m" ] || [ "$2" = "n" ]; then
1327 BASICCONFIG=$2
1328 else
1329 BASICCONFIG="m"
1330 fi
1331 VA=1
1332 shift
1333 ;;
1334 --image)
1335 IMAGE=1
1336 shift
1337 ;;
1338 --modules)
1339 MODULES=1
1340 shift
1341 break
1342 ;;
1343 --dtbs)
1344 DTB_BUILD=1
1345 shift
1346 ;;
1347 --build_dir)
1348 BUILD_DIR=$2
1349 VA=1
1350 shift
1351 ;;
1352 --check_defconfig)
1353 CHECK_DEFCONFIG=1
1354 shift
1355 ;;
1356 --modules_depend)
1357 MODULES_DEPEND=1
1358 shift
1359 ;;
1360 --android_project)
1361 ANDROID_PROJECT=$2
1362 VA=1
1363 shift
1364 ;;
1365 --gki_20)
1366 GKI_CONFIG=gki_20
1367 shift
1368 ;;
1369 --gki_10)
1370 GKI_CONFIG=gki_10
1371 shift
1372 ;;
Dezhen Wang850c0d22023-05-31 19:26:20 +08001373 --fast_build)
1374 FAST_BUILD=1
1375 shift
1376 ;;
1377 --upgrade)
qinglin.li62b23332023-06-25 10:37:41 +08001378 UPGRADE_PROJECT=$2
Dezhen Wang850c0d22023-05-31 19:26:20 +08001379 ANDROID_VERSION=$2
qinglin.li62b23332023-06-25 10:37:41 +08001380 GKI_CONFIG=
Dezhen Wang850c0d22023-05-31 19:26:20 +08001381 VA=1
1382 shift
1383 ;;
1384 --manual_insmod_module)
1385 MANUAL_INSMOD_MODULE=1
1386 shift
1387 ;;
Dezhen Wang850c0d22023-05-31 19:26:20 +08001388 --check_gki_20)
1389 CHECK_GKI_20=1
1390 GKI_CONFIG=gki_20
1391 LTO=none
1392 shift
1393 ;;
1394 --dev_config)
1395 DEV_CONFIGS=$2
1396 VA=1
1397 shift
1398 ;;
Wanwei Jiang0a519f62023-06-30 16:56:28 +08001399 --use_prebuilt_gki)
1400 PREBUILT_GKI=$2
1401 VA=1
Dezhen Wang850c0d22023-05-31 19:26:20 +08001402 shift
1403 ;;
qinglin.li7cf37c02023-07-04 16:06:04 +08001404 --kasan)
1405 KASAN=1
1406 LTO=none
1407 shift
1408 ;;
Dezhen Wang850c0d22023-05-31 19:26:20 +08001409 -h|--help)
1410 show_help
1411 exit 0
1412 ;;
1413 *)
1414 if [[ -n $1 ]];
1415 then
1416 if [[ -z ${VA} ]];
1417 then
1418 ARGS+=("$1")
1419 fi
1420 fi
1421 VA=
1422 shift
1423 ;;
1424 esac
1425 done
1426}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001427export -f handle_input_parameters
1428
1429function set_default_parameters () {
1430 if [ "${ARCH}" = "arm" ]; then
1431 ARGS+=("LOADADDR=0x108000")
1432 else
1433 ARCH=arm64
1434 fi
1435
1436 if [[ -z "${ABI}" ]]; then
1437 ABI=0
1438 fi
1439 if [[ -z "${LTO}" ]]; then
1440 LTO=thin
1441 fi
1442 if [[ -n ${CHECK_GKI_20} && -z ${ANDROID_PROJECT} ]]; then
1443 ANDROID_PROJECT=ohm
1444 fi
1445
1446 if [[ -z "${BUILD_CONFIG}" ]]; then
1447 if [ "${ARCH}" = "arm64" ]; then
1448 BUILD_CONFIG=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/build.config.amlogic
1449 elif [ "${ARCH}" = "arm" ]; then
1450 BUILD_CONFIG=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/build.config.amlogic32
1451 fi
1452 fi
1453 if [[ -z "${BUILD_DIR}" ]]; then
1454 BUILD_DIR=build
1455 fi
1456
1457 version_message=$(grep -rn BRANCH= ${KERNEL_DIR}/build.config.constants)
1458 version_message="common${version_message##*android}"
1459 if [[ -n ${FULL_KERNEL_VERSION} ]]; then
1460 if [[ "${FULL_KERNEL_VERSION}" != "${version_message}" ]]; then
1461 echo "kernel version is not match!!"
1462 exit
1463 fi
1464 else
1465 FULL_KERNEL_VERSION=${version_message}
1466 fi
1467
1468 if [[ -z ${BAZEL} ]]; then
qinglin.li62b23332023-06-25 10:37:41 +08001469 [[ "${FULL_KERNEL_VERSION}" != "common13-5.15" && "${ARCH}" == "arm64" ]] && BAZEL=1
Dezhen Wang850c0d22023-05-31 19:26:20 +08001470 fi
1471
1472 auto_patch_to_common_dir
1473
qinglin.lieafebcf2023-06-27 12:48:22 +08001474 if [[ ! -f ${BUILD_DIR}/build_abi.sh && ${BAZEL} == 0 ]]; then
Dezhen Wang850c0d22023-05-31 19:26:20 +08001475 echo "The directory of build does not exist";
1476 exit
1477 fi
1478
1479 ROOT_DIR=$(readlink -f $(dirname $0))
1480 if [[ ! -f ${ROOT_DIR}/${KERNEL_DIR}/init/main.c ]]; then
1481 ROOT_DIR=`pwd`
1482 if [[ ! -f ${ROOT_DIR}/${KERNEL_DIR}/init/main.c ]]; then
1483 echo "the file path of $0 is incorrect"
1484 exit
1485 fi
1486 fi
1487 export ROOT_DIR
1488
1489 CHECK_DEFCONFIG=${CHECK_DEFCONFIG:-0}
1490 MODULES_DEPEND=${MODULES_DEPEND:-0}
1491 if [[ ! -f ${KERNEL_BUILD_VAR_FILE} ]]; then
1492 export KERNEL_BUILD_VAR_FILE=`mktemp /tmp/kernel.XXXXXXXXXXXX`
1493 RM_KERNEL_BUILD_VAR_FILE=1
1494 fi
1495
Dezhen Wang850c0d22023-05-31 19:26:20 +08001496 export CROSS_COMPILE=
1497
1498 if [ "${ABI}" -eq "1" ]; then
1499 export OUT_DIR_SUFFIX="_abi"
1500 else
1501 OUT_DIR_SUFFIX=
1502 fi
1503}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001504export -f set_default_parameters
1505
1506function auto_patch_to_common_dir () {
1507 #first auto patch when param parse end
Dezhen Wang850c0d22023-05-31 19:26:20 +08001508
1509 if [[ -f ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/auto_patch/auto_patch.sh ]]; then
1510 export PATCH_PARM
1511 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/auto_patch/auto_patch.sh ${FULL_KERNEL_VERSION}
Dezhen Wang4e608102023-07-05 18:55:30 +08001512 if [[ $? -ne 0 ]]; then
1513 echo "auto patch error!"
1514 exit 1
1515 fi
Dezhen Wang850c0d22023-05-31 19:26:20 +08001516 fi
1517
1518 if [[ ${ONLY_PATCH} -eq "1" ]]; then
1519 cd ${CURRENT_DIR}
1520 exit
1521 fi
1522}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001523export -f auto_patch_to_common_dir
1524
Dezhen Wang850c0d22023-05-31 19:26:20 +08001525function build_kernel_for_different_cpu_architecture () {
1526 set -x
1527 if [[ $ARCH == arm64 ]]; then
1528 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} ${DEFCONFIG}
1529 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} headers_install &&
1530 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} Image -j12 &&
1531 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} modules -j12 &&
1532 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} INSTALL_MOD_STRIP=1 modules_install -j12 &&
1533 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} dtbs -j12 || exit
Dezhen Wang850c0d22023-05-31 19:26:20 +08001534 elif [[ $ARCH == arm ]]; then
1535 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} ${DEFCONFIG}
1536 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} headers_install &&
1537 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} uImage -j12 &&
1538 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} modules -j12 &&
1539 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} INSTALL_MOD_STRIP=1 modules_install -j12 &&
1540 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} dtbs -j12 || exit
Dezhen Wang850c0d22023-05-31 19:26:20 +08001541 elif [[ $ARCH == riscv ]]; then
1542 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} ${DEFCONFIG}
1543 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} headers_install &&
1544 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} Image -j12 &&
1545 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} modules -j12 &&
1546 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} modules_install -j12 &&
1547 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} dtbs -j12 || exit
Dezhen Wang850c0d22023-05-31 19:26:20 +08001548 fi
1549 cp ${OUT_DIR}/arch/${ARCH}/boot/Image* ${DIST_DIR}
1550 cp ${OUT_DIR}/arch/${ARCH}/boot/uImage* ${DIST_DIR}
1551 cp ${OUT_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/boot/dts/amlogic/*.dtb ${DIST_DIR}
1552 cp ${OUT_DIR}/vmlinux ${DIST_DIR}
1553 set +x
1554}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001555export -f build_kernel_for_different_cpu_architecture
1556
1557function build_ext_modules() {
1558 for EXT_MOD in ${EXT_MODULES}; do
qinglin.lia40f7b62023-07-26 18:52:35 +08001559 EXT_MOD_REL=$(real_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
Dezhen Wang850c0d22023-05-31 19:26:20 +08001560 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
1561
1562 set -x
1563 make ARCH=${ARCH} -C ${ROOT_DIR}/${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1564 O=${OUT_DIR} ${TOOL_ARGS} -j12 || exit
1565 make ARCH=${ARCH} -C ${ROOT_DIR}/${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1566 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
1567 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
1568 INSTALL_MOD_DIR="extra/${EXT_MOD}" \
1569 INSTALL_MOD_STRIP=1 \
1570 modules_install -j12 || exit
1571 set +x
1572 done
1573}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001574export -f build_ext_modules
1575
Dezhen Wang1176fad2023-06-09 11:22:17 +08001576function copy_modules_files_to_dist_dir () {
Dezhen Wang850c0d22023-05-31 19:26:20 +08001577 MODULES=$(find ${MODULES_STAGING_DIR} -type f -name "*.ko")
1578 if [ -n "${MODULES}" ]; then
1579 if [ -n "${IN_KERNEL_MODULES}" -o -n "${EXT_MODULES}" -o -n "${EXT_MODULES_MAKEFILE}" ]; then
1580 echo "========================================================"
1581 echo " Copying modules files"
1582 for module in ${MODULES}; do
1583 cp ${module} ${DIST_DIR}
1584 done
1585 if [ "${COMPRESS_MODULES}" = "1" ]; then
1586 echo " Archiving modules to ${MODULES_ARCHIVE}"
1587 tar --transform="s,.*/,," -czf ${DIST_DIR}/${MODULES_ARCHIVE} ${MODULES[@]}
1588 fi
1589 fi
Dezhen Wang850c0d22023-05-31 19:26:20 +08001590 fi
1591}
Dezhen Wang1176fad2023-06-09 11:22:17 +08001592export -f copy_modules_files_to_dist_dir
Dezhen Wang850c0d22023-05-31 19:26:20 +08001593
Dezhen Wang1176fad2023-06-09 11:22:17 +08001594function copy_files_to_dist_dir () {
1595 echo "========================================================"
1596 echo " Copying files"
1597 for FILE in ${FILES}; do
1598 if [ -f ${OUT_DIR}/${FILE} ]; then
1599 echo " $FILE"
1600 cp -p ${OUT_DIR}/${FILE} ${DIST_DIR}/
1601 elif [[ "${FILE}" =~ \.dtb|\.dtbo ]] && \
1602 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
1603 # DTS_EXT_DIR is recalculated before to be relative to KERNEL_DIR
1604 echo " $FILE"
1605 cp -p "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" "${DIST_DIR}/"
1606 else
1607 echo " $FILE is not a file, skipping"
1608 fi
1609 done
1610}
1611export -f copy_files_to_dist_dir
1612
1613function make_dtbo() {
1614 if [[ -n "${BUILD_DTBO_IMG}" ]]; then
1615 echo "========================================================"
1616 echo " Creating dtbo image at ${DIST_DIR}/dtbo.img"
1617 (
1618 cd ${OUT_DIR}
1619 mkdtimg create "${DIST_DIR}"/dtbo.img ${MKDTIMG_FLAGS} ${MKDTIMG_DTBOS}
1620 )
1621 fi
1622}
1623export -f make_dtbo
1624
1625function installing_UAPI_kernel_headers () {
1626 if [ -z "${SKIP_CP_KERNEL_HDR}" ]; then
1627 echo "========================================================"
1628 echo " Installing UAPI kernel headers:"
1629 mkdir -p "${KERNEL_UAPI_HEADERS_DIR}/usr"
1630 make -C ${OUT_DIR} O=${OUT_DIR} ${TOOL_ARGS} \
1631 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" "${MAKE_ARGS[@]}" \
1632 headers_install
1633 # The kernel makefiles create files named ..install.cmd and .install which
1634 # are only side products. We don't want those. Let's delete them.
1635 find ${KERNEL_UAPI_HEADERS_DIR} \( -name ..install.cmd -o -name .install \) -exec rm '{}' +
1636 KERNEL_UAPI_HEADERS_TAR=${DIST_DIR}/kernel-uapi-headers.tar.gz
1637 echo " Copying kernel UAPI headers to ${KERNEL_UAPI_HEADERS_TAR}"
1638 tar -czf ${KERNEL_UAPI_HEADERS_TAR} --directory=${KERNEL_UAPI_HEADERS_DIR} usr/
1639 fi
1640}
1641export -f installing_UAPI_kernel_headers
1642
1643function copy_kernel_headers_to_compress () {
1644 if [ -z "${SKIP_CP_KERNEL_HDR}" ] ; then
1645 echo "========================================================"
1646 KERNEL_HEADERS_TAR=${DIST_DIR}/kernel-headers.tar.gz
1647 echo " Copying kernel headers to ${KERNEL_HEADERS_TAR}"
1648 pushd $ROOT_DIR/$KERNEL_DIR
1649 find arch include $OUT_DIR -name *.h -print0 \
1650 | tar -czf $KERNEL_HEADERS_TAR \
1651 --absolute-names \
1652 --dereference \
1653 --transform "s,.*$OUT_DIR,," \
1654 --transform "s,^,kernel-headers/," \
1655 --null -T -
1656 popd
1657 fi
1658}
1659export -f copy_kernel_headers_to_compress
1660
1661function set_default_parameters_for_32bit () {
1662 tool_args=()
1663 prebuilts_paths=(
1664 CLANG_PREBUILT_BIN
1665 CLANGTOOLS_PREBUILT_BIN
1666 RUST_PREBUILT_BIN
1667 LZ4_PREBUILTS_BIN
1668 DTC_PREBUILTS_BIN
1669 LIBUFDT_PREBUILTS_BIN
1670 BUILDTOOLS_PREBUILT_BIN
1671 )
1672 echo CC_CLANG=$CC_CLANG
1673 if [[ $CC_CLANG -eq "1" ]]; then
1674 source ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
1675 if [[ -n "${LLVM}" ]]; then
1676 tool_args+=("LLVM=1")
1677 # Reset a bunch of variables that the kernel's top level Makefile does, just
1678 # in case someone tries to use these binaries in this script such as in
1679 # initramfs generation below.
1680 HOSTCC=clang
1681 HOSTCXX=clang++
1682 CC=clang
1683 LD=ld.lld
1684 AR=llvm-ar
1685 NM=llvm-nm
1686 OBJCOPY=llvm-objcopy
1687 OBJDUMP=llvm-objdump
1688 OBJSIZE=llvm-size
1689 READELF=llvm-readelf
1690 STRIP=llvm-strip
1691 else
1692 if [ -n "${HOSTCC}" ]; then
1693 tool_args+=("HOSTCC=${HOSTCC}")
1694 fi
1695
1696 if [ -n "${CC}" ]; then
1697 tool_args+=("CC=${CC}")
1698 if [ -z "${HOSTCC}" ]; then
1699 tool_args+=("HOSTCC=${CC}")
1700 fi
1701 fi
1702
1703 if [ -n "${LD}" ]; then
1704 tool_args+=("LD=${LD}" "HOSTLD=${LD}")
1705 fi
1706
1707 if [ -n "${NM}" ]; then
1708 tool_args+=("NM=${NM}")
1709 fi
1710
1711 if [ -n "${OBJCOPY}" ]; then
1712 tool_args+=("OBJCOPY=${OBJCOPY}")
1713 fi
1714 fi
1715
1716 if [ -n "${DTC}" ]; then
1717 tool_args+=("DTC=${DTC}")
1718 fi
1719 for prebuilt_bin in "${prebuilts_paths[@]}"; do
1720 prebuilt_bin=\${${prebuilt_bin}}
1721 eval prebuilt_bin="${prebuilt_bin}"
1722 if [ -n "${prebuilt_bin}" ]; then
1723 PATH=${PATH//"${ROOT_DIR}\/${prebuilt_bin}:"}
1724 PATH=${ROOT_DIR}/${prebuilt_bin}:${PATH} # add the clang tool to env PATH
1725 fi
1726 done
1727 export PATH
1728 elif [[ -n $CROSS_COMPILE_TOOL ]]; then
1729 export CROSS_COMPILE=${CROSS_COMPILE_TOOL}
1730 fi
1731
1732 # Have host compiler use LLD and compiler-rt.
1733 LLD_COMPILER_RT="-fuse-ld=lld --rtlib=compiler-rt"
1734 if [[ -n "${NDK_TRIPLE}" ]]; then
1735 NDK_DIR=${ROOT_DIR}/prebuilts/ndk-r23
1736
1737 if [[ ! -d "${NDK_DIR}" ]]; then
1738 # Kleaf/Bazel will checkout the ndk to a different directory than
1739 # build.sh.
1740 NDK_DIR=${ROOT_DIR}/external/prebuilt_ndk
1741 if [[ ! -d "${NDK_DIR}" ]]; then
1742 echo "ERROR: NDK_TRIPLE set, but unable to find prebuilts/ndk." 1>&2
1743 echo "Did you forget to checkout prebuilts/ndk?" 1>&2
1744 exit 1
1745 fi
1746 fi
1747 USERCFLAGS="--target=${NDK_TRIPLE} "
1748 USERCFLAGS+="--sysroot=${NDK_DIR}/toolchains/llvm/prebuilt/linux-x86_64/sysroot "
1749 # Some kernel headers trigger -Wunused-function for unused static functions
1750 # with clang; GCC does not warn about unused static inline functions. The
1751 # kernel sets __attribute__((maybe_unused)) on such functions when W=1 is
1752 # not set.
1753 USERCFLAGS+="-Wno-unused-function "
1754 # To help debug these flags, consider commenting back in the following, and
1755 # add `echo $@ > /tmp/log.txt` and `2>>/tmp/log.txt` to the invocation of $@
1756 # in scripts/cc-can-link.sh.
1757 #USERCFLAGS+=" -Wl,--verbose -v"
1758 # We need to set -fuse-ld=lld for Android's build env since AOSP LLVM's
1759 # clang is not configured to use LLD by default, and BFD has been
1760 # intentionally removed. This way CC_CAN_LINK can properly link the test in
1761 # scripts/cc-can-link.sh.
1762 USERLDFLAGS="${LLD_COMPILER_RT} "
1763 USERLDFLAGS+="--target=${NDK_TRIPLE} "
1764 else
1765 USERCFLAGS="--sysroot=/dev/null"
1766 fi
1767
1768 #setting_the_default_output_dir
1769 export COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}})
1770 export OUT_DIR=$(readlink -m ${COMMON_OUT_DIR}/${KERNEL_DIR})
1771 export DIST_DIR=$(readlink -m ${DIST_DIR:-${COMMON_OUT_DIR}/dist})
1772 export UNSTRIPPED_DIR=${DIST_DIR}/unstripped
1773 export UNSTRIPPED_MODULES_ARCHIVE=unstripped_modules.tar.gz
1774 export MODULES_ARCHIVE=modules.tar.gz
1775 export MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
1776 export MODULES_PRIVATE_DIR=$(readlink -m ${COMMON_OUT_DIR}/private)
1777 export KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
1778 export INITRAMFS_STAGING_DIR=${MODULES_STAGING_DIR}/initramfs_staging
1779 export SYSTEM_DLKM_STAGING_DIR=${MODULES_STAGING_DIR}/system_dlkm_staging
1780 export VENDOR_DLKM_STAGING_DIR=${MODULES_STAGING_DIR}/vendor_dlkm_staging
1781 export MKBOOTIMG_STAGING_DIR="${MODULES_STAGING_DIR}/mkbootimg_staging"
1782 export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
1783
1784 tool_args+=("LOADADDR=0x108000")
1785 tool_args+=("DEPMOD=depmod")
Wanwei Jiang0bde3122023-07-20 10:24:07 +08001786 tool_args+=("KCONFIG_EXT_MODULES_PREFIX=${KCONFIG_EXT_MODULES_PREFIX}")
1787 tool_args+=("KCONFIG_EXT_PREFIX=${KCONFIG_EXT_PREFIX}")
Dezhen Wang1176fad2023-06-09 11:22:17 +08001788 TOOL_ARGS="${tool_args[@]}"
1789
1790 mkdir -p ${OUT_DIR}
1791 if [ "${SKIP_RM_OUTDIR}" != "1" ] ; then
1792 rm -rf ${COMMON_OUT_DIR}
1793 fi
1794
1795 source ${ROOT_DIR}/build/kernel/build_utils.sh
1796
1797 DTS_EXT_DIR=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/boot/dts/amlogic
qinglin.lia40f7b62023-07-26 18:52:35 +08001798 DTS_EXT_DIR=$(real_path ${ROOT_DIR}/${DTS_EXT_DIR} ${KERNEL_DIR})
Dezhen Wang1176fad2023-06-09 11:22:17 +08001799 export dtstree=${DTS_EXT_DIR}
1800 export DTC_INCLUDE=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/include
1801
1802 EXT_MODULES="
1803 ${EXT_MODULES}
1804 "
1805
1806 EXT_MODULES_CONFIG="
1807 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/ext_modules_config
1808 "
1809
1810 EXT_MODULES_PATH="
1811 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/ext_modules_path
1812 "
1813
1814 POST_KERNEL_BUILD_CMDS="prepare_module_build"
1815 EXTRA_CMDS="extra_cmds"
1816
1817 IN_KERNEL_MODULES=1
1818}
1819export -f set_default_parameters_for_32bit
1820
1821function generating_test_mappings_zip () {
1822 echo "========================================================"
1823 echo " Generating test_mappings.zip"
1824 TEST_MAPPING_FILES=${OUT_DIR}/test_mapping_files.txt
1825 find ${ROOT_DIR} -name TEST_MAPPING \
1826 -not -path "${ROOT_DIR}/\.git*" \
1827 -not -path "${ROOT_DIR}/\.repo*" \
1828 -not -path "${ROOT_DIR}/out*" \
1829 > ${TEST_MAPPING_FILES}
1830 soong_zip -o ${DIST_DIR}/test_mappings.zip -C ${ROOT_DIR} -l ${TEST_MAPPING_FILES}
1831}
1832export -f generating_test_mappings_zip
1833
Dezhen Wang42c6bf82023-07-20 10:16:49 +08001834function setting_up_for_build () {
1835 echo "========================================================"
1836 echo " Setting up for build"
1837 if [ "${SKIP_MRPROPER}" != "1" ] ; then
1838 set -x
1839 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" mrproper)
1840 set +x
1841 fi
1842}
1843export -f setting_up_for_build
1844
1845function build_kernel_for_32bit () {
1846 set -x
1847 if [ "${SKIP_DEFCONFIG}" != "1" ] ; then
1848 (cd ${KERNEL_DIR} && make ARCH=arm ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1849 fi
1850
1851 echo "========================================================"
1852 echo " Building kernel"
1853
1854 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} uImage -j12 &&
1855 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} modules -j12 &&
1856 if [[ -n ${ANDROID_PROJECT} ]]; then
1857 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} android_overlay_dt.dtbo -j12
1858 fi
1859 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} dtbs -j12 || exit
1860 set +x
1861}
1862export -f build_kernel_for_32bit
1863
1864function modules_install_for_32bit () {
1865 set -x
1866 if [ "${BUILD_INITRAMFS}" = "1" -o -n "${IN_KERNEL_MODULES}" ]; then
1867 echo "========================================================"
1868 echo " Installing kernel modules into staging directory"
1869
1870 (cd ${OUT_DIR} && make ARCH=arm O=${OUT_DIR} ${TOOL_ARGS} INSTALL_MOD_STRIP=1 \
1871 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} modules_install)
1872 fi
1873 set +x
1874}
1875export -f modules_install_for_32bit
Dezhen Wangad3fffe2023-08-24 11:07:55 +08001876
1877function build_android_32bit () {
1878
1879 source ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/build.config.amlogic32
1880
1881 pre_defconfig_cmds
1882
1883 CC_CLANG=1
1884
1885 set_default_parameters_for_32bit
1886
1887 export USERCFLAGS USERLDFLAGS BRANCH KMI_GENERATION
1888 export HOSTCC HOSTCXX CC LD AR NM OBJCOPY OBJDUMP OBJSIZE READELF STRIP PATH KCONFIG_CONFIG
1889 export KERNEL_DIR ROOT_DIR OUT_DIR TOOL_ARGS MODULE_STRIP_FLAG DEPMOD INSTALL_MOD_DIR COMMON_OUT_DIR
1890
1891 setting_up_for_build
1892
1893 mkdir -p ${DIST_DIR} ${MODULES_STAGING_DIR}
1894
1895 build_kernel_for_32bit
1896
1897 post_defconfig_cmds
1898
1899 eval ${POST_KERNEL_BUILD_CMDS}
1900
1901 modules_install_for_32bit
1902
1903 build_ext_modules
1904
1905 set -x
1906 eval ${EXTRA_CMDS}
1907 set +x
1908
1909 copy_files_to_dist_dir
1910
1911 installing_UAPI_kernel_headers
1912
1913 copy_kernel_headers_to_compress
1914
1915 copy_modules_files_to_dist_dir
1916
1917 make_dtbo
1918
1919}
1920export -f build_android_32bit