blob: 03d89c57b61150d1fa0e247dec6382615d69e64e [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)
5
wanwei.jiang6fdd3152022-08-01 20:35:05 +08006 if [[ ${GKI_CONFIG} == gki ]]; then
7 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}
8 elif [[ ${GKI_CONFIG} == gki_user ]]; then
9 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} ${ROOT_DIR}/${FRAGMENT_CONFIG_OPTIMIZE}
10 elif [[ ${GKI_CONFIG} == gki_userdebug ]]; then
11 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} ${ROOT_DIR}/${FRAGMENT_CONFIG_OPTIMIZE} ${ROOT_DIR}/${FRAGMENT_CONFIG_DEBUG}
12 fi
wanwei.jiang91776952021-11-19 13:10:32 +080013}
14export -f pre_defconfig_cmds
15
16function post_defconfig_cmds() {
wanwei.jiang1482c872022-05-13 20:33:51 +080017 if [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
18 check_defconfig
19 fi
wanwei.jiang91776952021-11-19 13:10:32 +080020 rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080021}
22export -f post_defconfig_cmds
23
24function read_ext_module_config() {
25 ALL_LINE=""
26 while read LINE
27 do
28 if [[ $LINE != \#* && $LINE != "" ]]; then
29 ALL_LINE="$ALL_LINE"" ""$LINE"
30 fi
31 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +080032
33 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080034}
35
36function read_ext_module_predefine() {
37 PRE_DEFINE=""
38
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080039 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080040 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
41 done
42
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080043 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080044 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
45 done
46
wanwei.jiang5c861ae2022-04-21 00:51:50 +080047 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080048}
49
wanwei.jiang8d4a5132022-04-28 16:43:54 +080050top_ext_drivers=top_ext_drivers
wanwei.jiang91776952021-11-19 13:10:32 +080051function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +080052 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +080053 if [[ -z ${IN_KERNEL_MODULES} ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +080054 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
55 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
56 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
57 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +080058 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +080059
60 for ext_module_config in ${EXT_MODULES_CONFIG}; do
61 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
62 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
63 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
64 done
65 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
66 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
67 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
68
wanwei.jiangc663c4c2022-06-16 14:41:23 +080069 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
70 if [[ -d ${top_ext_drivers} ]]; then
71 rm -rf ${top_ext_drivers}
72 fi
73 mkdir -p ${top_ext_drivers}
74 fi
75
76 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
77 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
78 fi
wanwei.jiangcb5c4c82022-04-25 16:47:24 +080079 ext_modules=
80 for ext_module in ${EXT_MODULES}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +080081 module_abs_path=`readlink -e ${ext_module}`
82 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
83 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
84 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
85 cp -rf ${module_abs_path} ${top_ext_drivers}
86 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
87 fi
88 fi
89 ext_modules="${ext_modules} ${module_rel_path}"
wanwei.jiangcb5c4c82022-04-25 16:47:24 +080090 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +080091
wanwei.jiang5c861ae2022-04-21 00:51:50 +080092 for ext_module_path in ${EXT_MODULES_PATH}; do
93 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +080094 while read LINE
95 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +080096 module_abs_path=`readlink -e ${LINE}`
97 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
wanwei.jiangc663c4c2022-06-16 14:41:23 +080098 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
99 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
100 cp -rf ${module_abs_path} ${top_ext_drivers}
101 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
102 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800103 fi
104 ext_modules="${ext_modules} ${module_rel_path}"
105
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800106 done < ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800107 done
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800108 EXT_MODULES=${ext_modules}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800109
110 local flag=0
111 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
112 for ext_module in ${EXT_MODULES}; do
113 ext_mod_rel=$(rel_path ${ext_module} ${KERNEL_DIR})
114 if [[ ${flag} -eq "1" ]]; then
115 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
116 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${ext_module}/Makefile
117 sed -i "2 i ${extra_symbols}" ${ext_module}/Makefile
118 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${ext_module}/Makefile
119 echo "${ext_module}/Makefile add: ${extra_symbols}"
120 fi
121 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
122 flag=1
123 done
124 fi
125
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800126 export EXT_MODULES
127 echo EXT_MODULES=${EXT_MODULES}
128
129 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +0800130}
131
132export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +0800133
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800134function extra_cmds() {
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800135 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
136 for ext_module in ${EXT_MODULES}; do
137 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
138 done
139 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800140
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800141 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
142 if [[ -d ${top_ext_drivers} ]]; then
143 rm -rf ${top_ext_drivers}
144 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800145 fi
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800146
147 for FILE in ${FILES}; do
148 if [[ "${FILE}" =~ \.dtbo ]] && \
149 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
150 MKDTIMG_DTBOS="${MKDTIMG_DTBOS} ${DIST_DIR}/${FILE}"
151 fi
152 done
153 export MKDTIMG_DTBOS
154
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800155 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800156 modules_install
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800157 set -x
158
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800159 local src_dir=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
160 pushd ${src_dir}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800161 cp modules.order modules_order.back
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800162 : > modules.order
163 while read LINE
164 do
165 find -name ${LINE} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800166 done < ${OUT_AMLOGIC_DIR}/modules/modules.order
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800167 sed -i "s/^\.\///" modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800168 : > ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800169 ext_modules=
170 for ext_module in ${EXT_MODULES}; do
171 if [[ ${ext_module} =~ "../" ]]; then
172 ext_module_old=${ext_module}
173 ext_module=${ext_module//\.\.\//}
174 ext_dir=$(dirname ${ext_module})
175 [[ -d extra/${ext_module} ]] && rm -rf extra/${ext_dir}
176 mkdir -p extra/${ext_dir}
177 cp -rf extra/${ext_module_old} extra/${ext_dir}
178
179 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
180 ext_dir_top=${ext_module%/*}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800181 sed -i "s/\.\.\///g" ${ext_modules_order_file}
182 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800183 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800184 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800185 else
186 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
wanwei.jiangf73b2202022-07-23 16:00:44 +0800187 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800188 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800189 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800190 fi
191 ext_modules="${ext_modules} ${ext_module}"
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800192 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800193 EXT_MODULES=${ext_modules}
194 echo EXT_MODULES=${EXT_MODULES}
195 export EXT_MODULES
wanwei.jiangf73b2202022-07-23 16:00:44 +0800196
197 head -n ${ramdisk_last_line} modules.order > system_dlkm_modules
198 file_last_line=`sed -n "$=" modules.order`
199 let line=${file_last_line}-${ramdisk_last_line}
200 tail -n ${line} modules.order > vendor_dlkm_modules
201 export MODULES_LIST=${src_dir}/system_dlkm_modules
202 export VENDOR_DLKM_MODULES_LIST=${src_dir}/vendor_dlkm_modules
203
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800204 popd
wanwei.jiang1d154992022-05-30 14:56:26 +0800205
206 if [[ -z ${ANDROID_PROJECT} ]]; then
207 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
208 fi
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800209
210 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
211 : > ${KERNEL_BUILD_VAR_FILE}
212 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
213 echo "OUT_DIR=${OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
214 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800215 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800216 echo "MODULES_STAGING_DIR=${MODULES_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
217 echo "MODULES_PRIVATE_DIR=${MODULES_PRIVATE_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
218 echo "INITRAMFS_STAGING_DIR=${INITRAMFS_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
219 echo "SYSTEM_DLKM_STAGING_DIR=${SYSTEM_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
220 echo "VENDOR_DLKM_STAGING_DIR=${VENDOR_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
221 echo "MKBOOTIMG_STAGING_DIR=${MKBOOTIMG_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
222 echo "KERNEL_DEVICETREE=${KERNEL_DEVICETREE}" >> ${KERNEL_BUILD_VAR_FILE}
223 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800224}
225
226export -f extra_cmds
227
wanwei.jiang612a8882021-11-23 17:12:23 +0800228function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800229 local ko=$1
230 local loop
231 for loop in `grep "$ko:" modules.dep | sed 's/.*://'`; do
232 mod_probe $loop
233 echo insmod $loop >> __install.sh
234 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800235}
236
wanwei.jiangb12abc82021-12-25 22:17:10 +0800237function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800238 if [[ -n $1 ]]; then
239 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800240 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800241
242 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
243 cp modules.dep modules.dep.temp
244
245 soc_module=()
246 for chip in ${chips[@]}; do
247 chip_module=`ls amlogic-*-soc-${chip}.ko`
248 soc_module=(${soc_module[@]} ${chip_module[@]})
249 done
250 echo soc_module=${soc_module[*]}
251
252 delete_soc_module=()
253 if [[ ${#soc_module[@]} == 0 ]]; then
254 echo "Use all soc module"
255 else
256 for module in `ls amlogic-*-soc-*`; do
257 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
258 echo Delete soc module: ${module}
259 sed -n "/${module}:/p" modules.dep.temp
260 sed -i "/${module}:/d" modules.dep.temp
261 delete_soc_module=(${delete_soc_module[@]} ${module})
262 fi
263 done
264 echo delete_soc_module=${delete_soc_module[*]}
265 fi
266
267 delete_module=()
wanwei.jiang50759e12022-03-24 12:36:17 +0800268 for module in ${MODULES_LOAD_BLACK_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800269 modules=`ls ${module}*`
270 delete_module=(${delete_module[@]} ${modules[@]})
271 done
272 if [[ ${#delete_module[@]} == 0 ]]; then
wanwei.jiang50759e12022-03-24 12:36:17 +0800273 echo "No delete module, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800274 else
275 echo delete_module=${delete_module[*]}
276 for module in ${delete_module[@]}; do
277 echo Delete module: ${module}
278 sed -n "/${module}:/p" modules.dep.temp
279 sed -i "/${module}:/d" modules.dep.temp
280 done
281 fi
282
283 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
284 delete_modules=(${delete_soc_module[@]} ${delete_module[@]})
285 for module in ${delete_modules[@]}; do
286 match=`sed -n "/${module}/=" modules.dep.temp1`
287 for match in ${match[@]}; do
288 match_count=(${match_count[@]} $match)
289 done
290 if [[ ${#match_count[@]} != 0 ]]; then
291 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800292 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800293 exit
294 fi
295 rm -f ${module}
296 done
297 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800298 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800299
300 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
301 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800302 sed -n "/${module}:/p" modules.dep.temp
303 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
304 sed -i "/${module}:/d" modules.dep.temp
305 sed -n "/${module}.*\.ko:/p" modules.dep.temp
306 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
307 sed -i "/${module}.*\.ko:/d" modules.dep.temp
308 done
309
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800310 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
311 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
312 sed -n "/${module}:/p" modules.dep.temp
313 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
314 sed -i "/${module}:/d" modules.dep.temp
315 sed -n "/${module}.*\.ko:/p" modules.dep.temp
316 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
317 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800318 done
319
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800320 if [ -f modules.dep.temp2 ]; then
321 rm modules.dep.temp2
322 fi
323 touch modules.dep.temp2
324 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
325 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
326 sed -n "/${module}:/p" modules.dep.temp
327 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
328 sed -i "/${module}:/d" modules.dep.temp
329 sed -n "/${module}.*\.ko:/p" modules.dep.temp
330 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
331 sed -i "/${module}.*\.ko:/d" modules.dep.temp
332 done
333
334 cat modules.dep.temp >> modules.dep.temp1
335 cat modules.dep.temp2 >> modules.dep.temp1
336
wanwei.jiangb12abc82021-12-25 22:17:10 +0800337 cp modules.dep.temp1 modules.dep
338 rm modules.dep.temp
339 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800340 rm modules.dep.temp2
341}
342
qinglin.lie5b951e2022-06-07 16:13:44 +0800343create_ramdisk_vendor() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800344 install_temp=$1
345 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
346 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
347 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
348 for line in ${last_ramdisk_module_line}; do
349 ramdisk_last_line=${line}
350 done
wanwei.jiangf73b2202022-07-23 16:00:44 +0800351 export ramdisk_last_line
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800352 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800353 mkdir ramdisk
wanwei.jiangf73b2202022-07-23 16:00:44 +0800354 cat ramdisk_install.sh | cut -d ' ' -f 2 > ramdisk/ramdisk_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800355 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800356
qinglin.lie5b951e2022-06-07 16:13:44 +0800357 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' ramdisk_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800358 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
359 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800360 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800361
362 file_last_line=`sed -n "$=" ${install_temp}`
363 let line=${file_last_line}-${ramdisk_last_line}
364 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800365 mkdir vendor
wanwei.jiangf73b2202022-07-23 16:00:44 +0800366 cat vendor_install.sh | cut -d ' ' -f 2 > vendor/vendor_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800367 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800368
qinglin.lie5b951e2022-06-07 16:13:44 +0800369 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' vendor_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800370 echo "echo Install vendor modules success!" >> vendor_install.sh
371 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800372 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800373}
374
wanwei.jiang612a8882021-11-23 17:12:23 +0800375function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800376 arg1=$1
377
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800378 rm -rf ${OUT_AMLOGIC_DIR}
379 mkdir -p ${OUT_AMLOGIC_DIR}
380 mkdir -p ${OUT_AMLOGIC_DIR}/modules
381 mkdir -p ${OUT_AMLOGIC_DIR}/ext_modules
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800382
383 local MODULES_ROOT_DIR=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
384 pushd ${MODULES_ROOT_DIR}
385 local common_drivers=${COMMON_DRIVERS_DIR##*/}
386 local modules_list=$(find -type f -name "*.ko")
wanwei.jiang67a191d2022-04-18 20:39:13 +0800387 for module in ${modules_list}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800388 if [[ -n ${ANDROID_PROJECT} ]]; then # copy internal build modules
389 if [[ `echo ${module} | grep -E "\.\/kernel\/|\/${common_drivers}\/"` ]]; then
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800390 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800391 else
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800392 cp ${module} ${OUT_AMLOGIC_DIR}/ext_modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800393 fi
394 else # copy all modules, include external modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800395 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800396 fi
wanwei.jiang67a191d2022-04-18 20:39:13 +0800397 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800398
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800399 if [[ -n ${ANDROID_PROJECT} ]]; then # internal build modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800400 grep -E "^kernel\/|^${common_drivers}\/" modules.dep > ${OUT_AMLOGIC_DIR}/modules/modules.dep
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800401 else # all modules, include external modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800402 cp modules.dep ${OUT_AMLOGIC_DIR}/modules
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800403 fi
404 popd
wanwei.jiang612a8882021-11-23 17:12:23 +0800405
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800406 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang612a8882021-11-23 17:12:23 +0800407 sed -i 's#[^ ]*/##g' modules.dep
408
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800409 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800410
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800411 touch __install.sh
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800412 touch modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800413 for loop in `cat modules.dep | sed 's/:.*//'`; do
414 mod_probe $loop
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800415 echo $loop >> modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800416 echo insmod $loop >> __install.sh
417 done
418
419 cat __install.sh | awk ' {
420 if (!cnt[$2]) {
421 print $0;
422 cnt[$2]++;
423 }
424 }' > __install.sh.tmp
425
qinglin.lie5b951e2022-06-07 16:13:44 +0800426 create_ramdisk_vendor __install.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800427
wanwei.jiang612a8882021-11-23 17:12:23 +0800428 echo "#!/bin/sh" > install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800429 echo "cd ramdisk" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800430 echo "./ramdisk_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800431 echo "cd ../vendor" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800432 echo "./vendor_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800433 echo "cd ../" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800434 chmod 755 install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800435
436 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
Wanwei Jianga5977bd2022-08-24 22:43:40 +0800437 rm __install.sh __install.sh.tmp
wanwei.jiang612a8882021-11-23 17:12:23 +0800438
wanwei.jiang236e9a32021-12-07 16:34:14 +0800439 popd
wanwei.jiang612a8882021-11-23 17:12:23 +0800440}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800441export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800442
443function rebuild_rootfs() {
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800444 pushd ${OUT_AMLOGIC_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800445
Lei Zhang475c17b2022-03-03 11:08:50 +0800446 local ARCH=arm64
447 if [[ -n $1 ]]; then
448 ARCH=$1
449 fi
450
wanwei.jiang612a8882021-11-23 17:12:23 +0800451 rm rootfs -rf
452 mkdir rootfs
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800453 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800454 cd rootfs
455 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
456 gunzip rootfs_base.cpio.gz
457 mkdir rootfs
458 cd rootfs
459 cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800460 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
461 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800462 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800463 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800464
wanwei.jiang612a8882021-11-23 17:12:23 +0800465 find . | cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
466 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800467 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 +0800468 mv rootfs_new.cpio.gz.uboot ../
469 cd ../
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800470 cp rootfs_new.cpio.gz.uboot ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800471
472 popd
473}
474export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800475
476function check_undefined_symbol() {
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800477 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800478 echo
479 echo "========================================================"
480 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800481 if [[ -n ${LLVM} ]]; then
482 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
483 elif [[ -n ${CROSS_COMPILE} ]]; then
484 compile_tool=${CROSS_COMPILE}
485 else
486 echo "can't find compile tool"
487 fi
488 ${compile_tool}nm ../vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
489 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
490 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
491 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
492 cp ramdisk/*.ko .
493 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800494 while read LINE
495 do
496 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800497 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 +0800498 do
499 #echo ${U}
500 U_v=`grep -w ${U} vmlinux_T.txt`
501 in_vmlinux=0
502 if [ -n "${U_v}" ];
503 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800504 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800505 in_vmlinux=1
506 continue
507 fi
508 in_module=0
509 MODULE=
510 while read LINE1
511 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800512 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 +0800513 if [ -n "${U_m}" ];
514 then
515 in_module=1
516 MODULE=${LINE1}
517 fi
518 done < module_list.txt
519 if [ ${in_module} -eq "1" ];
520 then
521 printf "\t%-50s <== %s\n" ${U} ${MODULE}
522 continue
523 else
524 printf "\t%-50s <== none\n" ${U}
525 fi
526 done
527 echo
528 echo
529 done < module_list.txt
530 rm vmlinux_T.txt
531 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800532 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +0800533 popd
534}
535export -f check_undefined_symbol