blob: 9482a4ab8aace8ae9e380a85b48d0e4d70c7eda9 [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
Dezhen Wang061c4782023-05-25 11:13:08 +080039 if [[ ${ANDROID_VERSION} == r || ${ANDROID_VERSION} == R ]]; then
40 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_R}
41 fi
qinglin.libce54712023-05-08 13:56:31 +080042 if [[ ${ANDROID_VERSION} == p || ${ANDROID_VERSION} == P ]]; then
43 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_P}
44 fi
Dezhen Wang061c4782023-05-25 11:13:08 +080045 if [[ ${ANDROID_VERSION} == s || ${ANDROID_VERSION} == S ]]; then
46 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_S}
47 fi
qinglin.li7a994a02022-12-05 15:04:40 +080048 fi
Dezhen Wangab7ba642023-03-15 14:10:44 +080049
Wanwei Jiangc65e4d32023-03-21 16:24:41 +080050 if [[ ${IN_BUILD_GKI_10} == 1 ]]; then
51 local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
52 echo "CONFIG_MODULE_SIG_ALL=y" >> ${temp_file}
53 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${temp_file}
54 rm ${temp_file}
55 fi
Dezhen Wanga5f456a2023-05-05 17:40:31 +080056
57 if [[ -n ${DEV_CONFIGS} ]]; then
58 config_list=$(echo ${DEV_CONFIGS}|sed 's/+/ /g')
59 #verify the extra config is in the right path and merge the config
60 CONFIG_DIR=arch/${ARCH}/configs
61 for config_name in ${config_list[@]}
62 do
63 if [[ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/${CONFIG_DIR}/${config_name} ]]; then
64 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/${CONFIG_DIR}/${config_name}
65 elif [[ -f ${config_name} ]]; then
66 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${config_name}
67 else
68 echo "ERROR: config file ${config_name} is not in the right path!!"
69 exit
70 fi
71 done
72 fi
wanwei.jiang91776952021-11-19 13:10:32 +080073}
74export -f pre_defconfig_cmds
75
76function post_defconfig_cmds() {
Wanwei Jiang2d4f9742022-09-13 11:22:17 +080077 rm ${ROOT_DIR}/${KCONFIG_DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080078}
79export -f post_defconfig_cmds
80
81function read_ext_module_config() {
82 ALL_LINE=""
83 while read LINE
84 do
85 if [[ $LINE != \#* && $LINE != "" ]]; then
86 ALL_LINE="$ALL_LINE"" ""$LINE"
87 fi
88 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +080089
90 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080091}
92
93function read_ext_module_predefine() {
94 PRE_DEFINE=""
95
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080096 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080097 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
98 done
99
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800100 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +0800101 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
102 done
103
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800104 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +0800105}
106
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800107top_ext_drivers=top_ext_drivers
wanwei.jiang91776952021-11-19 13:10:32 +0800108function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800109 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800110 if [[ ! `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800111 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
112 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
113 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
114 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +0800115 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800116
117 for ext_module_config in ${EXT_MODULES_CONFIG}; do
118 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
119 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
120 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
121 done
122 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
123 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
124 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
125
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800126 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
127 if [[ -d ${top_ext_drivers} ]]; then
128 rm -rf ${top_ext_drivers}
129 fi
130 mkdir -p ${top_ext_drivers}
131 fi
132
133 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
134 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
135 fi
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800136 ext_modules=
137 for ext_module in ${EXT_MODULES}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800138 module_abs_path=`readlink -e ${ext_module}`
139 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
140 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
141 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
142 cp -rf ${module_abs_path} ${top_ext_drivers}
143 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
144 fi
145 fi
146 ext_modules="${ext_modules} ${module_rel_path}"
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800147 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800148
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800149 for ext_module_path in ${EXT_MODULES_PATH}; do
150 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800151 while read LINE
152 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800153 module_abs_path=`readlink -e ${LINE}`
154 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800155 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
156 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
157 cp -rf ${module_abs_path} ${top_ext_drivers}
158 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
159 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800160 fi
161 ext_modules="${ext_modules} ${module_rel_path}"
162
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800163 done < ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800164 done
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800165 EXT_MODULES=${ext_modules}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800166
167 local flag=0
168 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
169 for ext_module in ${EXT_MODULES}; do
170 ext_mod_rel=$(rel_path ${ext_module} ${KERNEL_DIR})
171 if [[ ${flag} -eq "1" ]]; then
172 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
173 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${ext_module}/Makefile
174 sed -i "2 i ${extra_symbols}" ${ext_module}/Makefile
175 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${ext_module}/Makefile
176 echo "${ext_module}/Makefile add: ${extra_symbols}"
177 fi
178 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
179 flag=1
180 done
181 fi
182
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800183 export EXT_MODULES
184 echo EXT_MODULES=${EXT_MODULES}
185
186 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +0800187}
188
189export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +0800190
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800191function extra_cmds() {
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800192 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
193 for ext_module in ${EXT_MODULES}; do
194 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
195 done
196 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800197
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800198 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
199 if [[ -d ${top_ext_drivers} ]]; then
200 rm -rf ${top_ext_drivers}
201 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800202 fi
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800203
204 for FILE in ${FILES}; do
205 if [[ "${FILE}" =~ \.dtbo ]] && \
206 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
207 MKDTIMG_DTBOS="${MKDTIMG_DTBOS} ${DIST_DIR}/${FILE}"
208 fi
209 done
210 export MKDTIMG_DTBOS
211
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800212 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800213 modules_install
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800214 set -x
215
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800216 local src_dir=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
217 pushd ${src_dir}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800218 cp modules.order modules_order.back
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800219 : > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800220 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800221 while read LINE
222 do
223 find -name ${LINE} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800224 done < ${OUT_AMLOGIC_DIR}/modules/modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800225 set -x
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800226 sed -i "s/^\.\///" modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800227 : > ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800228 ext_modules=
229 for ext_module in ${EXT_MODULES}; do
230 if [[ ${ext_module} =~ "../" ]]; then
231 ext_module_old=${ext_module}
232 ext_module=${ext_module//\.\.\//}
233 ext_dir=$(dirname ${ext_module})
234 [[ -d extra/${ext_module} ]] && rm -rf extra/${ext_dir}
235 mkdir -p extra/${ext_dir}
236 cp -rf extra/${ext_module_old} extra/${ext_dir}
237
238 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
239 ext_dir_top=${ext_module%/*}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800240 sed -i "s/\.\.\///g" ${ext_modules_order_file}
241 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800242 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800243 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800244 else
245 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
wanwei.jiangf73b2202022-07-23 16:00:44 +0800246 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800247 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800248 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800249 fi
250 ext_modules="${ext_modules} ${ext_module}"
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800251 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800252 EXT_MODULES=${ext_modules}
253 echo EXT_MODULES=${EXT_MODULES}
254 export EXT_MODULES
wanwei.jiangf73b2202022-07-23 16:00:44 +0800255
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800256 head -n ${ramdisk_last_line} modules.order > vendor_boot_modules
wanwei.jiangf73b2202022-07-23 16:00:44 +0800257 file_last_line=`sed -n "$=" modules.order`
258 let line=${file_last_line}-${ramdisk_last_line}
259 tail -n ${line} modules.order > vendor_dlkm_modules
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800260 export MODULES_LIST=${src_dir}/vendor_boot_modules
261 if [[ "${ARCH}" = "arm64" && -z ${FAST_BUILD} ]]; then
Lei Zhang96efea62022-09-02 14:55:06 +0800262 export VENDOR_DLKM_MODULES_LIST=${src_dir}/vendor_dlkm_modules
263 fi
wanwei.jiangf73b2202022-07-23 16:00:44 +0800264
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800265 popd
wanwei.jiang1d154992022-05-30 14:56:26 +0800266
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800267 if [[ -z ${ANDROID_PROJECT} ]] && [[ -d ${OUT_DIR}/${DTS_EXT_DIR} ]]; then
wanwei.jiang1d154992022-05-30 14:56:26 +0800268 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
269 fi
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800270
271 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
272 : > ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangb2ed83c2022-09-09 14:01:20 +0800273 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800274 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
275 echo "OUT_DIR=${OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
276 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800277 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800278 echo "MODULES_STAGING_DIR=${MODULES_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
279 echo "MODULES_PRIVATE_DIR=${MODULES_PRIVATE_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
280 echo "INITRAMFS_STAGING_DIR=${INITRAMFS_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
281 echo "SYSTEM_DLKM_STAGING_DIR=${SYSTEM_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
282 echo "VENDOR_DLKM_STAGING_DIR=${VENDOR_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
283 echo "MKBOOTIMG_STAGING_DIR=${MKBOOTIMG_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800284 echo "DIST_GKI_DIR=${DIST_GKI_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
285 echo "FULL_KERNEL_VERSION=${FULL_KERNEL_VERSION}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8fe00342023-05-16 22:53:14 +0800286 echo "GKI_MODULES_LOAD_WHITE_LIST=\"${GKI_MODULES_LOAD_WHITE_LIST[*]}\"" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8042e472023-06-06 14:12:32 +0800287 echo "BAZEL=${BAZEL}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800288 fi
Wanwei Jianga07f9a52022-09-30 18:40:40 +0800289
290 for module_path in ${PREBUILT_MODULES_PATH}; do
291 find ${module_path} -type f -name "*.ko" -exec cp {} ${DIST_DIR} \;
292 done
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800293}
294
295export -f extra_cmds
296
Wanwei Jiang2218b892023-03-17 17:31:21 +0800297function bazel_extra_cmds() {
298 modules_install
299
300 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
301 : > ${KERNEL_BUILD_VAR_FILE}
302 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
303 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
304 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
305 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8fe00342023-05-16 22:53:14 +0800306 echo "GKI_MODULES_LOAD_WHITE_LIST=\"${GKI_MODULES_LOAD_WHITE_LIST[*]}\"" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8042e472023-06-06 14:12:32 +0800307 echo "BAZEL=${BAZEL}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang2218b892023-03-17 17:31:21 +0800308 fi
309
310 if [[ ${GKI_CONFIG} != gki_20 ]]; then
311 [[ -f ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz ]] && rm -f ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
312 mv ${DIST_DIR}/system_dlkm_staging_archive.tar.gz ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
313 [[ -d ${DIST_DIR}/system_dlkm_gki10 ]] && rm -rf ${DIST_DIR}/system_dlkm_gki10
314 mkdir ${DIST_DIR}/system_dlkm_gki10
315 pushd ${DIST_DIR}/system_dlkm_gki10
316 tar zxf ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
317 find -name "*.ko" | while read module; do
Wanwei Jiang475245b2023-05-10 21:06:52 +0800318 module_name=${module##*/}
Wanwei Jiang2218b892023-03-17 17:31:21 +0800319 if [[ ! `grep "/${module_name}" ${DIST_DIR}/system_dlkm.modules.load` ]]; then
320 rm -f ${module}
321 fi
322 done
323 tar czf ${DIST_DIR}/system_dlkm_staging_archive.tar.gz lib
324 popd
325 rm -rf ${DIST_DIR}/system_dlkm_gki10
326 fi
327}
328
329export -f bazel_extra_cmds
330
wanwei.jiang612a8882021-11-23 17:12:23 +0800331function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800332 local ko=$1
333 local loop
qinglin.lia284a932022-09-21 18:07:38 +0800334 for loop in `grep "^$ko:" modules.dep | sed 's/.*://'`; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800335 mod_probe $loop
336 echo insmod $loop >> __install.sh
337 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800338}
339
Wanwei Jiang571dde62022-11-17 14:37:41 +0800340function mod_probe_recovery() {
341 local ko=$1
342 local loop
343 for loop in `grep "^$ko:" modules_recovery.dep | sed 's/.*://'`; do
344 mod_probe_recovery $loop
345 echo insmod $loop >> __install_recovery.sh
346 done
347}
348
wanwei.jiangb12abc82021-12-25 22:17:10 +0800349function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800350 if [[ -n $1 ]]; then
351 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800352 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800353
354 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
355 cp modules.dep modules.dep.temp
356
357 soc_module=()
358 for chip in ${chips[@]}; do
359 chip_module=`ls amlogic-*-soc-${chip}.ko`
360 soc_module=(${soc_module[@]} ${chip_module[@]})
361 done
362 echo soc_module=${soc_module[*]}
363
364 delete_soc_module=()
365 if [[ ${#soc_module[@]} == 0 ]]; then
366 echo "Use all soc module"
367 else
368 for module in `ls amlogic-*-soc-*`; do
369 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
370 echo Delete soc module: ${module}
371 sed -n "/${module}:/p" modules.dep.temp
372 sed -i "/${module}:/d" modules.dep.temp
373 delete_soc_module=(${delete_soc_module[@]} ${module})
374 fi
375 done
376 echo delete_soc_module=${delete_soc_module[*]}
377 fi
378
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800379 if [[ -n ${CLK_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800380 delete_clk_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800381 for module in `ls amlogic-clk-soc-*`; do
382 if [[ "${CLK_SOC_MODULE}" != "${module}" ]] ; then
383 echo Delete clk soc module: ${module}
384 sed -n "/${module}:/p" modules.dep.temp
385 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800386 delete_clk_soc_modules=(${delete_clk_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800387 fi
388 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800389 echo delete_clk_soc_modules=${delete_clk_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800390 fi
391
392 if [[ -n ${PINCTRL_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800393 delete_pinctrl_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800394 for module in `ls amlogic-pinctrl-soc-*`; do
395 if [[ "${PINCTRL_SOC_MODULE}" != "${module}" ]] ; then
396 echo Delete pinctrl soc module: ${module}
397 sed -n "/${module}:/p" modules.dep.temp
398 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800399 delete_pinctrl_soc_modules=(${delete_pinctrl_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800400 fi
401 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800402 echo delete_pinctrl_soc_modules=${delete_pinctrl_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800403 fi
404
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800405 in_line_i=a
406 delete_type_modules=()
407 echo "TYPE_MODULE_SELECT_MODULE=${TYPE_MODULE_SELECT_MODULE}"
408 mkdir temp_dir
409 cd temp_dir
410 in_temp_dir=y
411 for element in ${TYPE_MODULE_SELECT_MODULE}; do
412 if [[ ${in_temp_dir} = y ]]; then
413 cd ../
414 rm -r temp_dir
415 in_temp_dir=
416 fi
417 if [[ ${in_line_i} = a ]]; then
418 in_line_i=b
419 type_module=${element}
420 select_modules_i=0
421 select_modules_count=
422 select_modules=
423 elif [[ ${in_line_i} = b ]]; then
424 in_line_i=c
425 select_modules_count=${element}
426 else
427 let select_modules_i+=1
428 select_modules="${select_modules} ${element}"
429 if [[ ${select_modules_i} -eq ${select_modules_count} ]]; then
430 in_line_i=a
431 echo type_module=$type_module select_modules=$select_modules
432 for module in `ls ${type_module}`; do
433 dont_delete_module=0
434 for select_module in ${select_modules}; do
435 if [[ "${select_module}" == "${module}" ]] ; then
436 dont_delete_module=1
437 break;
438 fi
439 done
440 if [[ ${dont_delete_module} != 1 ]]; then
441 echo Delete module: ${module}
442 sed -n "/${module}:/p" modules.dep.temp
443 sed -i "/${module}:/d" modules.dep.temp
444 delete_type_modules=(${delete_type_modules[@]} ${module})
445 fi
446 done
447 echo delete_type_modules=${delete_type_modules[*]}
448 fi
449 fi
450 done
451 if [[ -n ${in_temp_dir} ]]; then
452 cd ../
453 rm -r temp_dir
454 fi
455
456 black_modules=()
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800457 mkdir service_module
458 echo MODULES_SERVICE_LOAD_LIST=${MODULES_SERVICE_LOAD_LIST[@]}
459 BLACK_AND_SERVICE_LIST=(${MODULES_LOAD_BLACK_LIST[@]} ${MODULES_SERVICE_LOAD_LIST[@]})
460 echo ${BLACK_AND_SERVICE_LIST[@]}
461 for module in ${BLACK_AND_SERVICE_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800462 modules=`ls ${module}*`
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800463 black_modules=(${black_modules[@]} ${modules[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800464 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800465 if [[ ${#black_modules[@]} == 0 ]]; then
466 echo "black_modules is null, don't delete modules, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800467 else
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800468 echo black_modules=${black_modules[*]}
469 for module in ${black_modules[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800470 echo Delete module: ${module}
471 sed -n "/${module}:/p" modules.dep.temp
472 sed -i "/${module}:/d" modules.dep.temp
473 done
474 fi
475
Wanwei Jiang475245b2023-05-10 21:06:52 +0800476 GKI_MODULES_LOAD_BLACK_LIST=()
477 if [[ "${FULL_KERNEL_VERSION}" != "common13-5.15" ]]; then
478 gki_modules_temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
479 cp ${ROOT_DIR}/${KERNEL_DIR}/android/gki_system_dlkm_modules ${gki_modules_temp_file}
480
481 for module in ${GKI_MODULES_LOAD_WHITE_LIST[@]}; do
482 sed -i "/\/${module}/d" ${gki_modules_temp_file}
483 done
484
485 for module in `cat ${gki_modules_temp_file}`; do
486 module=${module##*/}
487 GKI_MODULES_LOAD_BLACK_LIST[${#GKI_MODULES_LOAD_BLACK_LIST[*]}]=${module}
488 done
489 rm -f ${gki_modules_temp_file}
490
491 for module in ${GKI_MODULES_LOAD_BLACK_LIST[@]}; do
492 echo Delete module: ${module}
493 sed -n "/${module}:/p" modules.dep.temp
494 sed -i "/${module}:/d" modules.dep.temp
495 done
496 fi
497
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800498 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
Wanwei Jiang475245b2023-05-10 21:06:52 +0800499 delete_modules=(${delete_soc_module[@]} ${delete_clk_soc_modules[@]} ${delete_pinctrl_soc_modules[@]} ${delete_type_modules[@]} ${black_modules[@]} ${GKI_MODULES_LOAD_BLACK_LIST[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800500 for module in ${delete_modules[@]}; do
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800501 if [[ ! `ls $module` ]]; then
502 continue
503 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800504 match=`sed -n "/${module}/=" modules.dep.temp1`
505 for match in ${match[@]}; do
506 match_count=(${match_count[@]} $match)
507 done
508 if [[ ${#match_count[@]} != 0 ]]; then
509 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800510 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800511 exit
512 fi
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800513 if [[ -n ${ANDROID_PROJECT} ]]; then
514 for service_module_temp in ${MODULES_SERVICE_LOAD_LIST[@]}; do
515 if [[ ${module} = ${service_module_temp} ]]; then
516 mv ${module} service_module
517 fi
518 done
519 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800520 rm -f ${module}
521 done
522 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800523 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800524
525 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
526 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800527 sed -n "/${module}:/p" modules.dep.temp
528 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
529 sed -i "/${module}:/d" modules.dep.temp
530 sed -n "/${module}.*\.ko:/p" modules.dep.temp
531 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
532 sed -i "/${module}.*\.ko:/d" modules.dep.temp
533 done
534
Wanwei Jiang571dde62022-11-17 14:37:41 +0800535 if [[ -n ${ANDROID_PROJECT} ]]; then
536 cp modules.dep.temp modules_recovery.dep.temp
537 cp modules.dep.temp1 modules_recovery.dep.temp1
538 fi
539
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800540 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
541 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
542 sed -n "/${module}:/p" modules.dep.temp
543 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
544 sed -i "/${module}:/d" modules.dep.temp
545 sed -n "/${module}.*\.ko:/p" modules.dep.temp
546 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
547 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800548 done
549
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800550 if [ -f modules.dep.temp2 ]; then
551 rm modules.dep.temp2
552 fi
553 touch modules.dep.temp2
554 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
555 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
556 sed -n "/${module}:/p" modules.dep.temp
557 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
558 sed -i "/${module}:/d" modules.dep.temp
559 sed -n "/${module}.*\.ko:/p" modules.dep.temp
560 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
561 sed -i "/${module}.*\.ko:/d" modules.dep.temp
562 done
563
564 cat modules.dep.temp >> modules.dep.temp1
565 cat modules.dep.temp2 >> modules.dep.temp1
566
wanwei.jiangb12abc82021-12-25 22:17:10 +0800567 cp modules.dep.temp1 modules.dep
568 rm modules.dep.temp
569 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800570 rm modules.dep.temp2
Wanwei Jiang571dde62022-11-17 14:37:41 +0800571
572 if [[ -n ${ANDROID_PROJECT} ]]; then
573 for module in ${RECOVERY_MODULES_LOAD_LIST[@]}; do
574 echo RECOVERY_MODULES_LOAD_LIST: $module
575 sed -n "/${module}:/p" modules_recovery.dep.temp
576 sed -n "/${module}:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
577 sed -i "/${module}:/d" modules_recovery.dep.temp
578 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp
579 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
580 sed -i "/${module}.*\.ko:/d" modules_recovery.dep.temp
581 done
582
583 cat modules_recovery.dep.temp >> modules_recovery.dep.temp1
584
585 cp modules_recovery.dep.temp1 modules_recovery.dep
586 rm modules_recovery.dep.temp
587 rm modules_recovery.dep.temp1
588 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800589}
590
Wanwei Jiang571dde62022-11-17 14:37:41 +0800591create_ramdisk_vendor_recovery() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800592 install_temp=$1
Wanwei Jiang571dde62022-11-17 14:37:41 +0800593 if [[ -n ${ANDROID_PROJECT} ]]; then
594 recovery_install_temp=$2
595 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800596 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
Wanwei Jiang9173e462022-09-29 00:58:33 +0800597 ramdisk_module_i=${#RAMDISK_MODULES_LOAD_LIST[@]}
598 while [ ${ramdisk_module_i} -gt 0 ]; do
599 let ramdisk_module_i--
600 echo ramdisk_module_i=$ramdisk_module_i ${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
601 if [[ `grep "${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}" ${install_temp}` ]]; then
602 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
603 break;
604 fi
605 done
606 # last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
qinglin.libce54712023-05-08 13:56:31 +0800607 if [[ -n ${last_ramdisk_module} ]]; then
608 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
609 for line in ${last_ramdisk_module_line}; do
610 ramdisk_last_line=${line}
611 done
612 else
613 ramdisk_last_line=1
614 fi
wanwei.jiangf73b2202022-07-23 16:00:44 +0800615 export ramdisk_last_line
Wanwei Jiang571dde62022-11-17 14:37:41 +0800616
617 if [[ -n ${ANDROID_PROJECT} ]]; then
618 recovery_module_i=${#RECOVERY_MODULES_LOAD_LIST[@]}
qinglin.lidba324f2023-03-02 19:56:21 +0800619 #when RECOVERY_MODULES_LOAD_LIST is NULL
620 if [ ${#RECOVERY_MODULES_LOAD_LIST[@]} -eq 0 ]; then
621 last_recovery_module=${last_ramdisk_module}
622 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800623 while [ ${recovery_module_i} -gt 0 ]; do
624 let recovery_module_i--
625 echo recovery_module_i=$recovery_module_i ${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}
626 if [[ `grep "${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}" ${recovery_install_temp}` ]]; then
627 last_recovery_module=${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}
628 break;
629 fi
630 done
631 # last_recovery_module=${RECOVERY_MODULES_LOAD_LIST[${#RECOVERY_MODULES_LOAD_LIST[@]}-1]}
qinglin.libce54712023-05-08 13:56:31 +0800632 if [[ -n ${last_recovery_module} ]]; then
633 last_recovery_module_line=`sed -n "/${last_recovery_module}/=" ${recovery_install_temp}`
634 for line in ${last_recovery_module_line}; do
635 recovery_last_line=${line}
636 done
637 else
638 recovery_last_line=1
639 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800640 sed -n "${ramdisk_last_line},${recovery_last_line}p" ${recovery_install_temp} > recovery_install.sh
qinglin.libce54712023-05-08 13:56:31 +0800641 if [[ -n ${last_ramdisk_module} ]]; then
642 sed -i "1d" recovery_install.sh
643 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800644 mkdir recovery
645 cat recovery_install.sh | cut -d ' ' -f 2 > recovery/recovery_modules.order
qinglin.lidba324f2023-03-02 19:56:21 +0800646 if [ ${#RECOVERY_MODULES_LOAD_LIST[@]} -ne 0 ]; then
647 cat recovery_install.sh | cut -d ' ' -f 2 | xargs cp -t recovery/
648 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800649 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' recovery_install.sh
650 echo "echo Install recovery modules success!" >> recovery_install.sh
651 chmod 755 recovery_install.sh
652 mv recovery_install.sh recovery/
653 fi
654
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800655 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800656 mkdir ramdisk
wanwei.jiangf73b2202022-07-23 16:00:44 +0800657 cat ramdisk_install.sh | cut -d ' ' -f 2 > ramdisk/ramdisk_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800658 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800659
qinglin.lie5b951e2022-06-07 16:13:44 +0800660 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' ramdisk_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800661 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
662 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800663 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800664
665 file_last_line=`sed -n "$=" ${install_temp}`
666 let line=${file_last_line}-${ramdisk_last_line}
667 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800668 mkdir vendor
wanwei.jiangf73b2202022-07-23 16:00:44 +0800669 cat vendor_install.sh | cut -d ' ' -f 2 > vendor/vendor_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800670 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800671
qinglin.lie5b951e2022-06-07 16:13:44 +0800672 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' vendor_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800673 echo "echo Install vendor modules success!" >> vendor_install.sh
674 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800675 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800676}
677
wanwei.jiang612a8882021-11-23 17:12:23 +0800678function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800679 arg1=$1
680
Wanwei Jiang2218b892023-03-17 17:31:21 +0800681 export OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR:-$(readlink -m ${COMMON_OUT_DIR}/amlogic)}
682 echo $OUT_AMLOGIC_DIR
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800683 rm -rf ${OUT_AMLOGIC_DIR}
684 mkdir -p ${OUT_AMLOGIC_DIR}
685 mkdir -p ${OUT_AMLOGIC_DIR}/modules
686 mkdir -p ${OUT_AMLOGIC_DIR}/ext_modules
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800687 mkdir -p ${OUT_AMLOGIC_DIR}/symbols
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800688
Wanwei Jiang2218b892023-03-17 17:31:21 +0800689 if [[ ${BAZEL} == "1" ]]; then
690 local output="out/bazel/output_user_root"
691 for dir in `ls ${output}`; do
692 if [[ ${dir} =~ ^[0-9A-Fa-f]*$ ]]; then
693 digit_output=${output}/${dir}
694 break
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800695 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800696 done
697
Wanwei Jiang0df84602023-05-05 14:40:42 +0800698 while read module
699 do
Wanwei Jiang475245b2023-05-10 21:06:52 +0800700 module_name=${module##*/}
Wanwei Jiang0df84602023-05-05 14:40:42 +0800701 if [[ `echo ${module} | grep "^kernel\/"` ]]; then
702 if [[ -f ${DIST_DIR}/${module_name} ]]; then
703 cp ${DIST_DIR}/${module_name} ${OUT_AMLOGIC_DIR}/modules
704 else
705 module=`find ${digit_output}/execroot/ -name ${module_name} | grep "amlogic"`
706 cp ${module} ${OUT_AMLOGIC_DIR}/modules
707 fi
708 elif [[ `echo ${module} | grep "^extra\/"` ]]; then
709 cp ${DIST_DIR}/${module_name} ${OUT_AMLOGIC_DIR}/ext_modules
Wanwei Jiang2218b892023-03-17 17:31:21 +0800710 else
Wanwei Jiang0df84602023-05-05 14:40:42 +0800711 echo "warning unrecognized module: ${module}"
Wanwei Jiang2218b892023-03-17 17:31:21 +0800712 fi
Wanwei Jiang0df84602023-05-05 14:40:42 +0800713 done < ${DIST_DIR}/modules.load
Wanwei Jiang2218b892023-03-17 17:31:21 +0800714
715 dep_file=`find ${digit_output}/execroot/ -name *.dep | grep "amlogic"`
716 cp ${dep_file} ${OUT_AMLOGIC_DIR}/modules/full_modules.dep
Wanwei Jiang0df84602023-05-05 14:40:42 +0800717 grep -E "^kernel\/" ${dep_file} > ${OUT_AMLOGIC_DIR}/modules/modules.dep
Wanwei Jiang2218b892023-03-17 17:31:21 +0800718 touch ${module} ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
719 for order_file in `find ${digit_output}/execroot/ -name "modules.order.*" | grep "amlogic"`; do
720 echo "# ${order_file}" >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
721 cat ${order_file} >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
722 echo >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
723 done
724 else
725 local MODULES_ROOT_DIR=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
726 pushd ${MODULES_ROOT_DIR}
727 local common_drivers=${COMMON_DRIVERS_DIR##*/}
728 local modules_list=$(find -type f -name "*.ko")
729 for module in ${modules_list}; do
730 if [[ -n ${ANDROID_PROJECT} ]]; then # copy internal build modules
731 if [[ `echo ${module} | grep -E "\.\/kernel\/|\/${common_drivers}\/"` ]]; then
732 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
733 else
734 cp ${module} ${OUT_AMLOGIC_DIR}/ext_modules/
735 fi
736 else # copy all modules, include external modules
737 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
738 fi
739 done
740
741 if [[ -n ${ANDROID_PROJECT} ]]; then # internal build modules
742 grep -E "^kernel\/|^${common_drivers}\/" modules.dep > ${OUT_AMLOGIC_DIR}/modules/modules.dep
743 else # all modules, include external modules
744 cp modules.dep ${OUT_AMLOGIC_DIR}/modules
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800745 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800746 popd
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800747 fi
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800748 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang612a8882021-11-23 17:12:23 +0800749 sed -i 's#[^ ]*/##g' modules.dep
750
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800751 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800752
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800753 touch __install.sh
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800754 touch modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800755 for loop in `cat modules.dep | sed 's/:.*//'`; do
756 mod_probe $loop
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800757 echo $loop >> modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800758 echo insmod $loop >> __install.sh
759 done
760
761 cat __install.sh | awk ' {
762 if (!cnt[$2]) {
763 print $0;
764 cnt[$2]++;
765 }
766 }' > __install.sh.tmp
767
Wanwei Jiangbf119d22022-10-27 09:49:49 +0800768 cp modules.order modules.order.back
769 cut -d ' ' -f 2 __install.sh.tmp > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800770
771 if [[ -n ${ANDROID_PROJECT} ]]; then
772 touch __install_recovery.sh
773 touch modules_recovery.order
774 for loop in `cat modules_recovery.dep | sed 's/:.*//'`; do
775 mod_probe_recovery $loop
776 echo $loop >> modules_recovery.order
777 echo insmod $loop >> __install_recovery.sh
778 done
779
780 cat __install_recovery.sh | awk ' {
781 if (!cnt[$2]) {
782 print $0;
783 cnt[$2]++;
784 }
785 }' > __install_recovery.sh.tmp
786
787 cut -d ' ' -f 2 __install_recovery.sh.tmp > modules_recovery.order
788 fi
789 create_ramdisk_vendor_recovery __install.sh.tmp __install_recovery.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800790
Dezhen Wang124ad7d2023-02-06 15:35:14 +0800791 if [[ -n ${MANUAL_INSMOD_MODULE} ]]; then
792 install_file=manual_install.sh
793 else
794 install_file=install.sh
795 fi
796 echo "#!/bin/sh" > ${install_file}
797 echo "cd ramdisk" >> ${install_file}
798 echo "./ramdisk_install.sh" >> ${install_file}
799 echo "cd ../vendor" >> ${install_file}
800 echo "./vendor_install.sh" >> ${install_file}
801 echo "cd ../" >> ${install_file}
802 chmod 755 ${install_file}
wanwei.jiang612a8882021-11-23 17:12:23 +0800803
804 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
Wanwei Jianga5977bd2022-08-24 22:43:40 +0800805 rm __install.sh __install.sh.tmp
wanwei.jiang612a8882021-11-23 17:12:23 +0800806
Wanwei Jiang571dde62022-11-17 14:37:41 +0800807 if [[ -n ${ANDROID_PROJECT} ]]; then
808 rm __install_recovery.sh __install_recovery.sh.tmp
809 fi
810
wanwei.jiang236e9a32021-12-07 16:34:14 +0800811 popd
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800812
Wanwei Jiang2218b892023-03-17 17:31:21 +0800813 if [[ ${BAZEL} == "1" ]]; then
814 cp ${DIST_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
815
816 find ${digit_output}/execroot -name *.ko | grep "unstripped" | while read module; do
817 cp ${module} ${OUT_AMLOGIC_DIR}/symbols
818 chmod +w ${OUT_AMLOGIC_DIR}/symbols/$(basename ${module})
819 done
820 chmod -w ${OUT_AMLOGIC_DIR}/symbols/*.ko
821 else
822 cp ${OUT_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
823 find ${OUT_DIR} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
824 for ext_module in ${EXT_MODULES}; do
825 find ${COMMON_OUT_DIR}/${ext_module} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
826 done
827 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800828}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800829export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800830
Wanwei Jiang2218b892023-03-17 17:31:21 +0800831function rename_external_module_name() {
832 local external_coppied
833 local vendor_coppied
Wanwei Jiang92c89432023-05-15 23:57:16 +0800834 sed 's/^[\t ]*\|[\t ]*$//g' ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/modules_rename.txt | sed '/^#/d;/^$/d' | sed 's/[[:space:]][[:space:]]*/ /g' | while read module_line; do
Wanwei Jiang2218b892023-03-17 17:31:21 +0800835 target_module_name=`echo ${module_line%%:*} | sed '/^#/d;/^$/d'`
836 modules_name=`echo ${module_line##:*} | sed '/^#/d;/^$/d'`
837 [[ -f ${OUT_AMLOGIC_DIR}/ext_modules/${target_module_name} ]] && external_coppied=1
838 [[ -f ${OUT_AMLOGIC_DIR}/modules/vendor/${target_module_name} ]] && vendor_coppied=1
839 echo target_module_name=$target_module_name modules_name=$modules_name external_coppied=$external_coppied vendor_coppied=$vendor_coppied
840 for module in ${modules_name}; do
841 echo module=$module
842 if [[ -f ${OUT_AMLOGIC_DIR}/ext_modules/${module} ]]; then
843 if [[ -z ${external_coppied} ]]; then
844 cp ${OUT_AMLOGIC_DIR}/ext_modules/${module} ${OUT_AMLOGIC_DIR}/ext_modules/${target_module_name}
845 external_coppied=1
846 fi
847 rm -f ${OUT_AMLOGIC_DIR}/ext_modules/${module}
848 fi
849 if [[ -f ${OUT_AMLOGIC_DIR}/modules/vendor/${module} ]]; then
850 if [[ -z ${vendor_coppied} ]]; then
851 cp ${OUT_AMLOGIC_DIR}/modules/vendor/${module} ${OUT_AMLOGIC_DIR}/modules/vendor/${target_module_name}
852 vendor_coppied=1
853 fi
854 rm -f ${OUT_AMLOGIC_DIR}/modules/vendor/${module}
855 fi
856 done
857 external_coppied=
858 vendor_coppied=
859 done
860}
861export -f rename_external_module_name
862
Dezhen Wang5ad119c2023-05-04 15:07:49 +0800863# function rebuild_rootfs can rebuild the rootfs if rootfs_base.cpio.gz.uboot exist
wanwei.jiang612a8882021-11-23 17:12:23 +0800864function rebuild_rootfs() {
Wanwei Jiang2218b892023-03-17 17:31:21 +0800865 echo
866 echo "========================================================"
867 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
868 echo "Rebuild rootfs in order to install modules!"
869 else
870 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
871 return
872 fi
873
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800874 pushd ${OUT_AMLOGIC_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800875
Lei Zhang475c17b2022-03-03 11:08:50 +0800876 local ARCH=arm64
877 if [[ -n $1 ]]; then
878 ARCH=$1
879 fi
880
wanwei.jiang612a8882021-11-23 17:12:23 +0800881 rm rootfs -rf
882 mkdir rootfs
Wanwei Jiang2218b892023-03-17 17:31:21 +0800883 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800884 cd rootfs
885 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
886 gunzip rootfs_base.cpio.gz
887 mkdir rootfs
888 cd rootfs
889 cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800890 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
891 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800892 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800893 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800894
wanwei.jiang612a8882021-11-23 17:12:23 +0800895 find . | cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
896 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800897 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 +0800898 mv rootfs_new.cpio.gz.uboot ../
899 cd ../
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800900 cp rootfs_new.cpio.gz.uboot ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800901
902 popd
903}
904export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800905
Dezhen Wang5ad119c2023-05-04 15:07:49 +0800906# function check_undefined_symbol can check the dependence among the modules
907# parameter:
908# --modules_depend
wanwei.jiang403c9942021-11-30 18:29:02 +0800909function check_undefined_symbol() {
Wanwei Jiang2218b892023-03-17 17:31:21 +0800910 if [[ ${MODULES_DEPEND} != "1" ]]; then
911 return
912 fi
913
914 echo "========================================================"
915 echo "print modules depend"
916
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800917 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800918 echo
919 echo "========================================================"
920 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800921 if [[ -n ${LLVM} ]]; then
922 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
923 elif [[ -n ${CROSS_COMPILE} ]]; then
924 compile_tool=${CROSS_COMPILE}
925 else
926 echo "can't find compile tool"
927 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800928 ${compile_tool}nm ${DIST_DIR}/vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800929 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
930 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
931 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
932 cp ramdisk/*.ko .
933 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800934 while read LINE
935 do
936 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800937 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 +0800938 do
939 #echo ${U}
940 U_v=`grep -w ${U} vmlinux_T.txt`
941 in_vmlinux=0
942 if [ -n "${U_v}" ];
943 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800944 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800945 in_vmlinux=1
946 continue
947 fi
948 in_module=0
949 MODULE=
950 while read LINE1
951 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800952 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 +0800953 if [ -n "${U_m}" ];
954 then
955 in_module=1
956 MODULE=${LINE1}
957 fi
958 done < module_list.txt
959 if [ ${in_module} -eq "1" ];
960 then
961 printf "\t%-50s <== %s\n" ${U} ${MODULE}
962 continue
963 else
964 printf "\t%-50s <== none\n" ${U}
965 fi
966 done
967 echo
968 echo
969 done < module_list.txt
970 rm vmlinux_T.txt
971 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800972 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +0800973 popd
974}
975export -f check_undefined_symbol
Dezhen Wangd40fa552023-04-11 16:13:27 +0800976
977function reorganized_abi_symbol_list_file() { # delete the extra information but symbol
978 cat $@ | sed '/^$/d' >> ${symbol_tmp} # remove blank lines
979 sed -i '/^\[/d' ${symbol_tmp} # remove the title
980 sed -i '/^\#/d' ${symbol_tmp} # remove the comment
981}
982export -f reorganized_abi_symbol_list_file
983
984function abi_symbol_list_detect () { # detect symbol information that should be submitted or fix
985 symbol_file1=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic
986 symbol_file2=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.10
987 symbol_file3=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.debug
988 symbol_file4=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.illegal
989
990 file_list=("${symbol_file1} ${symbol_file2} ${symbol_file3} ${symbol_file4}")
991 for file in ${file_list}
992 do
993 local symbol_tmp=`mktemp tmp.XXXXXXXXXXXX`
994 reorganized_abi_symbol_list_file "${file}"
995
996 if [[ -s ${symbol_tmp} ]]; then
997 if [[ ${file} =~ abi_gki_aarch64_amlogic.illegal ]]; then
998 echo "WARNING: The symbols in ${file} are illegal, please deal with them as soon as possible!!!"
999 else
1000 echo "WARNING: The symbols in ${file} should be submit to google!!!"
1001 fi
1002 cat ${symbol_tmp}
1003 echo -e "\n------------------------------------------------------------"
1004 fi
1005 rm ${symbol_tmp}
1006 done
1007}
1008export -f abi_symbol_list_detect
1009
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001010# adjust_config_action concerns three types of cmd:
1011# parameters:
1012# --menuconfig: make menuconfig manually based on different gki standard
1013# --basicconfig: only config kernel with google original gki_defconfig as base
1014# --check_defconfig: contrast the defconfig generated in out directory with gki_defconfig and show the difference
1015function adjust_config_action () {
1016 if [[ -n ${MENUCONFIG} ]] || [[ -n ${BASICCONFIG} ]] || [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
1017 # ${ROOT_DIR}/${BUILD_DIR}/config.sh menuconfig
1018 HERMETIC_TOOLCHAIN=0
1019 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
1020 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
1021
1022 orig_config=$(mktemp)
1023 orig_defconfig=$(mktemp)
1024 out_config="${OUT_DIR}/.config"
1025 out_defconfig="${OUT_DIR}/defconfig"
1026 changed_config=$(mktemp)
1027 changed_defconfig=$(mktemp)
1028
1029 if [[ -n ${BASICCONFIG} ]]; then # config kernel with gki_defconfig or make menuconfig based on it
1030 set -x
1031 defconfig_name=`basename ${GKI_BASE_CONFIG}`
1032 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${defconfig_name})
1033 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1034 cp ${out_config} ${orig_config}
1035 cp ${out_defconfig} ${orig_defconfig}
1036 if [ "${BASICCONFIG}" = "m" ]; then # make menuconfig based on gki_defconfig
1037 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
1038 fi
1039 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1040 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
1041 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
1042 if [ "${ARCH}" = "arm" ]; then
1043 cp ${out_defconfig} ${GKI_BASE_CONFIG}
1044 fi
1045 set +x # show the difference between the gki_defconfig and the config after make menuconfig
1046 echo
1047 echo "========================================================"
1048 echo "==================== .config diff ===================="
1049 cat ${changed_config}
1050 echo "==================== defconfig diff ===================="
1051 cat ${changed_defconfig}
1052 echo "========================================================"
1053 echo
1054 elif [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then # compare the defconfig generated in out directory with gki_defconfig
1055 set -x
1056 pre_defconfig_cmds
1057 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1058 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig) # export the defconfig to out directory
1059 diff -u ${ROOT_DIR}/${GKI_BASE_CONFIG} ${OUT_DIR}/defconfig
1060 post_defconfig_cmds
1061 set +x
1062 else # make menuconfig based on config with different gki standard
1063 set -x
1064 pre_defconfig_cmds
1065 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1066 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1067 cp ${out_config} ${orig_config}
1068 cp ${out_defconfig} ${orig_defconfig}
1069 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
1070 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1071 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
1072 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
1073 post_defconfig_cmds
1074 set +x
1075 echo
1076 echo "========================================================"
1077 echo "if the config follows GKI2.0, please add it to the file amlogic_gki.fragment manually"
1078 echo "if the config follows GKI1.0 optimize, please add it to the file amlogic_gki.10 manually"
1079 echo "if the config follows GKI1.0 debug, please add it to the file amlogic_gki.debug manually"
1080 echo "==================== .config diff ===================="
1081 cat ${changed_config}
1082 echo "==================== defconfig diff ===================="
1083 cat ${changed_defconfig}
1084 echo "========================================================"
1085 echo
1086 fi
1087 rm -f ${orig_config} ${changed_config} ${orig_defconfig} ${changed_defconfig}
1088 exit
1089 fi
1090}
1091export -f adjust_config_action
1092
1093# function build_part_of_kernel can only build part of kernel such as image modules or dtbs
1094# parameter:
1095# --image: only build image
1096# --modules: only build kernel modules
1097# --dtbs: only build dtbs
1098function build_part_of_kernel () {
1099 if [[ -n ${IMAGE} ]] || [[ -n ${MODULES} ]] || [[ -n ${DTB_BUILD} ]]; then
1100 old_path=${PATH}
1101 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
1102 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
1103
1104 if [[ ! -f ${OUT_DIR}/.config ]]; then
1105 pre_defconfig_cmds
1106 set -x
1107 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1108 set +x
1109 post_defconfig_cmds
1110 fi
1111
1112 if [[ -n ${IMAGE} ]]; then
1113 set -x
1114 if [ "${ARCH}" = "arm64" ]; then
1115 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) Image)
1116 elif [ "${ARCH}" = "arm" ]; then
1117 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) LOADADDR=0x108000 uImage)
1118 fi
1119 set +x
1120 fi
1121 mkdir -p ${DIST_DIR}
1122 if [[ -n ${DTB_BUILD} ]]; then
1123 set -x
1124 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) dtbs)
1125 set +x
1126 fi
1127 if [[ -n ${MODULES} ]]; then
1128 export MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
1129 rm -rf ${MODULES_STAGING_DIR}
1130 mkdir -p ${MODULES_STAGING_DIR}
1131 if [ "${DO_NOT_STRIP_MODULES}" != "1" ]; then
1132 MODULE_STRIP_FLAG="INSTALL_MOD_STRIP=1"
1133 fi
1134 if [[ `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
1135 set -x
1136 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) modules)
1137 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} "${MAKE_ARGS[@]}" modules_install)
1138 set +x
1139 fi
1140 echo EXT_MODULES=$EXT_MODULES
1141 prepare_module_build
1142 if [[ -z "${SKIP_EXT_MODULES}" ]] && [[ -n "${EXT_MODULES}" ]]; then
1143 echo "========================================================"
1144 echo " Building external modules and installing them into staging directory"
1145 KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
1146 for EXT_MOD in ${EXT_MODULES}; do
1147 EXT_MOD_REL=$(rel_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
1148 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
1149 set -x
1150 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1151 O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}"
1152 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1153 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
1154 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
1155 INSTALL_MOD_DIR="extra/${EXT_MOD}" \
1156 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" \
1157 "${MAKE_ARGS[@]}" modules_install
1158 set +x
1159 done
1160 fi
1161 export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
1162 set -x
1163 extra_cmds
1164 set +x
1165 MODULES=$(find ${MODULES_STAGING_DIR} -type f -name "*.ko")
1166 cp -p ${MODULES} ${DIST_DIR}
1167
1168 new_path=${PATH}
1169 PATH=${old_path}
1170 echo "========================================================"
1171 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
1172 echo "Rebuild rootfs in order to install modules!"
1173 rebuild_rootfs ${ARCH}
1174 else
1175 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
1176 fi
1177 PATH=${new_path}
1178 fi
1179 if [ -n "${DTS_EXT_DIR}" ]; then
1180 if [ -d "${ROOT_DIR}/${DTS_EXT_DIR}" ]; then
1181 DTS_EXT_DIR=$(rel_path ${ROOT_DIR}/${DTS_EXT_DIR} ${KERNEL_DIR})
1182 if [ -d ${OUT_DIR}/${DTS_EXT_DIR} ]; then
1183 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
1184 fi
1185 fi
1186 fi
1187 for FILE in ${FILES}; do
1188 if [ -f ${OUT_DIR}/${FILE} ]; then
1189 echo " $FILE"
1190 cp -p ${OUT_DIR}/${FILE} ${DIST_DIR}/
1191 elif [[ "${FILE}" =~ \.dtb|\.dtbo ]] && \
1192 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
1193 # DTS_EXT_DIR is recalculated before to be relative to KERNEL_DIR
1194 echo " $FILE"
1195 cp -p "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" "${DIST_DIR}/"
1196 else
1197 echo " $FILE is not a file, skipping"
1198 fi
1199 done
1200 exit
1201 fi
1202}
1203
1204export -f build_part_of_kernel
1205
1206function export_env_variable () {
1207 export ABI BUILD_CONFIG LTO KMI_SYMBOL_LIST_STRICT_MODE CHECK_DEFCONFIG MANUAL_INSMOD_MODULE ARCH
qinglin.libce54712023-05-08 13:56:31 +08001208 export KERNEL_DIR COMMON_DRIVERS_DIR BUILD_DIR ANDROID_PROJECT GKI_CONFIG UPGRADE_PROJECT ANDROID_VERSION FAST_BUILD CHECK_GKI_20 DEV_CONFIGS
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001209 export FULL_KERNEL_VERSION BAZEL
1210
1211 echo ROOT_DIR=$ROOT_DIR
1212 echo ABI=${ABI} BUILD_CONFIG=${BUILD_CONFIG} LTO=${LTO} KMI_SYMBOL_LIST_STRICT_MODE=${KMI_SYMBOL_LIST_STRICT_MODE} CHECK_DEFCONFIG=${CHECK_DEFCONFIG} MANUAL_INSMOD_MODULE=${MANUAL_INSMOD_MODULE}
qinglin.libce54712023-05-08 13:56:31 +08001213 echo KERNEL_DIR=${KERNEL_DIR} COMMON_DRIVERS_DIR=${COMMON_DRIVERS_DIR} BUILD_DIR=${BUILD_DIR} ANDROID_PROJECT=${ANDROID_PROJECT} GKI_CONFIG=${GKI_CONFIG} UPGRADE_PROJECT=${UPGRADE_PROJECT} ANDROID_VERSION=${ANDROID_VERSION} FAST_BUILD=${FAST_BUILD} CHECK_GKI_20=${CHECK_GKI_20}
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001214 echo FULL_KERNEL_VERSION=${FULL_KERNEL_VERSION} BAZEL=${BAZEL}
1215 echo MENUCONFIG=${MENUCONFIG} BASICCONFIG=${BASICCONFIG} IMAGE=${IMAGE} MODULES=${MODULES} DTB_BUILD=${DTB_BUILD}
1216}
1217
1218export -f export_env_variable