blob: b7d68d5df5b6ac434f74a50811ef46338dd3c316 [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
wanwei.jiang91776952021-11-19 13:10:32 +080030}
31export -f pre_defconfig_cmds
32
33function post_defconfig_cmds() {
wanwei.jiang1482c872022-05-13 20:33:51 +080034 if [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
35 check_defconfig
36 fi
Wanwei Jiang2d4f9742022-09-13 11:22:17 +080037 rm ${ROOT_DIR}/${KCONFIG_DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080038}
39export -f post_defconfig_cmds
40
41function read_ext_module_config() {
42 ALL_LINE=""
43 while read LINE
44 do
45 if [[ $LINE != \#* && $LINE != "" ]]; then
46 ALL_LINE="$ALL_LINE"" ""$LINE"
47 fi
48 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +080049
50 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080051}
52
53function read_ext_module_predefine() {
54 PRE_DEFINE=""
55
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080056 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080057 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
58 done
59
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080060 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080061 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
62 done
63
wanwei.jiang5c861ae2022-04-21 00:51:50 +080064 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080065}
66
wanwei.jiang8d4a5132022-04-28 16:43:54 +080067top_ext_drivers=top_ext_drivers
wanwei.jiang91776952021-11-19 13:10:32 +080068function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +080069 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +080070 if [[ -z ${IN_KERNEL_MODULES} ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +080071 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
72 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
73 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
74 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +080075 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +080076
77 for ext_module_config in ${EXT_MODULES_CONFIG}; do
78 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
79 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
80 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
81 done
82 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
83 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
84 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
85
wanwei.jiangc663c4c2022-06-16 14:41:23 +080086 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
87 if [[ -d ${top_ext_drivers} ]]; then
88 rm -rf ${top_ext_drivers}
89 fi
90 mkdir -p ${top_ext_drivers}
91 fi
92
93 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
94 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
95 fi
wanwei.jiangcb5c4c82022-04-25 16:47:24 +080096 ext_modules=
97 for ext_module in ${EXT_MODULES}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +080098 module_abs_path=`readlink -e ${ext_module}`
99 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
100 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
101 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
102 cp -rf ${module_abs_path} ${top_ext_drivers}
103 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
104 fi
105 fi
106 ext_modules="${ext_modules} ${module_rel_path}"
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800107 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800108
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800109 for ext_module_path in ${EXT_MODULES_PATH}; do
110 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800111 while read LINE
112 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800113 module_abs_path=`readlink -e ${LINE}`
114 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800115 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
116 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
117 cp -rf ${module_abs_path} ${top_ext_drivers}
118 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
119 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800120 fi
121 ext_modules="${ext_modules} ${module_rel_path}"
122
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800123 done < ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800124 done
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800125 EXT_MODULES=${ext_modules}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800126
127 local flag=0
128 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
129 for ext_module in ${EXT_MODULES}; do
130 ext_mod_rel=$(rel_path ${ext_module} ${KERNEL_DIR})
131 if [[ ${flag} -eq "1" ]]; then
132 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
133 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${ext_module}/Makefile
134 sed -i "2 i ${extra_symbols}" ${ext_module}/Makefile
135 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${ext_module}/Makefile
136 echo "${ext_module}/Makefile add: ${extra_symbols}"
137 fi
138 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
139 flag=1
140 done
141 fi
142
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800143 export EXT_MODULES
144 echo EXT_MODULES=${EXT_MODULES}
145
146 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +0800147}
148
149export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +0800150
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800151function extra_cmds() {
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800152 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
153 for ext_module in ${EXT_MODULES}; do
154 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
155 done
156 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800157
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800158 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
159 if [[ -d ${top_ext_drivers} ]]; then
160 rm -rf ${top_ext_drivers}
161 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800162 fi
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800163
164 for FILE in ${FILES}; do
165 if [[ "${FILE}" =~ \.dtbo ]] && \
166 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
167 MKDTIMG_DTBOS="${MKDTIMG_DTBOS} ${DIST_DIR}/${FILE}"
168 fi
169 done
170 export MKDTIMG_DTBOS
171
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800172 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800173 modules_install
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800174 set -x
175
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800176 local src_dir=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
177 pushd ${src_dir}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800178 cp modules.order modules_order.back
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800179 : > modules.order
180 while read LINE
181 do
182 find -name ${LINE} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800183 done < ${OUT_AMLOGIC_DIR}/modules/modules.order
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800184 sed -i "s/^\.\///" modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800185 : > ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800186 ext_modules=
187 for ext_module in ${EXT_MODULES}; do
188 if [[ ${ext_module} =~ "../" ]]; then
189 ext_module_old=${ext_module}
190 ext_module=${ext_module//\.\.\//}
191 ext_dir=$(dirname ${ext_module})
192 [[ -d extra/${ext_module} ]] && rm -rf extra/${ext_dir}
193 mkdir -p extra/${ext_dir}
194 cp -rf extra/${ext_module_old} extra/${ext_dir}
195
196 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
197 ext_dir_top=${ext_module%/*}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800198 sed -i "s/\.\.\///g" ${ext_modules_order_file}
199 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800200 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800201 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800202 else
203 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
wanwei.jiangf73b2202022-07-23 16:00:44 +0800204 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800205 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800206 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800207 fi
208 ext_modules="${ext_modules} ${ext_module}"
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800209 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800210 EXT_MODULES=${ext_modules}
211 echo EXT_MODULES=${EXT_MODULES}
212 export EXT_MODULES
wanwei.jiangf73b2202022-07-23 16:00:44 +0800213
214 head -n ${ramdisk_last_line} modules.order > system_dlkm_modules
215 file_last_line=`sed -n "$=" modules.order`
216 let line=${file_last_line}-${ramdisk_last_line}
217 tail -n ${line} modules.order > vendor_dlkm_modules
218 export MODULES_LIST=${src_dir}/system_dlkm_modules
Lei Zhang96efea62022-09-02 14:55:06 +0800219 if [ "${ARCH}" = "arm64" ]; then
220 export VENDOR_DLKM_MODULES_LIST=${src_dir}/vendor_dlkm_modules
221 fi
wanwei.jiangf73b2202022-07-23 16:00:44 +0800222
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800223 popd
wanwei.jiang1d154992022-05-30 14:56:26 +0800224
225 if [[ -z ${ANDROID_PROJECT} ]]; then
226 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
227 fi
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800228
229 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
230 : > ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangb2ed83c2022-09-09 14:01:20 +0800231 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800232 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
233 echo "OUT_DIR=${OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
234 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800235 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800236 echo "MODULES_STAGING_DIR=${MODULES_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
237 echo "MODULES_PRIVATE_DIR=${MODULES_PRIVATE_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
238 echo "INITRAMFS_STAGING_DIR=${INITRAMFS_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
239 echo "SYSTEM_DLKM_STAGING_DIR=${SYSTEM_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
240 echo "VENDOR_DLKM_STAGING_DIR=${VENDOR_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
241 echo "MKBOOTIMG_STAGING_DIR=${MKBOOTIMG_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800242 fi
Wanwei Jianga07f9a52022-09-30 18:40:40 +0800243
244 for module_path in ${PREBUILT_MODULES_PATH}; do
245 find ${module_path} -type f -name "*.ko" -exec cp {} ${DIST_DIR} \;
246 done
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800247}
248
249export -f extra_cmds
250
wanwei.jiang612a8882021-11-23 17:12:23 +0800251function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800252 local ko=$1
253 local loop
qinglin.lia284a932022-09-21 18:07:38 +0800254 for loop in `grep "^$ko:" modules.dep | sed 's/.*://'`; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800255 mod_probe $loop
256 echo insmod $loop >> __install.sh
257 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800258}
259
wanwei.jiangb12abc82021-12-25 22:17:10 +0800260function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800261 if [[ -n $1 ]]; then
262 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800263 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800264
265 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
266 cp modules.dep modules.dep.temp
267
268 soc_module=()
269 for chip in ${chips[@]}; do
270 chip_module=`ls amlogic-*-soc-${chip}.ko`
271 soc_module=(${soc_module[@]} ${chip_module[@]})
272 done
273 echo soc_module=${soc_module[*]}
274
275 delete_soc_module=()
276 if [[ ${#soc_module[@]} == 0 ]]; then
277 echo "Use all soc module"
278 else
279 for module in `ls amlogic-*-soc-*`; do
280 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
281 echo Delete soc module: ${module}
282 sed -n "/${module}:/p" modules.dep.temp
283 sed -i "/${module}:/d" modules.dep.temp
284 delete_soc_module=(${delete_soc_module[@]} ${module})
285 fi
286 done
287 echo delete_soc_module=${delete_soc_module[*]}
288 fi
289
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800290 if [[ -n ${CLK_SOC_MODULE} ]]; then
291 delete_clk_soc_module=()
292 for module in `ls amlogic-clk-soc-*`; do
293 if [[ "${CLK_SOC_MODULE}" != "${module}" ]] ; then
294 echo Delete clk soc module: ${module}
295 sed -n "/${module}:/p" modules.dep.temp
296 sed -i "/${module}:/d" modules.dep.temp
297 delete_clk_soc_module=(${delete_clk_soc_module[@]} ${module})
298 fi
299 done
300 echo delete_clk_soc_module=${delete_clk_soc_module[*]}
301 fi
302
303 if [[ -n ${PINCTRL_SOC_MODULE} ]]; then
304 delete_pinctrl_soc_module=()
305 for module in `ls amlogic-pinctrl-soc-*`; do
306 if [[ "${PINCTRL_SOC_MODULE}" != "${module}" ]] ; then
307 echo Delete pinctrl soc module: ${module}
308 sed -n "/${module}:/p" modules.dep.temp
309 sed -i "/${module}:/d" modules.dep.temp
310 delete_pinctrl_soc_module=(${delete_pinctrl_soc_module[@]} ${module})
311 fi
312 done
313 echo delete_pinctrl_soc_module=${delete_pinctrl_soc_module[*]}
314 fi
315
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800316 delete_module=()
wanwei.jiang50759e12022-03-24 12:36:17 +0800317 for module in ${MODULES_LOAD_BLACK_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800318 modules=`ls ${module}*`
319 delete_module=(${delete_module[@]} ${modules[@]})
320 done
321 if [[ ${#delete_module[@]} == 0 ]]; then
wanwei.jiang50759e12022-03-24 12:36:17 +0800322 echo "No delete module, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800323 else
324 echo delete_module=${delete_module[*]}
325 for module in ${delete_module[@]}; do
326 echo Delete module: ${module}
327 sed -n "/${module}:/p" modules.dep.temp
328 sed -i "/${module}:/d" modules.dep.temp
329 done
330 fi
331
332 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800333 delete_modules=(${delete_soc_module[@]} ${delete_clk_soc_module} ${delete_pinctrl_soc_module} ${delete_module[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800334 for module in ${delete_modules[@]}; do
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800335 if [[ ! `ls $module` ]]; then
336 continue
337 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800338 match=`sed -n "/${module}/=" modules.dep.temp1`
339 for match in ${match[@]}; do
340 match_count=(${match_count[@]} $match)
341 done
342 if [[ ${#match_count[@]} != 0 ]]; then
343 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800344 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800345 exit
346 fi
347 rm -f ${module}
348 done
349 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800350 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800351
352 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
353 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800354 sed -n "/${module}:/p" modules.dep.temp
355 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
356 sed -i "/${module}:/d" modules.dep.temp
357 sed -n "/${module}.*\.ko:/p" modules.dep.temp
358 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
359 sed -i "/${module}.*\.ko:/d" modules.dep.temp
360 done
361
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800362 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
363 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
364 sed -n "/${module}:/p" modules.dep.temp
365 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
366 sed -i "/${module}:/d" modules.dep.temp
367 sed -n "/${module}.*\.ko:/p" modules.dep.temp
368 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
369 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800370 done
371
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800372 if [ -f modules.dep.temp2 ]; then
373 rm modules.dep.temp2
374 fi
375 touch modules.dep.temp2
376 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
377 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
378 sed -n "/${module}:/p" modules.dep.temp
379 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
380 sed -i "/${module}:/d" modules.dep.temp
381 sed -n "/${module}.*\.ko:/p" modules.dep.temp
382 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
383 sed -i "/${module}.*\.ko:/d" modules.dep.temp
384 done
385
386 cat modules.dep.temp >> modules.dep.temp1
387 cat modules.dep.temp2 >> modules.dep.temp1
388
wanwei.jiangb12abc82021-12-25 22:17:10 +0800389 cp modules.dep.temp1 modules.dep
390 rm modules.dep.temp
391 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800392 rm modules.dep.temp2
393}
394
qinglin.lie5b951e2022-06-07 16:13:44 +0800395create_ramdisk_vendor() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800396 install_temp=$1
397 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
Wanwei Jiang9173e462022-09-29 00:58:33 +0800398 ramdisk_module_i=${#RAMDISK_MODULES_LOAD_LIST[@]}
399 while [ ${ramdisk_module_i} -gt 0 ]; do
400 let ramdisk_module_i--
401 echo ramdisk_module_i=$ramdisk_module_i ${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
402 if [[ `grep "${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}" ${install_temp}` ]]; then
403 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
404 break;
405 fi
406 done
407 # last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800408 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
409 for line in ${last_ramdisk_module_line}; do
410 ramdisk_last_line=${line}
411 done
wanwei.jiangf73b2202022-07-23 16:00:44 +0800412 export ramdisk_last_line
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800413 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800414 mkdir ramdisk
wanwei.jiangf73b2202022-07-23 16:00:44 +0800415 cat ramdisk_install.sh | cut -d ' ' -f 2 > ramdisk/ramdisk_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800416 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800417
qinglin.lie5b951e2022-06-07 16:13:44 +0800418 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' ramdisk_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800419 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
420 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800421 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800422
423 file_last_line=`sed -n "$=" ${install_temp}`
424 let line=${file_last_line}-${ramdisk_last_line}
425 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800426 mkdir vendor
wanwei.jiangf73b2202022-07-23 16:00:44 +0800427 cat vendor_install.sh | cut -d ' ' -f 2 > vendor/vendor_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800428 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800429
qinglin.lie5b951e2022-06-07 16:13:44 +0800430 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' vendor_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800431 echo "echo Install vendor modules success!" >> vendor_install.sh
432 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800433 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800434}
435
wanwei.jiang612a8882021-11-23 17:12:23 +0800436function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800437 arg1=$1
438
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800439 rm -rf ${OUT_AMLOGIC_DIR}
440 mkdir -p ${OUT_AMLOGIC_DIR}
441 mkdir -p ${OUT_AMLOGIC_DIR}/modules
442 mkdir -p ${OUT_AMLOGIC_DIR}/ext_modules
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800443
444 local MODULES_ROOT_DIR=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
445 pushd ${MODULES_ROOT_DIR}
446 local common_drivers=${COMMON_DRIVERS_DIR##*/}
447 local modules_list=$(find -type f -name "*.ko")
wanwei.jiang67a191d2022-04-18 20:39:13 +0800448 for module in ${modules_list}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800449 if [[ -n ${ANDROID_PROJECT} ]]; then # copy internal build modules
450 if [[ `echo ${module} | grep -E "\.\/kernel\/|\/${common_drivers}\/"` ]]; then
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800451 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800452 else
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800453 cp ${module} ${OUT_AMLOGIC_DIR}/ext_modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800454 fi
455 else # copy all modules, include external modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800456 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800457 fi
wanwei.jiang67a191d2022-04-18 20:39:13 +0800458 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800459
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800460 if [[ -n ${ANDROID_PROJECT} ]]; then # internal build modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800461 grep -E "^kernel\/|^${common_drivers}\/" modules.dep > ${OUT_AMLOGIC_DIR}/modules/modules.dep
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800462 else # all modules, include external modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800463 cp modules.dep ${OUT_AMLOGIC_DIR}/modules
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800464 fi
465 popd
wanwei.jiang612a8882021-11-23 17:12:23 +0800466
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800467 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang612a8882021-11-23 17:12:23 +0800468 sed -i 's#[^ ]*/##g' modules.dep
469
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800470 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800471
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800472 touch __install.sh
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800473 touch modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800474 for loop in `cat modules.dep | sed 's/:.*//'`; do
475 mod_probe $loop
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800476 echo $loop >> modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800477 echo insmod $loop >> __install.sh
478 done
479
480 cat __install.sh | awk ' {
481 if (!cnt[$2]) {
482 print $0;
483 cnt[$2]++;
484 }
485 }' > __install.sh.tmp
486
Wanwei Jiangbf119d22022-10-27 09:49:49 +0800487 cp modules.order modules.order.back
488 cut -d ' ' -f 2 __install.sh.tmp > modules.order
qinglin.lie5b951e2022-06-07 16:13:44 +0800489 create_ramdisk_vendor __install.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800490
wanwei.jiang612a8882021-11-23 17:12:23 +0800491 echo "#!/bin/sh" > install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800492 echo "cd ramdisk" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800493 echo "./ramdisk_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800494 echo "cd ../vendor" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800495 echo "./vendor_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800496 echo "cd ../" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800497 chmod 755 install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800498
499 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
Wanwei Jianga5977bd2022-08-24 22:43:40 +0800500 rm __install.sh __install.sh.tmp
wanwei.jiang612a8882021-11-23 17:12:23 +0800501
wanwei.jiang236e9a32021-12-07 16:34:14 +0800502 popd
wanwei.jiang612a8882021-11-23 17:12:23 +0800503}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800504export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800505
506function rebuild_rootfs() {
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800507 pushd ${OUT_AMLOGIC_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800508
Lei Zhang475c17b2022-03-03 11:08:50 +0800509 local ARCH=arm64
510 if [[ -n $1 ]]; then
511 ARCH=$1
512 fi
513
wanwei.jiang612a8882021-11-23 17:12:23 +0800514 rm rootfs -rf
515 mkdir rootfs
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800516 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800517 cd rootfs
518 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
519 gunzip rootfs_base.cpio.gz
520 mkdir rootfs
521 cd rootfs
522 cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800523 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
524 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800525 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800526 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800527
wanwei.jiang612a8882021-11-23 17:12:23 +0800528 find . | cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
529 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800530 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 +0800531 mv rootfs_new.cpio.gz.uboot ../
532 cd ../
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800533 cp rootfs_new.cpio.gz.uboot ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800534
535 popd
536}
537export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800538
539function check_undefined_symbol() {
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800540 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800541 echo
542 echo "========================================================"
543 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800544 if [[ -n ${LLVM} ]]; then
545 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
546 elif [[ -n ${CROSS_COMPILE} ]]; then
547 compile_tool=${CROSS_COMPILE}
548 else
549 echo "can't find compile tool"
550 fi
551 ${compile_tool}nm ../vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
552 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
553 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
554 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
555 cp ramdisk/*.ko .
556 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800557 while read LINE
558 do
559 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800560 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 +0800561 do
562 #echo ${U}
563 U_v=`grep -w ${U} vmlinux_T.txt`
564 in_vmlinux=0
565 if [ -n "${U_v}" ];
566 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800567 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800568 in_vmlinux=1
569 continue
570 fi
571 in_module=0
572 MODULE=
573 while read LINE1
574 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800575 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 +0800576 if [ -n "${U_m}" ];
577 then
578 in_module=1
579 MODULE=${LINE1}
580 fi
581 done < module_list.txt
582 if [ ${in_module} -eq "1" ];
583 then
584 printf "\t%-50s <== %s\n" ${U} ${MODULE}
585 continue
586 else
587 printf "\t%-50s <== none\n" ${U}
588 fi
589 done
590 echo
591 echo
592 done < module_list.txt
593 rm vmlinux_T.txt
594 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800595 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +0800596 popd
597}
598export -f check_undefined_symbol