blob: 0c62f7f2ff3b84ec23648aa4c751cb2557c7f675 [file] [log] [blame]
wanwei.jiang91776952021-11-19 13:10:32 +08001#!/bin/bash
2
3function pre_defconfig_cmds() {
wanwei.jiangff4dccd2022-08-14 01:14:51 +08004 export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
Lei Zhang2853aa52022-08-23 09:40:06 +08005 if [ "${ARCH}" = "arm" ]; then
6 export PATH=${PATH}:/usr/bin/
7 fi
wanwei.jiangff4dccd2022-08-14 01:14:51 +08008
Wanwei Jiang51217812022-11-01 20:23:03 +08009 if [[ -z ${ANDROID_PROJECT} ]]; then
10 local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
11 echo "CONFIG_AMLOGIC_SERIAL_MESON=y" > ${temp_file}
qinglin.li931a53f2022-11-23 11:09:03 +080012 echo "CONFIG_DEVTMPFS=y" >> ${temp_file}
Wanwei Jiang51217812022-11-01 20:23:03 +080013 if [[ ${GKI_CONFIG} == gki_20 ]]; then
14 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}
15 elif [[ ${GKI_CONFIG} == gki_10 ]]; then
16 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} ${temp_file}
17 elif [[ ${GKI_CONFIG} == gki_debug ]]; then
18 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}
19 fi
20 rm ${temp_file}
21 else
22 if [[ ${GKI_CONFIG} == gki_20 ]]; then
23 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}
24 elif [[ ${GKI_CONFIG} == gki_10 ]]; 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} ${ROOT_DIR}/${FRAGMENT_CONFIG_GKI10}
26 elif [[ ${GKI_CONFIG} == gki_debug ]]; then
27 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}
28 fi
wanwei.jiang6fdd3152022-08-01 20:35:05 +080029 fi
qinglin.li7a994a02022-12-05 15:04:40 +080030
31 if [[ -n ${UPGRADE_PROJECT} ]]; then
32 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}
33 fi
wanwei.jiang91776952021-11-19 13:10:32 +080034}
35export -f pre_defconfig_cmds
36
37function post_defconfig_cmds() {
wanwei.jiang1482c872022-05-13 20:33:51 +080038 if [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
39 check_defconfig
40 fi
Wanwei Jiang2d4f9742022-09-13 11:22:17 +080041 rm ${ROOT_DIR}/${KCONFIG_DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080042}
43export -f post_defconfig_cmds
44
45function read_ext_module_config() {
46 ALL_LINE=""
47 while read LINE
48 do
49 if [[ $LINE != \#* && $LINE != "" ]]; then
50 ALL_LINE="$ALL_LINE"" ""$LINE"
51 fi
52 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +080053
54 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080055}
56
57function read_ext_module_predefine() {
58 PRE_DEFINE=""
59
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080060 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080061 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
62 done
63
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080064 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080065 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
66 done
67
wanwei.jiang5c861ae2022-04-21 00:51:50 +080068 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080069}
70
wanwei.jiang8d4a5132022-04-28 16:43:54 +080071top_ext_drivers=top_ext_drivers
wanwei.jiang91776952021-11-19 13:10:32 +080072function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +080073 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
Wanwei Jiang0a74fb12022-12-09 16:27:40 +080074 if [[ ! `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +080075 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
76 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
77 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
78 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +080079 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +080080
81 for ext_module_config in ${EXT_MODULES_CONFIG}; do
82 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
83 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
84 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
85 done
86 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
87 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
88 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
89
wanwei.jiangc663c4c2022-06-16 14:41:23 +080090 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
91 if [[ -d ${top_ext_drivers} ]]; then
92 rm -rf ${top_ext_drivers}
93 fi
94 mkdir -p ${top_ext_drivers}
95 fi
96
97 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
98 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
99 fi
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800100 ext_modules=
101 for ext_module in ${EXT_MODULES}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800102 module_abs_path=`readlink -e ${ext_module}`
103 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
104 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
105 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
106 cp -rf ${module_abs_path} ${top_ext_drivers}
107 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
108 fi
109 fi
110 ext_modules="${ext_modules} ${module_rel_path}"
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800111 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800112
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800113 for ext_module_path in ${EXT_MODULES_PATH}; do
114 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800115 while read LINE
116 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800117 module_abs_path=`readlink -e ${LINE}`
118 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800119 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
120 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
121 cp -rf ${module_abs_path} ${top_ext_drivers}
122 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
123 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800124 fi
125 ext_modules="${ext_modules} ${module_rel_path}"
126
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800127 done < ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800128 done
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800129 EXT_MODULES=${ext_modules}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800130
131 local flag=0
132 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
133 for ext_module in ${EXT_MODULES}; do
134 ext_mod_rel=$(rel_path ${ext_module} ${KERNEL_DIR})
135 if [[ ${flag} -eq "1" ]]; then
136 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
137 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${ext_module}/Makefile
138 sed -i "2 i ${extra_symbols}" ${ext_module}/Makefile
139 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${ext_module}/Makefile
140 echo "${ext_module}/Makefile add: ${extra_symbols}"
141 fi
142 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
143 flag=1
144 done
145 fi
146
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800147 export EXT_MODULES
148 echo EXT_MODULES=${EXT_MODULES}
149
150 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +0800151}
152
153export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +0800154
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800155function extra_cmds() {
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800156 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
157 for ext_module in ${EXT_MODULES}; do
158 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
159 done
160 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800161
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800162 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
163 if [[ -d ${top_ext_drivers} ]]; then
164 rm -rf ${top_ext_drivers}
165 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800166 fi
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800167
168 for FILE in ${FILES}; do
169 if [[ "${FILE}" =~ \.dtbo ]] && \
170 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
171 MKDTIMG_DTBOS="${MKDTIMG_DTBOS} ${DIST_DIR}/${FILE}"
172 fi
173 done
174 export MKDTIMG_DTBOS
175
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800176 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800177 modules_install
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800178 set -x
179
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800180 local src_dir=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
181 pushd ${src_dir}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800182 cp modules.order modules_order.back
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800183 : > modules.order
184 while read LINE
185 do
186 find -name ${LINE} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800187 done < ${OUT_AMLOGIC_DIR}/modules/modules.order
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800188 sed -i "s/^\.\///" modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800189 : > ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800190 ext_modules=
191 for ext_module in ${EXT_MODULES}; do
192 if [[ ${ext_module} =~ "../" ]]; then
193 ext_module_old=${ext_module}
194 ext_module=${ext_module//\.\.\//}
195 ext_dir=$(dirname ${ext_module})
196 [[ -d extra/${ext_module} ]] && rm -rf extra/${ext_dir}
197 mkdir -p extra/${ext_dir}
198 cp -rf extra/${ext_module_old} extra/${ext_dir}
199
200 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
201 ext_dir_top=${ext_module%/*}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800202 sed -i "s/\.\.\///g" ${ext_modules_order_file}
203 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800204 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800205 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800206 else
207 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
wanwei.jiangf73b2202022-07-23 16:00:44 +0800208 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800209 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800210 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800211 fi
212 ext_modules="${ext_modules} ${ext_module}"
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800213 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800214 EXT_MODULES=${ext_modules}
215 echo EXT_MODULES=${EXT_MODULES}
216 export EXT_MODULES
wanwei.jiangf73b2202022-07-23 16:00:44 +0800217
218 head -n ${ramdisk_last_line} modules.order > system_dlkm_modules
219 file_last_line=`sed -n "$=" modules.order`
220 let line=${file_last_line}-${ramdisk_last_line}
221 tail -n ${line} modules.order > vendor_dlkm_modules
222 export MODULES_LIST=${src_dir}/system_dlkm_modules
Wanwei Jianga5edc532022-12-18 17:25:59 +0800223 if [ "${ARCH}" = "arm64" -a -z ${FAST_BUILD} ]; then
Lei Zhang96efea62022-09-02 14:55:06 +0800224 export VENDOR_DLKM_MODULES_LIST=${src_dir}/vendor_dlkm_modules
225 fi
wanwei.jiangf73b2202022-07-23 16:00:44 +0800226
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800227 popd
wanwei.jiang1d154992022-05-30 14:56:26 +0800228
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800229 if [[ -z ${ANDROID_PROJECT} ]] && [[ -d ${OUT_DIR}/${DTS_EXT_DIR} ]]; then
wanwei.jiang1d154992022-05-30 14:56:26 +0800230 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
231 fi
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800232
233 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
234 : > ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangb2ed83c2022-09-09 14:01:20 +0800235 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800236 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
237 echo "OUT_DIR=${OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
238 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800239 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800240 echo "MODULES_STAGING_DIR=${MODULES_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
241 echo "MODULES_PRIVATE_DIR=${MODULES_PRIVATE_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
242 echo "INITRAMFS_STAGING_DIR=${INITRAMFS_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
243 echo "SYSTEM_DLKM_STAGING_DIR=${SYSTEM_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
244 echo "VENDOR_DLKM_STAGING_DIR=${VENDOR_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
245 echo "MKBOOTIMG_STAGING_DIR=${MKBOOTIMG_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800246 fi
Wanwei Jianga07f9a52022-09-30 18:40:40 +0800247
248 for module_path in ${PREBUILT_MODULES_PATH}; do
249 find ${module_path} -type f -name "*.ko" -exec cp {} ${DIST_DIR} \;
250 done
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800251}
252
253export -f extra_cmds
254
wanwei.jiang612a8882021-11-23 17:12:23 +0800255function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800256 local ko=$1
257 local loop
qinglin.lia284a932022-09-21 18:07:38 +0800258 for loop in `grep "^$ko:" modules.dep | sed 's/.*://'`; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800259 mod_probe $loop
260 echo insmod $loop >> __install.sh
261 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800262}
263
wanwei.jiangb12abc82021-12-25 22:17:10 +0800264function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800265 if [[ -n $1 ]]; then
266 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800267 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800268
269 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
270 cp modules.dep modules.dep.temp
271
272 soc_module=()
273 for chip in ${chips[@]}; do
274 chip_module=`ls amlogic-*-soc-${chip}.ko`
275 soc_module=(${soc_module[@]} ${chip_module[@]})
276 done
277 echo soc_module=${soc_module[*]}
278
279 delete_soc_module=()
280 if [[ ${#soc_module[@]} == 0 ]]; then
281 echo "Use all soc module"
282 else
283 for module in `ls amlogic-*-soc-*`; do
284 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
285 echo Delete soc module: ${module}
286 sed -n "/${module}:/p" modules.dep.temp
287 sed -i "/${module}:/d" modules.dep.temp
288 delete_soc_module=(${delete_soc_module[@]} ${module})
289 fi
290 done
291 echo delete_soc_module=${delete_soc_module[*]}
292 fi
293
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800294 if [[ -n ${CLK_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800295 delete_clk_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800296 for module in `ls amlogic-clk-soc-*`; do
297 if [[ "${CLK_SOC_MODULE}" != "${module}" ]] ; then
298 echo Delete clk soc module: ${module}
299 sed -n "/${module}:/p" modules.dep.temp
300 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800301 delete_clk_soc_modules=(${delete_clk_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800302 fi
303 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800304 echo delete_clk_soc_modules=${delete_clk_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800305 fi
306
307 if [[ -n ${PINCTRL_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800308 delete_pinctrl_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800309 for module in `ls amlogic-pinctrl-soc-*`; do
310 if [[ "${PINCTRL_SOC_MODULE}" != "${module}" ]] ; then
311 echo Delete pinctrl soc module: ${module}
312 sed -n "/${module}:/p" modules.dep.temp
313 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800314 delete_pinctrl_soc_modules=(${delete_pinctrl_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800315 fi
316 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800317 echo delete_pinctrl_soc_modules=${delete_pinctrl_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800318 fi
319
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800320 in_line_i=a
321 delete_type_modules=()
322 echo "TYPE_MODULE_SELECT_MODULE=${TYPE_MODULE_SELECT_MODULE}"
323 mkdir temp_dir
324 cd temp_dir
325 in_temp_dir=y
326 for element in ${TYPE_MODULE_SELECT_MODULE}; do
327 if [[ ${in_temp_dir} = y ]]; then
328 cd ../
329 rm -r temp_dir
330 in_temp_dir=
331 fi
332 if [[ ${in_line_i} = a ]]; then
333 in_line_i=b
334 type_module=${element}
335 select_modules_i=0
336 select_modules_count=
337 select_modules=
338 elif [[ ${in_line_i} = b ]]; then
339 in_line_i=c
340 select_modules_count=${element}
341 else
342 let select_modules_i+=1
343 select_modules="${select_modules} ${element}"
344 if [[ ${select_modules_i} -eq ${select_modules_count} ]]; then
345 in_line_i=a
346 echo type_module=$type_module select_modules=$select_modules
347 for module in `ls ${type_module}`; do
348 dont_delete_module=0
349 for select_module in ${select_modules}; do
350 if [[ "${select_module}" == "${module}" ]] ; then
351 dont_delete_module=1
352 break;
353 fi
354 done
355 if [[ ${dont_delete_module} != 1 ]]; then
356 echo Delete module: ${module}
357 sed -n "/${module}:/p" modules.dep.temp
358 sed -i "/${module}:/d" modules.dep.temp
359 delete_type_modules=(${delete_type_modules[@]} ${module})
360 fi
361 done
362 echo delete_type_modules=${delete_type_modules[*]}
363 fi
364 fi
365 done
366 if [[ -n ${in_temp_dir} ]]; then
367 cd ../
368 rm -r temp_dir
369 fi
370
371 black_modules=()
wanwei.jiang50759e12022-03-24 12:36:17 +0800372 for module in ${MODULES_LOAD_BLACK_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800373 modules=`ls ${module}*`
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800374 black_modules=(${black_modules[@]} ${modules[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800375 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800376 if [[ ${#black_modules[@]} == 0 ]]; then
377 echo "black_modules is null, don't delete modules, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800378 else
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800379 echo black_modules=${black_modules[*]}
380 for module in ${black_modules[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800381 echo Delete module: ${module}
382 sed -n "/${module}:/p" modules.dep.temp
383 sed -i "/${module}:/d" modules.dep.temp
384 done
385 fi
386
387 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800388 delete_modules=(${delete_soc_module[@]} ${delete_clk_soc_modules[@]} ${delete_pinctrl_soc_modules[@]} ${delete_type_modules[@]} ${black_modules[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800389 for module in ${delete_modules[@]}; do
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800390 if [[ ! `ls $module` ]]; then
391 continue
392 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800393 match=`sed -n "/${module}/=" modules.dep.temp1`
394 for match in ${match[@]}; do
395 match_count=(${match_count[@]} $match)
396 done
397 if [[ ${#match_count[@]} != 0 ]]; then
398 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800399 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800400 exit
401 fi
402 rm -f ${module}
403 done
404 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800405 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800406
407 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
408 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800409 sed -n "/${module}:/p" modules.dep.temp
410 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
411 sed -i "/${module}:/d" modules.dep.temp
412 sed -n "/${module}.*\.ko:/p" modules.dep.temp
413 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
414 sed -i "/${module}.*\.ko:/d" modules.dep.temp
415 done
416
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800417 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
418 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
419 sed -n "/${module}:/p" modules.dep.temp
420 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
421 sed -i "/${module}:/d" modules.dep.temp
422 sed -n "/${module}.*\.ko:/p" modules.dep.temp
423 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
424 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800425 done
426
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800427 if [ -f modules.dep.temp2 ]; then
428 rm modules.dep.temp2
429 fi
430 touch modules.dep.temp2
431 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
432 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
433 sed -n "/${module}:/p" modules.dep.temp
434 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
435 sed -i "/${module}:/d" modules.dep.temp
436 sed -n "/${module}.*\.ko:/p" modules.dep.temp
437 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
438 sed -i "/${module}.*\.ko:/d" modules.dep.temp
439 done
440
441 cat modules.dep.temp >> modules.dep.temp1
442 cat modules.dep.temp2 >> modules.dep.temp1
443
wanwei.jiangb12abc82021-12-25 22:17:10 +0800444 cp modules.dep.temp1 modules.dep
445 rm modules.dep.temp
446 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800447 rm modules.dep.temp2
448}
449
qinglin.lie5b951e2022-06-07 16:13:44 +0800450create_ramdisk_vendor() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800451 install_temp=$1
452 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
Wanwei Jiang9173e462022-09-29 00:58:33 +0800453 ramdisk_module_i=${#RAMDISK_MODULES_LOAD_LIST[@]}
454 while [ ${ramdisk_module_i} -gt 0 ]; do
455 let ramdisk_module_i--
456 echo ramdisk_module_i=$ramdisk_module_i ${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
457 if [[ `grep "${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}" ${install_temp}` ]]; then
458 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
459 break;
460 fi
461 done
462 # last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800463 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
464 for line in ${last_ramdisk_module_line}; do
465 ramdisk_last_line=${line}
466 done
wanwei.jiangf73b2202022-07-23 16:00:44 +0800467 export ramdisk_last_line
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800468 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800469 mkdir ramdisk
wanwei.jiangf73b2202022-07-23 16:00:44 +0800470 cat ramdisk_install.sh | cut -d ' ' -f 2 > ramdisk/ramdisk_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800471 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800472
qinglin.lie5b951e2022-06-07 16:13:44 +0800473 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' ramdisk_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800474 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
475 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800476 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800477
478 file_last_line=`sed -n "$=" ${install_temp}`
479 let line=${file_last_line}-${ramdisk_last_line}
480 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800481 mkdir vendor
wanwei.jiangf73b2202022-07-23 16:00:44 +0800482 cat vendor_install.sh | cut -d ' ' -f 2 > vendor/vendor_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800483 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800484
qinglin.lie5b951e2022-06-07 16:13:44 +0800485 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' vendor_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800486 echo "echo Install vendor modules success!" >> vendor_install.sh
487 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800488 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800489}
490
wanwei.jiang612a8882021-11-23 17:12:23 +0800491function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800492 arg1=$1
493
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800494 rm -rf ${OUT_AMLOGIC_DIR}
495 mkdir -p ${OUT_AMLOGIC_DIR}
496 mkdir -p ${OUT_AMLOGIC_DIR}/modules
497 mkdir -p ${OUT_AMLOGIC_DIR}/ext_modules
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800498
499 local MODULES_ROOT_DIR=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
500 pushd ${MODULES_ROOT_DIR}
501 local common_drivers=${COMMON_DRIVERS_DIR##*/}
502 local modules_list=$(find -type f -name "*.ko")
wanwei.jiang67a191d2022-04-18 20:39:13 +0800503 for module in ${modules_list}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800504 if [[ -n ${ANDROID_PROJECT} ]]; then # copy internal build modules
505 if [[ `echo ${module} | grep -E "\.\/kernel\/|\/${common_drivers}\/"` ]]; then
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800506 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800507 else
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800508 cp ${module} ${OUT_AMLOGIC_DIR}/ext_modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800509 fi
510 else # copy all modules, include external modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800511 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800512 fi
wanwei.jiang67a191d2022-04-18 20:39:13 +0800513 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800514
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800515 if [[ -n ${ANDROID_PROJECT} ]]; then # internal build modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800516 grep -E "^kernel\/|^${common_drivers}\/" modules.dep > ${OUT_AMLOGIC_DIR}/modules/modules.dep
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800517 else # all modules, include external modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800518 cp modules.dep ${OUT_AMLOGIC_DIR}/modules
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800519 fi
520 popd
wanwei.jiang612a8882021-11-23 17:12:23 +0800521
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800522 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang612a8882021-11-23 17:12:23 +0800523 sed -i 's#[^ ]*/##g' modules.dep
524
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800525 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800526
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800527 touch __install.sh
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800528 touch modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800529 for loop in `cat modules.dep | sed 's/:.*//'`; do
530 mod_probe $loop
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800531 echo $loop >> modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800532 echo insmod $loop >> __install.sh
533 done
534
535 cat __install.sh | awk ' {
536 if (!cnt[$2]) {
537 print $0;
538 cnt[$2]++;
539 }
540 }' > __install.sh.tmp
541
Wanwei Jiangbf119d22022-10-27 09:49:49 +0800542 cp modules.order modules.order.back
543 cut -d ' ' -f 2 __install.sh.tmp > modules.order
qinglin.lie5b951e2022-06-07 16:13:44 +0800544 create_ramdisk_vendor __install.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800545
wanwei.jiang612a8882021-11-23 17:12:23 +0800546 echo "#!/bin/sh" > install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800547 echo "cd ramdisk" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800548 echo "./ramdisk_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800549 echo "cd ../vendor" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800550 echo "./vendor_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800551 echo "cd ../" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800552 chmod 755 install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800553
554 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
Wanwei Jianga5977bd2022-08-24 22:43:40 +0800555 rm __install.sh __install.sh.tmp
wanwei.jiang612a8882021-11-23 17:12:23 +0800556
wanwei.jiang236e9a32021-12-07 16:34:14 +0800557 popd
wanwei.jiang612a8882021-11-23 17:12:23 +0800558}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800559export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800560
561function rebuild_rootfs() {
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800562 pushd ${OUT_AMLOGIC_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800563
Lei Zhang475c17b2022-03-03 11:08:50 +0800564 local ARCH=arm64
565 if [[ -n $1 ]]; then
566 ARCH=$1
567 fi
568
wanwei.jiang612a8882021-11-23 17:12:23 +0800569 rm rootfs -rf
570 mkdir rootfs
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800571 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800572 cd rootfs
573 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
574 gunzip rootfs_base.cpio.gz
575 mkdir rootfs
576 cd rootfs
577 cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800578 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
579 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800580 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800581 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800582
wanwei.jiang612a8882021-11-23 17:12:23 +0800583 find . | cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
584 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800585 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 +0800586 mv rootfs_new.cpio.gz.uboot ../
587 cd ../
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800588 cp rootfs_new.cpio.gz.uboot ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800589
590 popd
591}
592export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800593
594function check_undefined_symbol() {
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800595 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800596 echo
597 echo "========================================================"
598 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800599 if [[ -n ${LLVM} ]]; then
600 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
601 elif [[ -n ${CROSS_COMPILE} ]]; then
602 compile_tool=${CROSS_COMPILE}
603 else
604 echo "can't find compile tool"
605 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800606 ${compile_tool}nm ${DIST_DIR}/vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800607 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
608 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
609 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
610 cp ramdisk/*.ko .
611 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800612 while read LINE
613 do
614 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800615 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 +0800616 do
617 #echo ${U}
618 U_v=`grep -w ${U} vmlinux_T.txt`
619 in_vmlinux=0
620 if [ -n "${U_v}" ];
621 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800622 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800623 in_vmlinux=1
624 continue
625 fi
626 in_module=0
627 MODULE=
628 while read LINE1
629 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800630 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 +0800631 if [ -n "${U_m}" ];
632 then
633 in_module=1
634 MODULE=${LINE1}
635 fi
636 done < module_list.txt
637 if [ ${in_module} -eq "1" ];
638 then
639 printf "\t%-50s <== %s\n" ${U} ${MODULE}
640 continue
641 else
642 printf "\t%-50s <== none\n" ${U}
643 fi
644 done
645 echo
646 echo
647 done < module_list.txt
648 rm vmlinux_T.txt
649 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800650 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +0800651 popd
652}
653export -f check_undefined_symbol