blob: c87919b5fd56359971cab2d9a51ca429cb2e604a [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.jiang9c76b702022-03-23 20:58:59 +08009 # checkout config
wanwei.jiang91776952021-11-19 13:10:32 +080010 rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080011}
12export -f post_defconfig_cmds
13
14function read_ext_module_config() {
15 ALL_LINE=""
16 while read LINE
17 do
18 if [[ $LINE != \#* && $LINE != "" ]]; then
19 ALL_LINE="$ALL_LINE"" ""$LINE"
20 fi
21 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +080022
23 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080024}
25
26function read_ext_module_predefine() {
27 PRE_DEFINE=""
28
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080029 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080030 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
31 done
32
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080033 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080034 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
35 done
36
wanwei.jiang5c861ae2022-04-21 00:51:50 +080037 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080038}
39
wanwei.jiang8d4a5132022-04-28 16:43:54 +080040top_ext_drivers=top_ext_drivers
wanwei.jiang91776952021-11-19 13:10:32 +080041function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +080042 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +080043 if [[ -z ${IN_KERNEL_MODULES} ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +080044 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
45 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
46 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
47 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +080048 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +080049
50 for ext_module_config in ${EXT_MODULES_CONFIG}; do
51 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
52 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
53 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
54 done
55 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
56 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
57 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
58
59 local flag=0
wanwei.jiangcb5c4c82022-04-25 16:47:24 +080060 ext_modules=
61 for ext_module in ${EXT_MODULES}; do
62 ext_modules="${ext_modules} ${ext_module}"
63 done
wanwei.jiang8d4a5132022-04-28 16:43:54 +080064 if [[ -d ${top_ext_drivers} ]]; then
65 rm -rf ${top_ext_drivers}
66 fi
67 mkdir -p ${top_ext_drivers}
wanwei.jiang5c861ae2022-04-21 00:51:50 +080068 for ext_module_path in ${EXT_MODULES_PATH}; do
69 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +080070 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
71 while read LINE
72 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +080073 module_abs_path=`readlink -e ${LINE}`
74 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
75 if [[ `echo ${module_rel_path} | grep "\.\."` ]]; then
76 cp -rf ${module_abs_path} ${top_ext_drivers}
77 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
78 fi
79 ext_modules="${ext_modules} ${module_rel_path}"
80
81 ext_mod_rel=$(rel_path ${module_rel_path} ${KERNEL_DIR})
wanwei.jiang5c861ae2022-04-21 00:51:50 +080082 if [[ ${flag} -eq "1" ]]; then
wanwei.jiang8d4a5132022-04-28 16:43:54 +080083 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${module_rel_path}/Makefile
84 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${module_rel_path}/Makefile
85 sed -i "2 i ${extra_symbols}" ${module_rel_path}/Makefile
86 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${module_rel_path}/Makefile
87 echo "${module_rel_path}/Makefile add: ${extra_symbols}"
wanwei.jiang5c861ae2022-04-21 00:51:50 +080088 fi
89 flag=1
90 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
91 done < ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +080092 done
wanwei.jiangcb5c4c82022-04-25 16:47:24 +080093 EXT_MODULES=${ext_modules}
wanwei.jiang5c861ae2022-04-21 00:51:50 +080094 export EXT_MODULES
95 echo EXT_MODULES=${EXT_MODULES}
96
97 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +080098}
99
100export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +0800101
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800102function extra_cmds() {
103 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
104 local flag=0
105
106 for ext_module_path in ${EXT_MODULES_PATH}; do
107 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
108 while read LINE
109 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800110 module_abs_path=`readlink -e ${LINE}`
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800111 if [[ ${flag} -eq "1" ]]; then
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800112 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 +0800113 fi
114 flag=1
115 done < ${temp_file}
116 done
117
118 rm ${temp_file}
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800119 if [[ -d ${top_ext_drivers} ]]; then
120 rm -rf ${top_ext_drivers}
121 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800122}
123
124export -f extra_cmds
125
wanwei.jiang612a8882021-11-23 17:12:23 +0800126function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800127 local ko=$1
128 local loop
129 for loop in `grep "$ko:" modules.dep | sed 's/.*://'`; do
130 mod_probe $loop
131 echo insmod $loop >> __install.sh
132 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800133}
134
wanwei.jiangb12abc82021-12-25 22:17:10 +0800135function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800136 if [[ -n $1 ]]; then
137 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800138 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800139
140 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
141 cp modules.dep modules.dep.temp
142
143 soc_module=()
144 for chip in ${chips[@]}; do
145 chip_module=`ls amlogic-*-soc-${chip}.ko`
146 soc_module=(${soc_module[@]} ${chip_module[@]})
147 done
148 echo soc_module=${soc_module[*]}
149
150 delete_soc_module=()
151 if [[ ${#soc_module[@]} == 0 ]]; then
152 echo "Use all soc module"
153 else
154 for module in `ls amlogic-*-soc-*`; do
155 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
156 echo Delete soc module: ${module}
157 sed -n "/${module}:/p" modules.dep.temp
158 sed -i "/${module}:/d" modules.dep.temp
159 delete_soc_module=(${delete_soc_module[@]} ${module})
160 fi
161 done
162 echo delete_soc_module=${delete_soc_module[*]}
163 fi
164
165 delete_module=()
wanwei.jiang50759e12022-03-24 12:36:17 +0800166 for module in ${MODULES_LOAD_BLACK_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800167 modules=`ls ${module}*`
168 delete_module=(${delete_module[@]} ${modules[@]})
169 done
170 if [[ ${#delete_module[@]} == 0 ]]; then
wanwei.jiang50759e12022-03-24 12:36:17 +0800171 echo "No delete module, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800172 else
173 echo delete_module=${delete_module[*]}
174 for module in ${delete_module[@]}; do
175 echo Delete module: ${module}
176 sed -n "/${module}:/p" modules.dep.temp
177 sed -i "/${module}:/d" modules.dep.temp
178 done
179 fi
180
181 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
182 delete_modules=(${delete_soc_module[@]} ${delete_module[@]})
183 for module in ${delete_modules[@]}; do
184 match=`sed -n "/${module}/=" modules.dep.temp1`
185 for match in ${match[@]}; do
186 match_count=(${match_count[@]} $match)
187 done
188 if [[ ${#match_count[@]} != 0 ]]; then
189 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800190 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800191 exit
192 fi
193 rm -f ${module}
194 done
195 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800196 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800197
198 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
199 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800200 sed -n "/${module}:/p" modules.dep.temp
201 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
202 sed -i "/${module}:/d" modules.dep.temp
203 sed -n "/${module}.*\.ko:/p" modules.dep.temp
204 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
205 sed -i "/${module}.*\.ko:/d" modules.dep.temp
206 done
207
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800208 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
209 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
210 sed -n "/${module}:/p" modules.dep.temp
211 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
212 sed -i "/${module}:/d" modules.dep.temp
213 sed -n "/${module}.*\.ko:/p" modules.dep.temp
214 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
215 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800216 done
217
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800218 if [ -f modules.dep.temp2 ]; then
219 rm modules.dep.temp2
220 fi
221 touch modules.dep.temp2
222 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
223 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
224 sed -n "/${module}:/p" modules.dep.temp
225 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
226 sed -i "/${module}:/d" modules.dep.temp
227 sed -n "/${module}.*\.ko:/p" modules.dep.temp
228 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
229 sed -i "/${module}.*\.ko:/d" modules.dep.temp
230 done
231
232 cat modules.dep.temp >> modules.dep.temp1
233 cat modules.dep.temp2 >> modules.dep.temp1
234
wanwei.jiangb12abc82021-12-25 22:17:10 +0800235 cp modules.dep.temp1 modules.dep
236 rm modules.dep.temp
237 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800238 rm modules.dep.temp2
239}
240
wanwei.jiang50759e12022-03-24 12:36:17 +0800241create_ramdis_vendor() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800242 install_temp=$1
243 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
244 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
245 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
246 for line in ${last_ramdisk_module_line}; do
247 ramdisk_last_line=${line}
248 done
249 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800250 mkdir ramdisk
251 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800252
253 sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' ramdisk_install.sh
254 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
255 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800256 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800257
258 file_last_line=`sed -n "$=" ${install_temp}`
259 let line=${file_last_line}-${ramdisk_last_line}
260 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800261 mkdir vendor
262 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800263
264 sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' vendor_install.sh
265 echo "echo Install vendor modules success!" >> vendor_install.sh
266 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800267 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800268}
269
wanwei.jiang612a8882021-11-23 17:12:23 +0800270function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800271 arg1=$1
272
wanwei.jiang236e9a32021-12-07 16:34:14 +0800273 pushd ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800274 rm modules -rf
275 mkdir modules
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800276 local modules_list=$(find ${MODULES_STAGING_DIR}/lib/modules -type f -name "*.ko")
wanwei.jiang67a191d2022-04-18 20:39:13 +0800277 #cp ${modules_list} modules
278 for module in ${modules_list}; do
279 cp ${module} modules/
280 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800281
282 local stagin_module=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
283 echo stagin_module=${stagin_module}
284 cp ${stagin_module}/modules.dep modules
285
286 cd modules
287 sed -i 's#[^ ]*/##g' modules.dep
288
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800289 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800290
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800291 touch __install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800292 for loop in `cat modules.dep | sed 's/:.*//'`; do
293 mod_probe $loop
294 echo insmod $loop >> __install.sh
295 done
296
297 cat __install.sh | awk ' {
298 if (!cnt[$2]) {
299 print $0;
300 cnt[$2]++;
301 }
302 }' > __install.sh.tmp
303
wanwei.jiang50759e12022-03-24 12:36:17 +0800304 create_ramdis_vendor __install.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800305
wanwei.jiang612a8882021-11-23 17:12:23 +0800306 cp __install.sh.tmp __install.sh
307
wanwei.jiang50759e12022-03-24 12:36:17 +0800308 #sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' __install.sh
309 #echo "echo Install modules success!" >> __install.sh
310 #chmod 755 __install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800311
312 echo "#!/bin/sh" > install.sh
313 # echo "./__install.sh || reboot" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800314 # echo "./__install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800315 echo "cd ramdisk" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800316 echo "./ramdisk_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800317 echo "cd ../vendor" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800318 echo "./vendor_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800319 echo "cd ../" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800320 chmod 755 install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800321
322 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
wanwei.jiang50759e12022-03-24 12:36:17 +0800323 rm __install.sh __install.sh.tmp modules.dep
wanwei.jiang612a8882021-11-23 17:12:23 +0800324
325 cd ../
wanwei.jiang236e9a32021-12-07 16:34:14 +0800326 popd
wanwei.jiang612a8882021-11-23 17:12:23 +0800327}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800328export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800329
330function rebuild_rootfs() {
331 pushd ${DIST_DIR}
332
Lei Zhang475c17b2022-03-03 11:08:50 +0800333 local ARCH=arm64
334 if [[ -n $1 ]]; then
335 ARCH=$1
336 fi
337
wanwei.jiang612a8882021-11-23 17:12:23 +0800338 rm rootfs -rf
339 mkdir rootfs
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800340 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800341 cd rootfs
342 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
343 gunzip rootfs_base.cpio.gz
344 mkdir rootfs
345 cd rootfs
346 cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800347 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
348 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800349 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800350 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800351
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800352 #modules_modules=`ls modules/*.ko`
353 ramdisk_modules=`ls modules/ramdisk/*.ko`
354 vendor_modules=`ls modules/vendor/*.ko`
355 strip_modules=(${modules_modules[@]} ${ramdisk_modules[@]} ${vendor_modules[@]})
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800356 if [[ -n ${LLVM} ]]; then
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800357 for module in ${strip_modules[@]}; do
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800358 ${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-objcopy --strip-debug ${module}
359 done
360 elif [[ -n ${CROSS_COMPILE} ]]; then
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800361 for module in ${strip_modules[@]}; do
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800362 ${CROSS_COMPILE}objcopy --strip-debug ${module}
363 done
364 else
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800365 echo "can't find compile tool"
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800366 fi
367
wanwei.jiang612a8882021-11-23 17:12:23 +0800368 find . | cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
369 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800370 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 +0800371 mv rootfs_new.cpio.gz.uboot ../
372 cd ../
373
374 popd
375}
376export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800377
378function check_undefined_symbol() {
wanwei.jiang236e9a32021-12-07 16:34:14 +0800379 pushd ${DIST_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800380 echo
381 echo "========================================================"
382 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800383 if [[ -n ${LLVM} ]]; then
384 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
385 elif [[ -n ${CROSS_COMPILE} ]]; then
386 compile_tool=${CROSS_COMPILE}
387 else
388 echo "can't find compile tool"
389 fi
390 ${compile_tool}nm ../vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
391 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
392 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
393 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
394 cp ramdisk/*.ko .
395 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800396 while read LINE
397 do
398 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800399 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 +0800400 do
401 #echo ${U}
402 U_v=`grep -w ${U} vmlinux_T.txt`
403 in_vmlinux=0
404 if [ -n "${U_v}" ];
405 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800406 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800407 in_vmlinux=1
408 continue
409 fi
410 in_module=0
411 MODULE=
412 while read LINE1
413 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800414 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 +0800415 if [ -n "${U_m}" ];
416 then
417 in_module=1
418 MODULE=${LINE1}
419 fi
420 done < module_list.txt
421 if [ ${in_module} -eq "1" ];
422 then
423 printf "\t%-50s <== %s\n" ${U} ${MODULE}
424 continue
425 else
426 printf "\t%-50s <== none\n" ${U}
427 fi
428 done
429 echo
430 echo
431 done < module_list.txt
432 rm vmlinux_T.txt
433 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800434 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +0800435 popd
436}
437export -f check_undefined_symbol