blob: 1821e5eb1a1159f1bc52b80892c360ff89429ca6 [file] [log] [blame]
wanwei.jiang91776952021-11-19 13:10:32 +08001#!/bin/bash
2
3function pre_defconfig_cmds() {
wanwei.jiang91776952021-11-19 13:10:32 +08004 KCONFIG_CONFIG=${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/gki_defconfig ${ROOT_DIR}/${FRAGMENT_CONFIG}
5}
6export -f pre_defconfig_cmds
7
8function post_defconfig_cmds() {
wanwei.jiang1482c872022-05-13 20:33:51 +08009 if [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
10 check_defconfig
11 fi
wanwei.jiang91776952021-11-19 13:10:32 +080012 rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080013}
14export -f post_defconfig_cmds
15
16function read_ext_module_config() {
17 ALL_LINE=""
18 while read LINE
19 do
20 if [[ $LINE != \#* && $LINE != "" ]]; then
21 ALL_LINE="$ALL_LINE"" ""$LINE"
22 fi
23 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +080024
25 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080026}
27
28function read_ext_module_predefine() {
29 PRE_DEFINE=""
30
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080031 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080032 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
33 done
34
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080035 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080036 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
37 done
38
wanwei.jiang5c861ae2022-04-21 00:51:50 +080039 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080040}
41
wanwei.jiang8d4a5132022-04-28 16:43:54 +080042top_ext_drivers=top_ext_drivers
wanwei.jiang91776952021-11-19 13:10:32 +080043function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +080044 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +080045 if [[ -z ${IN_KERNEL_MODULES} ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +080046 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
47 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
48 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
49 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +080050 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +080051
52 for ext_module_config in ${EXT_MODULES_CONFIG}; do
53 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
54 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
55 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
56 done
57 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
58 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
59 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
60
61 local flag=0
wanwei.jiangcb5c4c82022-04-25 16:47:24 +080062 ext_modules=
63 for ext_module in ${EXT_MODULES}; do
64 ext_modules="${ext_modules} ${ext_module}"
65 done
wanwei.jiang8d4a5132022-04-28 16:43:54 +080066 if [[ -d ${top_ext_drivers} ]]; then
67 rm -rf ${top_ext_drivers}
68 fi
69 mkdir -p ${top_ext_drivers}
wanwei.jiang5c861ae2022-04-21 00:51:50 +080070 for ext_module_path in ${EXT_MODULES_PATH}; do
71 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +080072 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
73 while read LINE
74 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +080075 module_abs_path=`readlink -e ${LINE}`
76 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
77 if [[ `echo ${module_rel_path} | grep "\.\."` ]]; then
78 cp -rf ${module_abs_path} ${top_ext_drivers}
79 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
80 fi
81 ext_modules="${ext_modules} ${module_rel_path}"
82
83 ext_mod_rel=$(rel_path ${module_rel_path} ${KERNEL_DIR})
wanwei.jiang5c861ae2022-04-21 00:51:50 +080084 if [[ ${flag} -eq "1" ]]; then
wanwei.jiang8d4a5132022-04-28 16:43:54 +080085 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${module_rel_path}/Makefile
86 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${module_rel_path}/Makefile
87 sed -i "2 i ${extra_symbols}" ${module_rel_path}/Makefile
88 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${module_rel_path}/Makefile
89 echo "${module_rel_path}/Makefile add: ${extra_symbols}"
wanwei.jiang5c861ae2022-04-21 00:51:50 +080090 fi
91 flag=1
92 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
93 done < ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +080094 done
wanwei.jiangcb5c4c82022-04-25 16:47:24 +080095 EXT_MODULES=${ext_modules}
wanwei.jiang5c861ae2022-04-21 00:51:50 +080096 export EXT_MODULES
97 echo EXT_MODULES=${EXT_MODULES}
98
99 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +0800100}
101
102export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +0800103
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800104function extra_cmds() {
105 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
106 local flag=0
107
108 for ext_module_path in ${EXT_MODULES_PATH}; do
109 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
110 while read LINE
111 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800112 module_abs_path=`readlink -e ${LINE}`
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800113 if [[ ${flag} -eq "1" ]]; then
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800114 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${module_abs_path}/Makefile
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800115 fi
116 flag=1
117 done < ${temp_file}
118 done
119
120 rm ${temp_file}
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800121 if [[ -d ${top_ext_drivers} ]]; then
122 rm -rf ${top_ext_drivers}
123 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800124}
125
126export -f extra_cmds
127
wanwei.jiang612a8882021-11-23 17:12:23 +0800128function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800129 local ko=$1
130 local loop
131 for loop in `grep "$ko:" modules.dep | sed 's/.*://'`; do
132 mod_probe $loop
133 echo insmod $loop >> __install.sh
134 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800135}
136
wanwei.jiangb12abc82021-12-25 22:17:10 +0800137function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800138 if [[ -n $1 ]]; then
139 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800140 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800141
142 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
143 cp modules.dep modules.dep.temp
144
145 soc_module=()
146 for chip in ${chips[@]}; do
147 chip_module=`ls amlogic-*-soc-${chip}.ko`
148 soc_module=(${soc_module[@]} ${chip_module[@]})
149 done
150 echo soc_module=${soc_module[*]}
151
152 delete_soc_module=()
153 if [[ ${#soc_module[@]} == 0 ]]; then
154 echo "Use all soc module"
155 else
156 for module in `ls amlogic-*-soc-*`; do
157 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
158 echo Delete soc module: ${module}
159 sed -n "/${module}:/p" modules.dep.temp
160 sed -i "/${module}:/d" modules.dep.temp
161 delete_soc_module=(${delete_soc_module[@]} ${module})
162 fi
163 done
164 echo delete_soc_module=${delete_soc_module[*]}
165 fi
166
167 delete_module=()
wanwei.jiang50759e12022-03-24 12:36:17 +0800168 for module in ${MODULES_LOAD_BLACK_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800169 modules=`ls ${module}*`
170 delete_module=(${delete_module[@]} ${modules[@]})
171 done
172 if [[ ${#delete_module[@]} == 0 ]]; then
wanwei.jiang50759e12022-03-24 12:36:17 +0800173 echo "No delete module, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800174 else
175 echo delete_module=${delete_module[*]}
176 for module in ${delete_module[@]}; do
177 echo Delete module: ${module}
178 sed -n "/${module}:/p" modules.dep.temp
179 sed -i "/${module}:/d" modules.dep.temp
180 done
181 fi
182
183 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
184 delete_modules=(${delete_soc_module[@]} ${delete_module[@]})
185 for module in ${delete_modules[@]}; do
186 match=`sed -n "/${module}/=" modules.dep.temp1`
187 for match in ${match[@]}; do
188 match_count=(${match_count[@]} $match)
189 done
190 if [[ ${#match_count[@]} != 0 ]]; then
191 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800192 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800193 exit
194 fi
195 rm -f ${module}
196 done
197 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800198 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800199
200 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
201 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800202 sed -n "/${module}:/p" modules.dep.temp
203 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
204 sed -i "/${module}:/d" modules.dep.temp
205 sed -n "/${module}.*\.ko:/p" modules.dep.temp
206 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
207 sed -i "/${module}.*\.ko:/d" modules.dep.temp
208 done
209
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800210 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
211 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
212 sed -n "/${module}:/p" modules.dep.temp
213 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
214 sed -i "/${module}:/d" modules.dep.temp
215 sed -n "/${module}.*\.ko:/p" modules.dep.temp
216 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
217 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800218 done
219
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800220 if [ -f modules.dep.temp2 ]; then
221 rm modules.dep.temp2
222 fi
223 touch modules.dep.temp2
224 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
225 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
226 sed -n "/${module}:/p" modules.dep.temp
227 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
228 sed -i "/${module}:/d" modules.dep.temp
229 sed -n "/${module}.*\.ko:/p" modules.dep.temp
230 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
231 sed -i "/${module}.*\.ko:/d" modules.dep.temp
232 done
233
234 cat modules.dep.temp >> modules.dep.temp1
235 cat modules.dep.temp2 >> modules.dep.temp1
236
wanwei.jiangb12abc82021-12-25 22:17:10 +0800237 cp modules.dep.temp1 modules.dep
238 rm modules.dep.temp
239 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800240 rm modules.dep.temp2
241}
242
wanwei.jiang50759e12022-03-24 12:36:17 +0800243create_ramdis_vendor() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800244 install_temp=$1
245 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
246 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
247 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
248 for line in ${last_ramdisk_module_line}; do
249 ramdisk_last_line=${line}
250 done
251 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800252 mkdir ramdisk
253 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800254
255 sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' ramdisk_install.sh
256 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
257 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800258 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800259
260 file_last_line=`sed -n "$=" ${install_temp}`
261 let line=${file_last_line}-${ramdisk_last_line}
262 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800263 mkdir vendor
264 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800265
266 sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' vendor_install.sh
267 echo "echo Install vendor modules success!" >> vendor_install.sh
268 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800269 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800270}
271
wanwei.jiang612a8882021-11-23 17:12:23 +0800272function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800273 arg1=$1
274
wanwei.jiang236e9a32021-12-07 16:34:14 +0800275 pushd ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800276 rm modules -rf
277 mkdir modules
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800278 local modules_list=$(find ${MODULES_STAGING_DIR}/lib/modules -type f -name "*.ko")
wanwei.jiang67a191d2022-04-18 20:39:13 +0800279 #cp ${modules_list} modules
280 for module in ${modules_list}; do
281 cp ${module} modules/
282 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800283
284 local stagin_module=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
285 echo stagin_module=${stagin_module}
286 cp ${stagin_module}/modules.dep modules
287
288 cd modules
289 sed -i 's#[^ ]*/##g' modules.dep
290
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800291 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800292
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800293 touch __install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800294 for loop in `cat modules.dep | sed 's/:.*//'`; do
295 mod_probe $loop
296 echo insmod $loop >> __install.sh
297 done
298
299 cat __install.sh | awk ' {
300 if (!cnt[$2]) {
301 print $0;
302 cnt[$2]++;
303 }
304 }' > __install.sh.tmp
305
wanwei.jiang50759e12022-03-24 12:36:17 +0800306 create_ramdis_vendor __install.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800307
wanwei.jiang612a8882021-11-23 17:12:23 +0800308 cp __install.sh.tmp __install.sh
309
wanwei.jiang50759e12022-03-24 12:36:17 +0800310 #sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' __install.sh
311 #echo "echo Install modules success!" >> __install.sh
312 #chmod 755 __install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800313
314 echo "#!/bin/sh" > install.sh
315 # echo "./__install.sh || reboot" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800316 # echo "./__install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800317 echo "cd ramdisk" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800318 echo "./ramdisk_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800319 echo "cd ../vendor" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800320 echo "./vendor_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800321 echo "cd ../" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800322 chmod 755 install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800323
324 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
wanwei.jiang50759e12022-03-24 12:36:17 +0800325 rm __install.sh __install.sh.tmp modules.dep
wanwei.jiang612a8882021-11-23 17:12:23 +0800326
327 cd ../
wanwei.jiang236e9a32021-12-07 16:34:14 +0800328 popd
wanwei.jiang612a8882021-11-23 17:12:23 +0800329}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800330export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800331
332function rebuild_rootfs() {
333 pushd ${DIST_DIR}
334
Lei Zhang475c17b2022-03-03 11:08:50 +0800335 local ARCH=arm64
336 if [[ -n $1 ]]; then
337 ARCH=$1
338 fi
339
wanwei.jiang612a8882021-11-23 17:12:23 +0800340 rm rootfs -rf
341 mkdir rootfs
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800342 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800343 cd rootfs
344 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
345 gunzip rootfs_base.cpio.gz
346 mkdir rootfs
347 cd rootfs
348 cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800349 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
350 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800351 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800352 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800353
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800354 #modules_modules=`ls modules/*.ko`
355 ramdisk_modules=`ls modules/ramdisk/*.ko`
356 vendor_modules=`ls modules/vendor/*.ko`
357 strip_modules=(${modules_modules[@]} ${ramdisk_modules[@]} ${vendor_modules[@]})
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800358 if [[ -n ${LLVM} ]]; then
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800359 for module in ${strip_modules[@]}; do
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800360 ${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-objcopy --strip-debug ${module}
361 done
362 elif [[ -n ${CROSS_COMPILE} ]]; then
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800363 for module in ${strip_modules[@]}; do
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800364 ${CROSS_COMPILE}objcopy --strip-debug ${module}
365 done
366 else
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800367 echo "can't find compile tool"
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800368 fi
369
wanwei.jiang612a8882021-11-23 17:12:23 +0800370 find . | cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
371 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800372 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 +0800373 mv rootfs_new.cpio.gz.uboot ../
374 cd ../
375
376 popd
377}
378export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800379
380function check_undefined_symbol() {
wanwei.jiang236e9a32021-12-07 16:34:14 +0800381 pushd ${DIST_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800382 echo
383 echo "========================================================"
384 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800385 if [[ -n ${LLVM} ]]; then
386 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
387 elif [[ -n ${CROSS_COMPILE} ]]; then
388 compile_tool=${CROSS_COMPILE}
389 else
390 echo "can't find compile tool"
391 fi
392 ${compile_tool}nm ../vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
393 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
394 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
395 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
396 cp ramdisk/*.ko .
397 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800398 while read LINE
399 do
400 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800401 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 +0800402 do
403 #echo ${U}
404 U_v=`grep -w ${U} vmlinux_T.txt`
405 in_vmlinux=0
406 if [ -n "${U_v}" ];
407 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800408 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800409 in_vmlinux=1
410 continue
411 fi
412 in_module=0
413 MODULE=
414 while read LINE1
415 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800416 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 +0800417 if [ -n "${U_m}" ];
418 then
419 in_module=1
420 MODULE=${LINE1}
421 fi
422 done < module_list.txt
423 if [ ${in_module} -eq "1" ];
424 then
425 printf "\t%-50s <== %s\n" ${U} ${MODULE}
426 continue
427 else
428 printf "\t%-50s <== none\n" ${U}
429 fi
430 done
431 echo
432 echo
433 done < module_list.txt
434 rm vmlinux_T.txt
435 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800436 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +0800437 popd
438}
439export -f check_undefined_symbol