blob: 2a09bcb3591ba8b71d83448fa3dba54e53a266ba [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
qinglin.li8d41aaf2023-02-07 19:49:44 +080023 if [[ -n ${CHECK_GKI_20} ]]; then
24 local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
25 echo "CONFIG_STMMAC_ETH=n" > ${temp_file}
26 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}
27 rm ${temp_file}
28 else
29 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}
30 fi
Wanwei Jiang51217812022-11-01 20:23:03 +080031 elif [[ ${GKI_CONFIG} == gki_10 ]]; then
32 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}
33 elif [[ ${GKI_CONFIG} == gki_debug ]]; then
34 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}
35 fi
wanwei.jiang6fdd3152022-08-01 20:35:05 +080036 fi
qinglin.li7a994a02022-12-05 15:04:40 +080037
38 if [[ -n ${UPGRADE_PROJECT} ]]; then
39 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_UPGRADE}
40 fi
wanwei.jiang91776952021-11-19 13:10:32 +080041}
42export -f pre_defconfig_cmds
43
44function post_defconfig_cmds() {
Wanwei Jiang2d4f9742022-09-13 11:22:17 +080045 rm ${ROOT_DIR}/${KCONFIG_DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080046}
47export -f post_defconfig_cmds
48
49function read_ext_module_config() {
50 ALL_LINE=""
51 while read LINE
52 do
53 if [[ $LINE != \#* && $LINE != "" ]]; then
54 ALL_LINE="$ALL_LINE"" ""$LINE"
55 fi
56 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +080057
58 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080059}
60
61function read_ext_module_predefine() {
62 PRE_DEFINE=""
63
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080064 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080065 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
66 done
67
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080068 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080069 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
70 done
71
wanwei.jiang5c861ae2022-04-21 00:51:50 +080072 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080073}
74
wanwei.jiang8d4a5132022-04-28 16:43:54 +080075top_ext_drivers=top_ext_drivers
wanwei.jiang91776952021-11-19 13:10:32 +080076function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +080077 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
Wanwei Jiang0a74fb12022-12-09 16:27:40 +080078 if [[ ! `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +080079 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
80 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
81 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
82 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +080083 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +080084
85 for ext_module_config in ${EXT_MODULES_CONFIG}; do
86 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
87 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
88 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
89 done
90 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
91 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
92 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
93
wanwei.jiangc663c4c2022-06-16 14:41:23 +080094 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
95 if [[ -d ${top_ext_drivers} ]]; then
96 rm -rf ${top_ext_drivers}
97 fi
98 mkdir -p ${top_ext_drivers}
99 fi
100
101 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
102 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
103 fi
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800104 ext_modules=
105 for ext_module in ${EXT_MODULES}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800106 module_abs_path=`readlink -e ${ext_module}`
107 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
108 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
109 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
110 cp -rf ${module_abs_path} ${top_ext_drivers}
111 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
112 fi
113 fi
114 ext_modules="${ext_modules} ${module_rel_path}"
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800115 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800116
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800117 for ext_module_path in ${EXT_MODULES_PATH}; do
118 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800119 while read LINE
120 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800121 module_abs_path=`readlink -e ${LINE}`
122 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800123 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
124 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
125 cp -rf ${module_abs_path} ${top_ext_drivers}
126 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
127 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800128 fi
129 ext_modules="${ext_modules} ${module_rel_path}"
130
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800131 done < ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800132 done
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800133 EXT_MODULES=${ext_modules}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800134
135 local flag=0
136 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
137 for ext_module in ${EXT_MODULES}; do
138 ext_mod_rel=$(rel_path ${ext_module} ${KERNEL_DIR})
139 if [[ ${flag} -eq "1" ]]; then
140 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
141 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${ext_module}/Makefile
142 sed -i "2 i ${extra_symbols}" ${ext_module}/Makefile
143 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${ext_module}/Makefile
144 echo "${ext_module}/Makefile add: ${extra_symbols}"
145 fi
146 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
147 flag=1
148 done
149 fi
150
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800151 export EXT_MODULES
152 echo EXT_MODULES=${EXT_MODULES}
153
154 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +0800155}
156
157export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +0800158
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800159function extra_cmds() {
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800160 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
161 for ext_module in ${EXT_MODULES}; do
162 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
163 done
164 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800165
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800166 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
167 if [[ -d ${top_ext_drivers} ]]; then
168 rm -rf ${top_ext_drivers}
169 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800170 fi
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800171
172 for FILE in ${FILES}; do
173 if [[ "${FILE}" =~ \.dtbo ]] && \
174 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
175 MKDTIMG_DTBOS="${MKDTIMG_DTBOS} ${DIST_DIR}/${FILE}"
176 fi
177 done
178 export MKDTIMG_DTBOS
179
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800180 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800181 modules_install
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800182 set -x
183
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800184 local src_dir=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
185 pushd ${src_dir}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800186 cp modules.order modules_order.back
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800187 : > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800188 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800189 while read LINE
190 do
191 find -name ${LINE} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800192 done < ${OUT_AMLOGIC_DIR}/modules/modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800193 set -x
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800194 sed -i "s/^\.\///" modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800195 : > ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800196 ext_modules=
197 for ext_module in ${EXT_MODULES}; do
198 if [[ ${ext_module} =~ "../" ]]; then
199 ext_module_old=${ext_module}
200 ext_module=${ext_module//\.\.\//}
201 ext_dir=$(dirname ${ext_module})
202 [[ -d extra/${ext_module} ]] && rm -rf extra/${ext_dir}
203 mkdir -p extra/${ext_dir}
204 cp -rf extra/${ext_module_old} extra/${ext_dir}
205
206 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
207 ext_dir_top=${ext_module%/*}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800208 sed -i "s/\.\.\///g" ${ext_modules_order_file}
209 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800210 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800211 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800212 else
213 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
wanwei.jiangf73b2202022-07-23 16:00:44 +0800214 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800215 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800216 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800217 fi
218 ext_modules="${ext_modules} ${ext_module}"
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800219 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800220 EXT_MODULES=${ext_modules}
221 echo EXT_MODULES=${EXT_MODULES}
222 export EXT_MODULES
wanwei.jiangf73b2202022-07-23 16:00:44 +0800223
224 head -n ${ramdisk_last_line} modules.order > system_dlkm_modules
225 file_last_line=`sed -n "$=" modules.order`
226 let line=${file_last_line}-${ramdisk_last_line}
227 tail -n ${line} modules.order > vendor_dlkm_modules
228 export MODULES_LIST=${src_dir}/system_dlkm_modules
Wanwei Jianga5edc532022-12-18 17:25:59 +0800229 if [ "${ARCH}" = "arm64" -a -z ${FAST_BUILD} ]; then
Lei Zhang96efea62022-09-02 14:55:06 +0800230 export VENDOR_DLKM_MODULES_LIST=${src_dir}/vendor_dlkm_modules
231 fi
wanwei.jiangf73b2202022-07-23 16:00:44 +0800232
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800233 popd
wanwei.jiang1d154992022-05-30 14:56:26 +0800234
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800235 if [[ -z ${ANDROID_PROJECT} ]] && [[ -d ${OUT_DIR}/${DTS_EXT_DIR} ]]; then
wanwei.jiang1d154992022-05-30 14:56:26 +0800236 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
237 fi
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800238
239 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
240 : > ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangb2ed83c2022-09-09 14:01:20 +0800241 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800242 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
243 echo "OUT_DIR=${OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
244 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800245 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800246 echo "MODULES_STAGING_DIR=${MODULES_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
247 echo "MODULES_PRIVATE_DIR=${MODULES_PRIVATE_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
248 echo "INITRAMFS_STAGING_DIR=${INITRAMFS_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
249 echo "SYSTEM_DLKM_STAGING_DIR=${SYSTEM_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
250 echo "VENDOR_DLKM_STAGING_DIR=${VENDOR_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
251 echo "MKBOOTIMG_STAGING_DIR=${MKBOOTIMG_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800252 fi
Wanwei Jianga07f9a52022-09-30 18:40:40 +0800253
254 for module_path in ${PREBUILT_MODULES_PATH}; do
255 find ${module_path} -type f -name "*.ko" -exec cp {} ${DIST_DIR} \;
256 done
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800257}
258
259export -f extra_cmds
260
wanwei.jiang612a8882021-11-23 17:12:23 +0800261function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800262 local ko=$1
263 local loop
qinglin.lia284a932022-09-21 18:07:38 +0800264 for loop in `grep "^$ko:" modules.dep | sed 's/.*://'`; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800265 mod_probe $loop
266 echo insmod $loop >> __install.sh
267 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800268}
269
Wanwei Jiang571dde62022-11-17 14:37:41 +0800270function mod_probe_recovery() {
271 local ko=$1
272 local loop
273 for loop in `grep "^$ko:" modules_recovery.dep | sed 's/.*://'`; do
274 mod_probe_recovery $loop
275 echo insmod $loop >> __install_recovery.sh
276 done
277}
278
wanwei.jiangb12abc82021-12-25 22:17:10 +0800279function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800280 if [[ -n $1 ]]; then
281 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800282 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800283
284 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
285 cp modules.dep modules.dep.temp
286
287 soc_module=()
288 for chip in ${chips[@]}; do
289 chip_module=`ls amlogic-*-soc-${chip}.ko`
290 soc_module=(${soc_module[@]} ${chip_module[@]})
291 done
292 echo soc_module=${soc_module[*]}
293
294 delete_soc_module=()
295 if [[ ${#soc_module[@]} == 0 ]]; then
296 echo "Use all soc module"
297 else
298 for module in `ls amlogic-*-soc-*`; do
299 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
300 echo Delete soc module: ${module}
301 sed -n "/${module}:/p" modules.dep.temp
302 sed -i "/${module}:/d" modules.dep.temp
303 delete_soc_module=(${delete_soc_module[@]} ${module})
304 fi
305 done
306 echo delete_soc_module=${delete_soc_module[*]}
307 fi
308
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800309 if [[ -n ${CLK_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800310 delete_clk_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800311 for module in `ls amlogic-clk-soc-*`; do
312 if [[ "${CLK_SOC_MODULE}" != "${module}" ]] ; then
313 echo Delete clk soc module: ${module}
314 sed -n "/${module}:/p" modules.dep.temp
315 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800316 delete_clk_soc_modules=(${delete_clk_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800317 fi
318 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800319 echo delete_clk_soc_modules=${delete_clk_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800320 fi
321
322 if [[ -n ${PINCTRL_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800323 delete_pinctrl_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800324 for module in `ls amlogic-pinctrl-soc-*`; do
325 if [[ "${PINCTRL_SOC_MODULE}" != "${module}" ]] ; then
326 echo Delete pinctrl soc module: ${module}
327 sed -n "/${module}:/p" modules.dep.temp
328 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800329 delete_pinctrl_soc_modules=(${delete_pinctrl_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800330 fi
331 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800332 echo delete_pinctrl_soc_modules=${delete_pinctrl_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800333 fi
334
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800335 in_line_i=a
336 delete_type_modules=()
337 echo "TYPE_MODULE_SELECT_MODULE=${TYPE_MODULE_SELECT_MODULE}"
338 mkdir temp_dir
339 cd temp_dir
340 in_temp_dir=y
341 for element in ${TYPE_MODULE_SELECT_MODULE}; do
342 if [[ ${in_temp_dir} = y ]]; then
343 cd ../
344 rm -r temp_dir
345 in_temp_dir=
346 fi
347 if [[ ${in_line_i} = a ]]; then
348 in_line_i=b
349 type_module=${element}
350 select_modules_i=0
351 select_modules_count=
352 select_modules=
353 elif [[ ${in_line_i} = b ]]; then
354 in_line_i=c
355 select_modules_count=${element}
356 else
357 let select_modules_i+=1
358 select_modules="${select_modules} ${element}"
359 if [[ ${select_modules_i} -eq ${select_modules_count} ]]; then
360 in_line_i=a
361 echo type_module=$type_module select_modules=$select_modules
362 for module in `ls ${type_module}`; do
363 dont_delete_module=0
364 for select_module in ${select_modules}; do
365 if [[ "${select_module}" == "${module}" ]] ; then
366 dont_delete_module=1
367 break;
368 fi
369 done
370 if [[ ${dont_delete_module} != 1 ]]; then
371 echo Delete module: ${module}
372 sed -n "/${module}:/p" modules.dep.temp
373 sed -i "/${module}:/d" modules.dep.temp
374 delete_type_modules=(${delete_type_modules[@]} ${module})
375 fi
376 done
377 echo delete_type_modules=${delete_type_modules[*]}
378 fi
379 fi
380 done
381 if [[ -n ${in_temp_dir} ]]; then
382 cd ../
383 rm -r temp_dir
384 fi
385
386 black_modules=()
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800387 mkdir service_module
388 echo MODULES_SERVICE_LOAD_LIST=${MODULES_SERVICE_LOAD_LIST[@]}
389 BLACK_AND_SERVICE_LIST=(${MODULES_LOAD_BLACK_LIST[@]} ${MODULES_SERVICE_LOAD_LIST[@]})
390 echo ${BLACK_AND_SERVICE_LIST[@]}
391 for module in ${BLACK_AND_SERVICE_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800392 modules=`ls ${module}*`
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800393 black_modules=(${black_modules[@]} ${modules[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800394 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800395 if [[ ${#black_modules[@]} == 0 ]]; then
396 echo "black_modules is null, don't delete modules, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800397 else
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800398 echo black_modules=${black_modules[*]}
399 for module in ${black_modules[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800400 echo Delete module: ${module}
401 sed -n "/${module}:/p" modules.dep.temp
402 sed -i "/${module}:/d" modules.dep.temp
403 done
404 fi
405
406 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800407 delete_modules=(${delete_soc_module[@]} ${delete_clk_soc_modules[@]} ${delete_pinctrl_soc_modules[@]} ${delete_type_modules[@]} ${black_modules[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800408 for module in ${delete_modules[@]}; do
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800409 if [[ ! `ls $module` ]]; then
410 continue
411 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800412 match=`sed -n "/${module}/=" modules.dep.temp1`
413 for match in ${match[@]}; do
414 match_count=(${match_count[@]} $match)
415 done
416 if [[ ${#match_count[@]} != 0 ]]; then
417 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800418 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800419 exit
420 fi
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800421 if [[ -n ${ANDROID_PROJECT} ]]; then
422 for service_module_temp in ${MODULES_SERVICE_LOAD_LIST[@]}; do
423 if [[ ${module} = ${service_module_temp} ]]; then
424 mv ${module} service_module
425 fi
426 done
427 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800428 rm -f ${module}
429 done
430 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800431 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800432
433 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
434 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800435 sed -n "/${module}:/p" modules.dep.temp
436 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
437 sed -i "/${module}:/d" modules.dep.temp
438 sed -n "/${module}.*\.ko:/p" modules.dep.temp
439 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
440 sed -i "/${module}.*\.ko:/d" modules.dep.temp
441 done
442
Wanwei Jiang571dde62022-11-17 14:37:41 +0800443 if [[ -n ${ANDROID_PROJECT} ]]; then
444 cp modules.dep.temp modules_recovery.dep.temp
445 cp modules.dep.temp1 modules_recovery.dep.temp1
446 fi
447
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800448 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
449 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
450 sed -n "/${module}:/p" modules.dep.temp
451 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
452 sed -i "/${module}:/d" modules.dep.temp
453 sed -n "/${module}.*\.ko:/p" modules.dep.temp
454 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
455 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800456 done
457
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800458 if [ -f modules.dep.temp2 ]; then
459 rm modules.dep.temp2
460 fi
461 touch modules.dep.temp2
462 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
463 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
464 sed -n "/${module}:/p" modules.dep.temp
465 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
466 sed -i "/${module}:/d" modules.dep.temp
467 sed -n "/${module}.*\.ko:/p" modules.dep.temp
468 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
469 sed -i "/${module}.*\.ko:/d" modules.dep.temp
470 done
471
472 cat modules.dep.temp >> modules.dep.temp1
473 cat modules.dep.temp2 >> modules.dep.temp1
474
wanwei.jiangb12abc82021-12-25 22:17:10 +0800475 cp modules.dep.temp1 modules.dep
476 rm modules.dep.temp
477 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800478 rm modules.dep.temp2
Wanwei Jiang571dde62022-11-17 14:37:41 +0800479
480 if [[ -n ${ANDROID_PROJECT} ]]; then
481 for module in ${RECOVERY_MODULES_LOAD_LIST[@]}; do
482 echo RECOVERY_MODULES_LOAD_LIST: $module
483 sed -n "/${module}:/p" modules_recovery.dep.temp
484 sed -n "/${module}:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
485 sed -i "/${module}:/d" modules_recovery.dep.temp
486 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp
487 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
488 sed -i "/${module}.*\.ko:/d" modules_recovery.dep.temp
489 done
490
491 cat modules_recovery.dep.temp >> modules_recovery.dep.temp1
492
493 cp modules_recovery.dep.temp1 modules_recovery.dep
494 rm modules_recovery.dep.temp
495 rm modules_recovery.dep.temp1
496 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800497}
498
Wanwei Jiang571dde62022-11-17 14:37:41 +0800499create_ramdisk_vendor_recovery() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800500 install_temp=$1
Wanwei Jiang571dde62022-11-17 14:37:41 +0800501 if [[ -n ${ANDROID_PROJECT} ]]; then
502 recovery_install_temp=$2
503 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800504 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
Wanwei Jiang9173e462022-09-29 00:58:33 +0800505 ramdisk_module_i=${#RAMDISK_MODULES_LOAD_LIST[@]}
506 while [ ${ramdisk_module_i} -gt 0 ]; do
507 let ramdisk_module_i--
508 echo ramdisk_module_i=$ramdisk_module_i ${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
509 if [[ `grep "${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}" ${install_temp}` ]]; then
510 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
511 break;
512 fi
513 done
514 # last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800515 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
516 for line in ${last_ramdisk_module_line}; do
517 ramdisk_last_line=${line}
518 done
wanwei.jiangf73b2202022-07-23 16:00:44 +0800519 export ramdisk_last_line
Wanwei Jiang571dde62022-11-17 14:37:41 +0800520
521 if [[ -n ${ANDROID_PROJECT} ]]; then
522 recovery_module_i=${#RECOVERY_MODULES_LOAD_LIST[@]}
qinglin.lidba324f2023-03-02 19:56:21 +0800523 #when RECOVERY_MODULES_LOAD_LIST is NULL
524 if [ ${#RECOVERY_MODULES_LOAD_LIST[@]} -eq 0 ]; then
525 last_recovery_module=${last_ramdisk_module}
526 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800527 while [ ${recovery_module_i} -gt 0 ]; do
528 let recovery_module_i--
529 echo recovery_module_i=$recovery_module_i ${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}
530 if [[ `grep "${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}" ${recovery_install_temp}` ]]; then
531 last_recovery_module=${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}
532 break;
533 fi
534 done
535 # last_recovery_module=${RECOVERY_MODULES_LOAD_LIST[${#RECOVERY_MODULES_LOAD_LIST[@]}-1]}
536 last_recovery_module_line=`sed -n "/${last_recovery_module}/=" ${recovery_install_temp}`
537 for line in ${last_recovery_module_line}; do
538 recovery_last_line=${line}
539 done
540
541 sed -n "${ramdisk_last_line},${recovery_last_line}p" ${recovery_install_temp} > recovery_install.sh
542 sed -i "1d" recovery_install.sh
543 mkdir recovery
544 cat recovery_install.sh | cut -d ' ' -f 2 > recovery/recovery_modules.order
qinglin.lidba324f2023-03-02 19:56:21 +0800545 if [ ${#RECOVERY_MODULES_LOAD_LIST[@]} -ne 0 ]; then
546 cat recovery_install.sh | cut -d ' ' -f 2 | xargs cp -t recovery/
547 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800548 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' recovery_install.sh
549 echo "echo Install recovery modules success!" >> recovery_install.sh
550 chmod 755 recovery_install.sh
551 mv recovery_install.sh recovery/
552 fi
553
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800554 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800555 mkdir ramdisk
wanwei.jiangf73b2202022-07-23 16:00:44 +0800556 cat ramdisk_install.sh | cut -d ' ' -f 2 > ramdisk/ramdisk_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800557 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800558
qinglin.lie5b951e2022-06-07 16:13:44 +0800559 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' ramdisk_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800560 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
561 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800562 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800563
564 file_last_line=`sed -n "$=" ${install_temp}`
565 let line=${file_last_line}-${ramdisk_last_line}
566 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800567 mkdir vendor
wanwei.jiangf73b2202022-07-23 16:00:44 +0800568 cat vendor_install.sh | cut -d ' ' -f 2 > vendor/vendor_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800569 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800570
qinglin.lie5b951e2022-06-07 16:13:44 +0800571 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' vendor_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800572 echo "echo Install vendor modules success!" >> vendor_install.sh
573 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800574 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800575}
576
wanwei.jiang612a8882021-11-23 17:12:23 +0800577function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800578 arg1=$1
579
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800580 rm -rf ${OUT_AMLOGIC_DIR}
581 mkdir -p ${OUT_AMLOGIC_DIR}
582 mkdir -p ${OUT_AMLOGIC_DIR}/modules
583 mkdir -p ${OUT_AMLOGIC_DIR}/ext_modules
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800584 mkdir -p ${OUT_AMLOGIC_DIR}/symbols
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800585
586 local MODULES_ROOT_DIR=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
587 pushd ${MODULES_ROOT_DIR}
588 local common_drivers=${COMMON_DRIVERS_DIR##*/}
589 local modules_list=$(find -type f -name "*.ko")
wanwei.jiang67a191d2022-04-18 20:39:13 +0800590 for module in ${modules_list}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800591 if [[ -n ${ANDROID_PROJECT} ]]; then # copy internal build modules
592 if [[ `echo ${module} | grep -E "\.\/kernel\/|\/${common_drivers}\/"` ]]; then
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800593 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800594 else
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800595 cp ${module} ${OUT_AMLOGIC_DIR}/ext_modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800596 fi
597 else # copy all modules, include external modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800598 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800599 fi
wanwei.jiang67a191d2022-04-18 20:39:13 +0800600 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800601
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800602 if [[ -n ${ANDROID_PROJECT} ]]; then # internal build modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800603 grep -E "^kernel\/|^${common_drivers}\/" modules.dep > ${OUT_AMLOGIC_DIR}/modules/modules.dep
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800604 else # all modules, include external modules
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800605 cp modules.dep ${OUT_AMLOGIC_DIR}/modules
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800606 fi
607 popd
wanwei.jiang612a8882021-11-23 17:12:23 +0800608
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800609 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang612a8882021-11-23 17:12:23 +0800610 sed -i 's#[^ ]*/##g' modules.dep
611
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800612 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800613
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800614 touch __install.sh
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800615 touch modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800616 for loop in `cat modules.dep | sed 's/:.*//'`; do
617 mod_probe $loop
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800618 echo $loop >> modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800619 echo insmod $loop >> __install.sh
620 done
621
622 cat __install.sh | awk ' {
623 if (!cnt[$2]) {
624 print $0;
625 cnt[$2]++;
626 }
627 }' > __install.sh.tmp
628
Wanwei Jiangbf119d22022-10-27 09:49:49 +0800629 cp modules.order modules.order.back
630 cut -d ' ' -f 2 __install.sh.tmp > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800631
632 if [[ -n ${ANDROID_PROJECT} ]]; then
633 touch __install_recovery.sh
634 touch modules_recovery.order
635 for loop in `cat modules_recovery.dep | sed 's/:.*//'`; do
636 mod_probe_recovery $loop
637 echo $loop >> modules_recovery.order
638 echo insmod $loop >> __install_recovery.sh
639 done
640
641 cat __install_recovery.sh | awk ' {
642 if (!cnt[$2]) {
643 print $0;
644 cnt[$2]++;
645 }
646 }' > __install_recovery.sh.tmp
647
648 cut -d ' ' -f 2 __install_recovery.sh.tmp > modules_recovery.order
649 fi
650 create_ramdisk_vendor_recovery __install.sh.tmp __install_recovery.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800651
Dezhen Wang124ad7d2023-02-06 15:35:14 +0800652 if [[ -n ${MANUAL_INSMOD_MODULE} ]]; then
653 install_file=manual_install.sh
654 else
655 install_file=install.sh
656 fi
657 echo "#!/bin/sh" > ${install_file}
658 echo "cd ramdisk" >> ${install_file}
659 echo "./ramdisk_install.sh" >> ${install_file}
660 echo "cd ../vendor" >> ${install_file}
661 echo "./vendor_install.sh" >> ${install_file}
662 echo "cd ../" >> ${install_file}
663 chmod 755 ${install_file}
wanwei.jiang612a8882021-11-23 17:12:23 +0800664
665 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
Wanwei Jianga5977bd2022-08-24 22:43:40 +0800666 rm __install.sh __install.sh.tmp
wanwei.jiang612a8882021-11-23 17:12:23 +0800667
Wanwei Jiang571dde62022-11-17 14:37:41 +0800668 if [[ -n ${ANDROID_PROJECT} ]]; then
669 rm __install_recovery.sh __install_recovery.sh.tmp
670 fi
671
wanwei.jiang236e9a32021-12-07 16:34:14 +0800672 popd
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800673
674 cp ${OUT_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
675 find ${OUT_DIR} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
676 for ext_module in ${EXT_MODULES}; do
677 find ${COMMON_OUT_DIR}/${ext_module} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
678 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800679}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800680export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800681
682function rebuild_rootfs() {
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800683 pushd ${OUT_AMLOGIC_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800684
Lei Zhang475c17b2022-03-03 11:08:50 +0800685 local ARCH=arm64
686 if [[ -n $1 ]]; then
687 ARCH=$1
688 fi
689
wanwei.jiang612a8882021-11-23 17:12:23 +0800690 rm rootfs -rf
691 mkdir rootfs
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800692 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800693 cd rootfs
694 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
695 gunzip rootfs_base.cpio.gz
696 mkdir rootfs
697 cd rootfs
698 cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800699 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
700 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800701 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800702 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800703
wanwei.jiang612a8882021-11-23 17:12:23 +0800704 find . | cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
705 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800706 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 +0800707 mv rootfs_new.cpio.gz.uboot ../
708 cd ../
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800709 cp rootfs_new.cpio.gz.uboot ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800710
711 popd
712}
713export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800714
715function check_undefined_symbol() {
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800716 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800717 echo
718 echo "========================================================"
719 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800720 if [[ -n ${LLVM} ]]; then
721 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
722 elif [[ -n ${CROSS_COMPILE} ]]; then
723 compile_tool=${CROSS_COMPILE}
724 else
725 echo "can't find compile tool"
726 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800727 ${compile_tool}nm ${DIST_DIR}/vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800728 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
729 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
730 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
731 cp ramdisk/*.ko .
732 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800733 while read LINE
734 do
735 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800736 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 +0800737 do
738 #echo ${U}
739 U_v=`grep -w ${U} vmlinux_T.txt`
740 in_vmlinux=0
741 if [ -n "${U_v}" ];
742 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800743 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800744 in_vmlinux=1
745 continue
746 fi
747 in_module=0
748 MODULE=
749 while read LINE1
750 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800751 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 +0800752 if [ -n "${U_m}" ];
753 then
754 in_module=1
755 MODULE=${LINE1}
756 fi
757 done < module_list.txt
758 if [ ${in_module} -eq "1" ];
759 then
760 printf "\t%-50s <== %s\n" ${U} ${MODULE}
761 continue
762 else
763 printf "\t%-50s <== none\n" ${U}
764 fi
765 done
766 echo
767 echo
768 done < module_list.txt
769 rm vmlinux_T.txt
770 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800771 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +0800772 popd
773}
774export -f check_undefined_symbol