blob: bae3e8eee10dbe14d62016d6d2bc9106824195f8 [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
Dezhen Wangab7ba642023-03-15 14:10:44 +080041
42 if [[ -n ${DEV_CONFIG} ]]; then
43 config_list=$(echo ${CONFIG_GROUP}|sed 's/+/ /g')
44 #verify the extra config is in the right path and merge the config
45 CONFIG_DIR=arch/${ARCH}/configs
46 for config_name in ${config_list[@]}
47 do
48 if [[ ! -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/${CONFIG_DIR}/${config_name} ]]; then
49 echo "ERROR: config file ${config_name} is not in the right path!!"
50 exit
51 else
52 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}
53 fi
54 done
55 fi
Wanwei Jiangc65e4d32023-03-21 16:24:41 +080056
57 if [[ ${IN_BUILD_GKI_10} == 1 ]]; then
58 local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
59 echo "CONFIG_MODULE_SIG_ALL=y" >> ${temp_file}
60 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${temp_file}
61 rm ${temp_file}
62 fi
wanwei.jiang91776952021-11-19 13:10:32 +080063}
64export -f pre_defconfig_cmds
65
66function post_defconfig_cmds() {
Wanwei Jiang2d4f9742022-09-13 11:22:17 +080067 rm ${ROOT_DIR}/${KCONFIG_DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080068}
69export -f post_defconfig_cmds
70
71function read_ext_module_config() {
72 ALL_LINE=""
73 while read LINE
74 do
75 if [[ $LINE != \#* && $LINE != "" ]]; then
76 ALL_LINE="$ALL_LINE"" ""$LINE"
77 fi
78 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +080079
80 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080081}
82
83function read_ext_module_predefine() {
84 PRE_DEFINE=""
85
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080086 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080087 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
88 done
89
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080090 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080091 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
92 done
93
wanwei.jiang5c861ae2022-04-21 00:51:50 +080094 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080095}
96
wanwei.jiang8d4a5132022-04-28 16:43:54 +080097top_ext_drivers=top_ext_drivers
wanwei.jiang91776952021-11-19 13:10:32 +080098function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +080099 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800100 if [[ ! `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800101 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
102 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
103 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
104 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +0800105 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800106
107 for ext_module_config in ${EXT_MODULES_CONFIG}; do
108 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
109 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
110 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
111 done
112 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
113 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
114 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
115
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800116 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
117 if [[ -d ${top_ext_drivers} ]]; then
118 rm -rf ${top_ext_drivers}
119 fi
120 mkdir -p ${top_ext_drivers}
121 fi
122
123 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
124 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
125 fi
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800126 ext_modules=
127 for ext_module in ${EXT_MODULES}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800128 module_abs_path=`readlink -e ${ext_module}`
129 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
130 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
131 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
132 cp -rf ${module_abs_path} ${top_ext_drivers}
133 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
134 fi
135 fi
136 ext_modules="${ext_modules} ${module_rel_path}"
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800137 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800138
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800139 for ext_module_path in ${EXT_MODULES_PATH}; do
140 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800141 while read LINE
142 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800143 module_abs_path=`readlink -e ${LINE}`
144 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800145 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
146 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
147 cp -rf ${module_abs_path} ${top_ext_drivers}
148 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
149 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800150 fi
151 ext_modules="${ext_modules} ${module_rel_path}"
152
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800153 done < ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800154 done
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800155 EXT_MODULES=${ext_modules}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800156
157 local flag=0
158 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
159 for ext_module in ${EXT_MODULES}; do
160 ext_mod_rel=$(rel_path ${ext_module} ${KERNEL_DIR})
161 if [[ ${flag} -eq "1" ]]; then
162 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
163 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${ext_module}/Makefile
164 sed -i "2 i ${extra_symbols}" ${ext_module}/Makefile
165 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${ext_module}/Makefile
166 echo "${ext_module}/Makefile add: ${extra_symbols}"
167 fi
168 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
169 flag=1
170 done
171 fi
172
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800173 export EXT_MODULES
174 echo EXT_MODULES=${EXT_MODULES}
175
176 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +0800177}
178
179export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +0800180
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800181function extra_cmds() {
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800182 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
183 for ext_module in ${EXT_MODULES}; do
184 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
185 done
186 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800187
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800188 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
189 if [[ -d ${top_ext_drivers} ]]; then
190 rm -rf ${top_ext_drivers}
191 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800192 fi
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800193
194 for FILE in ${FILES}; do
195 if [[ "${FILE}" =~ \.dtbo ]] && \
196 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
197 MKDTIMG_DTBOS="${MKDTIMG_DTBOS} ${DIST_DIR}/${FILE}"
198 fi
199 done
200 export MKDTIMG_DTBOS
201
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800202 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800203 modules_install
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800204 set -x
205
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800206 local src_dir=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
207 pushd ${src_dir}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800208 cp modules.order modules_order.back
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800209 : > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800210 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800211 while read LINE
212 do
213 find -name ${LINE} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800214 done < ${OUT_AMLOGIC_DIR}/modules/modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800215 set -x
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800216 sed -i "s/^\.\///" modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800217 : > ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800218 ext_modules=
219 for ext_module in ${EXT_MODULES}; do
220 if [[ ${ext_module} =~ "../" ]]; then
221 ext_module_old=${ext_module}
222 ext_module=${ext_module//\.\.\//}
223 ext_dir=$(dirname ${ext_module})
224 [[ -d extra/${ext_module} ]] && rm -rf extra/${ext_dir}
225 mkdir -p extra/${ext_dir}
226 cp -rf extra/${ext_module_old} extra/${ext_dir}
227
228 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
229 ext_dir_top=${ext_module%/*}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800230 sed -i "s/\.\.\///g" ${ext_modules_order_file}
231 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800232 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800233 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800234 else
235 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
wanwei.jiangf73b2202022-07-23 16:00:44 +0800236 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800237 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800238 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800239 fi
240 ext_modules="${ext_modules} ${ext_module}"
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800241 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800242 EXT_MODULES=${ext_modules}
243 echo EXT_MODULES=${EXT_MODULES}
244 export EXT_MODULES
wanwei.jiangf73b2202022-07-23 16:00:44 +0800245
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800246 head -n ${ramdisk_last_line} modules.order > vendor_boot_modules
wanwei.jiangf73b2202022-07-23 16:00:44 +0800247 file_last_line=`sed -n "$=" modules.order`
248 let line=${file_last_line}-${ramdisk_last_line}
249 tail -n ${line} modules.order > vendor_dlkm_modules
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800250 export MODULES_LIST=${src_dir}/vendor_boot_modules
251 if [[ "${ARCH}" = "arm64" && -z ${FAST_BUILD} ]]; then
Lei Zhang96efea62022-09-02 14:55:06 +0800252 export VENDOR_DLKM_MODULES_LIST=${src_dir}/vendor_dlkm_modules
253 fi
wanwei.jiangf73b2202022-07-23 16:00:44 +0800254
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800255 popd
wanwei.jiang1d154992022-05-30 14:56:26 +0800256
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800257 if [[ -z ${ANDROID_PROJECT} ]] && [[ -d ${OUT_DIR}/${DTS_EXT_DIR} ]]; then
wanwei.jiang1d154992022-05-30 14:56:26 +0800258 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
259 fi
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800260
261 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
262 : > ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangb2ed83c2022-09-09 14:01:20 +0800263 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800264 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
265 echo "OUT_DIR=${OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
266 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800267 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800268 echo "MODULES_STAGING_DIR=${MODULES_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
269 echo "MODULES_PRIVATE_DIR=${MODULES_PRIVATE_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
270 echo "INITRAMFS_STAGING_DIR=${INITRAMFS_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
271 echo "SYSTEM_DLKM_STAGING_DIR=${SYSTEM_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
272 echo "VENDOR_DLKM_STAGING_DIR=${VENDOR_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
273 echo "MKBOOTIMG_STAGING_DIR=${MKBOOTIMG_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800274 echo "DIST_GKI_DIR=${DIST_GKI_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
275 echo "FULL_KERNEL_VERSION=${FULL_KERNEL_VERSION}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800276 fi
Wanwei Jianga07f9a52022-09-30 18:40:40 +0800277
278 for module_path in ${PREBUILT_MODULES_PATH}; do
279 find ${module_path} -type f -name "*.ko" -exec cp {} ${DIST_DIR} \;
280 done
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800281}
282
283export -f extra_cmds
284
Wanwei Jiang2218b892023-03-17 17:31:21 +0800285function bazel_extra_cmds() {
286 modules_install
287
288 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
289 : > ${KERNEL_BUILD_VAR_FILE}
290 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
291 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
292 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
293 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
294 fi
295
296 if [[ ${GKI_CONFIG} != gki_20 ]]; then
297 [[ -f ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz ]] && rm -f ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
298 mv ${DIST_DIR}/system_dlkm_staging_archive.tar.gz ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
299 [[ -d ${DIST_DIR}/system_dlkm_gki10 ]] && rm -rf ${DIST_DIR}/system_dlkm_gki10
300 mkdir ${DIST_DIR}/system_dlkm_gki10
301 pushd ${DIST_DIR}/system_dlkm_gki10
302 tar zxf ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
303 find -name "*.ko" | while read module; do
304 module_name=`echo ${module} | rev | cut -d '/' -f 1 | rev`
305 if [[ ! `grep "/${module_name}" ${DIST_DIR}/system_dlkm.modules.load` ]]; then
306 rm -f ${module}
307 fi
308 done
309 tar czf ${DIST_DIR}/system_dlkm_staging_archive.tar.gz lib
310 popd
311 rm -rf ${DIST_DIR}/system_dlkm_gki10
312 fi
313}
314
315export -f bazel_extra_cmds
316
wanwei.jiang612a8882021-11-23 17:12:23 +0800317function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800318 local ko=$1
319 local loop
qinglin.lia284a932022-09-21 18:07:38 +0800320 for loop in `grep "^$ko:" modules.dep | sed 's/.*://'`; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800321 mod_probe $loop
322 echo insmod $loop >> __install.sh
323 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800324}
325
Wanwei Jiang571dde62022-11-17 14:37:41 +0800326function mod_probe_recovery() {
327 local ko=$1
328 local loop
329 for loop in `grep "^$ko:" modules_recovery.dep | sed 's/.*://'`; do
330 mod_probe_recovery $loop
331 echo insmod $loop >> __install_recovery.sh
332 done
333}
334
wanwei.jiangb12abc82021-12-25 22:17:10 +0800335function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800336 if [[ -n $1 ]]; then
337 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800338 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800339
340 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
341 cp modules.dep modules.dep.temp
342
343 soc_module=()
344 for chip in ${chips[@]}; do
345 chip_module=`ls amlogic-*-soc-${chip}.ko`
346 soc_module=(${soc_module[@]} ${chip_module[@]})
347 done
348 echo soc_module=${soc_module[*]}
349
350 delete_soc_module=()
351 if [[ ${#soc_module[@]} == 0 ]]; then
352 echo "Use all soc module"
353 else
354 for module in `ls amlogic-*-soc-*`; do
355 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
356 echo Delete soc module: ${module}
357 sed -n "/${module}:/p" modules.dep.temp
358 sed -i "/${module}:/d" modules.dep.temp
359 delete_soc_module=(${delete_soc_module[@]} ${module})
360 fi
361 done
362 echo delete_soc_module=${delete_soc_module[*]}
363 fi
364
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800365 if [[ -n ${CLK_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800366 delete_clk_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800367 for module in `ls amlogic-clk-soc-*`; do
368 if [[ "${CLK_SOC_MODULE}" != "${module}" ]] ; then
369 echo Delete clk soc module: ${module}
370 sed -n "/${module}:/p" modules.dep.temp
371 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800372 delete_clk_soc_modules=(${delete_clk_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800373 fi
374 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800375 echo delete_clk_soc_modules=${delete_clk_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800376 fi
377
378 if [[ -n ${PINCTRL_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800379 delete_pinctrl_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800380 for module in `ls amlogic-pinctrl-soc-*`; do
381 if [[ "${PINCTRL_SOC_MODULE}" != "${module}" ]] ; then
382 echo Delete pinctrl soc module: ${module}
383 sed -n "/${module}:/p" modules.dep.temp
384 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800385 delete_pinctrl_soc_modules=(${delete_pinctrl_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800386 fi
387 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800388 echo delete_pinctrl_soc_modules=${delete_pinctrl_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800389 fi
390
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800391 in_line_i=a
392 delete_type_modules=()
393 echo "TYPE_MODULE_SELECT_MODULE=${TYPE_MODULE_SELECT_MODULE}"
394 mkdir temp_dir
395 cd temp_dir
396 in_temp_dir=y
397 for element in ${TYPE_MODULE_SELECT_MODULE}; do
398 if [[ ${in_temp_dir} = y ]]; then
399 cd ../
400 rm -r temp_dir
401 in_temp_dir=
402 fi
403 if [[ ${in_line_i} = a ]]; then
404 in_line_i=b
405 type_module=${element}
406 select_modules_i=0
407 select_modules_count=
408 select_modules=
409 elif [[ ${in_line_i} = b ]]; then
410 in_line_i=c
411 select_modules_count=${element}
412 else
413 let select_modules_i+=1
414 select_modules="${select_modules} ${element}"
415 if [[ ${select_modules_i} -eq ${select_modules_count} ]]; then
416 in_line_i=a
417 echo type_module=$type_module select_modules=$select_modules
418 for module in `ls ${type_module}`; do
419 dont_delete_module=0
420 for select_module in ${select_modules}; do
421 if [[ "${select_module}" == "${module}" ]] ; then
422 dont_delete_module=1
423 break;
424 fi
425 done
426 if [[ ${dont_delete_module} != 1 ]]; then
427 echo Delete module: ${module}
428 sed -n "/${module}:/p" modules.dep.temp
429 sed -i "/${module}:/d" modules.dep.temp
430 delete_type_modules=(${delete_type_modules[@]} ${module})
431 fi
432 done
433 echo delete_type_modules=${delete_type_modules[*]}
434 fi
435 fi
436 done
437 if [[ -n ${in_temp_dir} ]]; then
438 cd ../
439 rm -r temp_dir
440 fi
441
442 black_modules=()
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800443 mkdir service_module
444 echo MODULES_SERVICE_LOAD_LIST=${MODULES_SERVICE_LOAD_LIST[@]}
445 BLACK_AND_SERVICE_LIST=(${MODULES_LOAD_BLACK_LIST[@]} ${MODULES_SERVICE_LOAD_LIST[@]})
446 echo ${BLACK_AND_SERVICE_LIST[@]}
447 for module in ${BLACK_AND_SERVICE_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800448 modules=`ls ${module}*`
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800449 black_modules=(${black_modules[@]} ${modules[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800450 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800451 if [[ ${#black_modules[@]} == 0 ]]; then
452 echo "black_modules is null, don't delete modules, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800453 else
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800454 echo black_modules=${black_modules[*]}
455 for module in ${black_modules[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800456 echo Delete module: ${module}
457 sed -n "/${module}:/p" modules.dep.temp
458 sed -i "/${module}:/d" modules.dep.temp
459 done
460 fi
461
462 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800463 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 +0800464 for module in ${delete_modules[@]}; do
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800465 if [[ ! `ls $module` ]]; then
466 continue
467 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800468 match=`sed -n "/${module}/=" modules.dep.temp1`
469 for match in ${match[@]}; do
470 match_count=(${match_count[@]} $match)
471 done
472 if [[ ${#match_count[@]} != 0 ]]; then
473 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800474 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800475 exit
476 fi
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800477 if [[ -n ${ANDROID_PROJECT} ]]; then
478 for service_module_temp in ${MODULES_SERVICE_LOAD_LIST[@]}; do
479 if [[ ${module} = ${service_module_temp} ]]; then
480 mv ${module} service_module
481 fi
482 done
483 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800484 rm -f ${module}
485 done
486 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800487 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800488
489 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
490 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800491 sed -n "/${module}:/p" modules.dep.temp
492 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
493 sed -i "/${module}:/d" modules.dep.temp
494 sed -n "/${module}.*\.ko:/p" modules.dep.temp
495 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
496 sed -i "/${module}.*\.ko:/d" modules.dep.temp
497 done
498
Wanwei Jiang571dde62022-11-17 14:37:41 +0800499 if [[ -n ${ANDROID_PROJECT} ]]; then
500 cp modules.dep.temp modules_recovery.dep.temp
501 cp modules.dep.temp1 modules_recovery.dep.temp1
502 fi
503
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800504 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
505 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
506 sed -n "/${module}:/p" modules.dep.temp
507 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
508 sed -i "/${module}:/d" modules.dep.temp
509 sed -n "/${module}.*\.ko:/p" modules.dep.temp
510 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
511 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800512 done
513
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800514 if [ -f modules.dep.temp2 ]; then
515 rm modules.dep.temp2
516 fi
517 touch modules.dep.temp2
518 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
519 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
520 sed -n "/${module}:/p" modules.dep.temp
521 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
522 sed -i "/${module}:/d" modules.dep.temp
523 sed -n "/${module}.*\.ko:/p" modules.dep.temp
524 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
525 sed -i "/${module}.*\.ko:/d" modules.dep.temp
526 done
527
528 cat modules.dep.temp >> modules.dep.temp1
529 cat modules.dep.temp2 >> modules.dep.temp1
530
wanwei.jiangb12abc82021-12-25 22:17:10 +0800531 cp modules.dep.temp1 modules.dep
532 rm modules.dep.temp
533 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800534 rm modules.dep.temp2
Wanwei Jiang571dde62022-11-17 14:37:41 +0800535
536 if [[ -n ${ANDROID_PROJECT} ]]; then
537 for module in ${RECOVERY_MODULES_LOAD_LIST[@]}; do
538 echo RECOVERY_MODULES_LOAD_LIST: $module
539 sed -n "/${module}:/p" modules_recovery.dep.temp
540 sed -n "/${module}:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
541 sed -i "/${module}:/d" modules_recovery.dep.temp
542 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp
543 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
544 sed -i "/${module}.*\.ko:/d" modules_recovery.dep.temp
545 done
546
547 cat modules_recovery.dep.temp >> modules_recovery.dep.temp1
548
549 cp modules_recovery.dep.temp1 modules_recovery.dep
550 rm modules_recovery.dep.temp
551 rm modules_recovery.dep.temp1
552 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800553}
554
Wanwei Jiang571dde62022-11-17 14:37:41 +0800555create_ramdisk_vendor_recovery() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800556 install_temp=$1
Wanwei Jiang571dde62022-11-17 14:37:41 +0800557 if [[ -n ${ANDROID_PROJECT} ]]; then
558 recovery_install_temp=$2
559 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800560 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
Wanwei Jiang9173e462022-09-29 00:58:33 +0800561 ramdisk_module_i=${#RAMDISK_MODULES_LOAD_LIST[@]}
562 while [ ${ramdisk_module_i} -gt 0 ]; do
563 let ramdisk_module_i--
564 echo ramdisk_module_i=$ramdisk_module_i ${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
565 if [[ `grep "${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}" ${install_temp}` ]]; then
566 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
567 break;
568 fi
569 done
570 # last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800571 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
572 for line in ${last_ramdisk_module_line}; do
573 ramdisk_last_line=${line}
574 done
wanwei.jiangf73b2202022-07-23 16:00:44 +0800575 export ramdisk_last_line
Wanwei Jiang571dde62022-11-17 14:37:41 +0800576
577 if [[ -n ${ANDROID_PROJECT} ]]; then
578 recovery_module_i=${#RECOVERY_MODULES_LOAD_LIST[@]}
qinglin.lidba324f2023-03-02 19:56:21 +0800579 #when RECOVERY_MODULES_LOAD_LIST is NULL
580 if [ ${#RECOVERY_MODULES_LOAD_LIST[@]} -eq 0 ]; then
581 last_recovery_module=${last_ramdisk_module}
582 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800583 while [ ${recovery_module_i} -gt 0 ]; do
584 let recovery_module_i--
585 echo recovery_module_i=$recovery_module_i ${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}
586 if [[ `grep "${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}" ${recovery_install_temp}` ]]; then
587 last_recovery_module=${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}
588 break;
589 fi
590 done
591 # last_recovery_module=${RECOVERY_MODULES_LOAD_LIST[${#RECOVERY_MODULES_LOAD_LIST[@]}-1]}
592 last_recovery_module_line=`sed -n "/${last_recovery_module}/=" ${recovery_install_temp}`
593 for line in ${last_recovery_module_line}; do
594 recovery_last_line=${line}
595 done
596
597 sed -n "${ramdisk_last_line},${recovery_last_line}p" ${recovery_install_temp} > recovery_install.sh
598 sed -i "1d" recovery_install.sh
599 mkdir recovery
600 cat recovery_install.sh | cut -d ' ' -f 2 > recovery/recovery_modules.order
qinglin.lidba324f2023-03-02 19:56:21 +0800601 if [ ${#RECOVERY_MODULES_LOAD_LIST[@]} -ne 0 ]; then
602 cat recovery_install.sh | cut -d ' ' -f 2 | xargs cp -t recovery/
603 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800604 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' recovery_install.sh
605 echo "echo Install recovery modules success!" >> recovery_install.sh
606 chmod 755 recovery_install.sh
607 mv recovery_install.sh recovery/
608 fi
609
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800610 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800611 mkdir ramdisk
wanwei.jiangf73b2202022-07-23 16:00:44 +0800612 cat ramdisk_install.sh | cut -d ' ' -f 2 > ramdisk/ramdisk_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800613 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800614
qinglin.lie5b951e2022-06-07 16:13:44 +0800615 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' ramdisk_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800616 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
617 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800618 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800619
620 file_last_line=`sed -n "$=" ${install_temp}`
621 let line=${file_last_line}-${ramdisk_last_line}
622 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800623 mkdir vendor
wanwei.jiangf73b2202022-07-23 16:00:44 +0800624 cat vendor_install.sh | cut -d ' ' -f 2 > vendor/vendor_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800625 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800626
qinglin.lie5b951e2022-06-07 16:13:44 +0800627 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' vendor_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800628 echo "echo Install vendor modules success!" >> vendor_install.sh
629 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800630 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800631}
632
wanwei.jiang612a8882021-11-23 17:12:23 +0800633function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800634 arg1=$1
635
Wanwei Jiang2218b892023-03-17 17:31:21 +0800636 export OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR:-$(readlink -m ${COMMON_OUT_DIR}/amlogic)}
637 echo $OUT_AMLOGIC_DIR
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800638 rm -rf ${OUT_AMLOGIC_DIR}
639 mkdir -p ${OUT_AMLOGIC_DIR}
640 mkdir -p ${OUT_AMLOGIC_DIR}/modules
641 mkdir -p ${OUT_AMLOGIC_DIR}/ext_modules
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800642 mkdir -p ${OUT_AMLOGIC_DIR}/symbols
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800643
Wanwei Jiang2218b892023-03-17 17:31:21 +0800644 if [[ ${BAZEL} == "1" ]]; then
645 local output="out/bazel/output_user_root"
646 for dir in `ls ${output}`; do
647 if [[ ${dir} =~ ^[0-9A-Fa-f]*$ ]]; then
648 digit_output=${output}/${dir}
649 break
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800650 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800651 done
652
Wanwei Jiang0df84602023-05-05 14:40:42 +0800653 while read module
654 do
Wanwei Jiang2218b892023-03-17 17:31:21 +0800655 module_name=`echo ${module} | rev | cut -d '/' -f 1 | rev`
Wanwei Jiang0df84602023-05-05 14:40:42 +0800656 if [[ `echo ${module} | grep "^kernel\/"` ]]; then
657 if [[ -f ${DIST_DIR}/${module_name} ]]; then
658 cp ${DIST_DIR}/${module_name} ${OUT_AMLOGIC_DIR}/modules
659 else
660 module=`find ${digit_output}/execroot/ -name ${module_name} | grep "amlogic"`
661 cp ${module} ${OUT_AMLOGIC_DIR}/modules
662 fi
663 elif [[ `echo ${module} | grep "^extra\/"` ]]; then
664 cp ${DIST_DIR}/${module_name} ${OUT_AMLOGIC_DIR}/ext_modules
Wanwei Jiang2218b892023-03-17 17:31:21 +0800665 else
Wanwei Jiang0df84602023-05-05 14:40:42 +0800666 echo "warning unrecognized module: ${module}"
Wanwei Jiang2218b892023-03-17 17:31:21 +0800667 fi
Wanwei Jiang0df84602023-05-05 14:40:42 +0800668 done < ${DIST_DIR}/modules.load
Wanwei Jiang2218b892023-03-17 17:31:21 +0800669
670 dep_file=`find ${digit_output}/execroot/ -name *.dep | grep "amlogic"`
671 cp ${dep_file} ${OUT_AMLOGIC_DIR}/modules/full_modules.dep
Wanwei Jiang0df84602023-05-05 14:40:42 +0800672 grep -E "^kernel\/" ${dep_file} > ${OUT_AMLOGIC_DIR}/modules/modules.dep
Wanwei Jiang2218b892023-03-17 17:31:21 +0800673 touch ${module} ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
674 for order_file in `find ${digit_output}/execroot/ -name "modules.order.*" | grep "amlogic"`; do
675 echo "# ${order_file}" >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
676 cat ${order_file} >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
677 echo >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
678 done
679 else
680 local MODULES_ROOT_DIR=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
681 pushd ${MODULES_ROOT_DIR}
682 local common_drivers=${COMMON_DRIVERS_DIR##*/}
683 local modules_list=$(find -type f -name "*.ko")
684 for module in ${modules_list}; do
685 if [[ -n ${ANDROID_PROJECT} ]]; then # copy internal build modules
686 if [[ `echo ${module} | grep -E "\.\/kernel\/|\/${common_drivers}\/"` ]]; then
687 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
688 else
689 cp ${module} ${OUT_AMLOGIC_DIR}/ext_modules/
690 fi
691 else # copy all modules, include external modules
692 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
693 fi
694 done
695
696 if [[ -n ${ANDROID_PROJECT} ]]; then # internal build modules
697 grep -E "^kernel\/|^${common_drivers}\/" modules.dep > ${OUT_AMLOGIC_DIR}/modules/modules.dep
698 else # all modules, include external modules
699 cp modules.dep ${OUT_AMLOGIC_DIR}/modules
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800700 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800701 popd
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800702 fi
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800703 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang612a8882021-11-23 17:12:23 +0800704 sed -i 's#[^ ]*/##g' modules.dep
705
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800706 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800707
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800708 touch __install.sh
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800709 touch modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800710 for loop in `cat modules.dep | sed 's/:.*//'`; do
711 mod_probe $loop
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800712 echo $loop >> modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800713 echo insmod $loop >> __install.sh
714 done
715
716 cat __install.sh | awk ' {
717 if (!cnt[$2]) {
718 print $0;
719 cnt[$2]++;
720 }
721 }' > __install.sh.tmp
722
Wanwei Jiangbf119d22022-10-27 09:49:49 +0800723 cp modules.order modules.order.back
724 cut -d ' ' -f 2 __install.sh.tmp > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800725
726 if [[ -n ${ANDROID_PROJECT} ]]; then
727 touch __install_recovery.sh
728 touch modules_recovery.order
729 for loop in `cat modules_recovery.dep | sed 's/:.*//'`; do
730 mod_probe_recovery $loop
731 echo $loop >> modules_recovery.order
732 echo insmod $loop >> __install_recovery.sh
733 done
734
735 cat __install_recovery.sh | awk ' {
736 if (!cnt[$2]) {
737 print $0;
738 cnt[$2]++;
739 }
740 }' > __install_recovery.sh.tmp
741
742 cut -d ' ' -f 2 __install_recovery.sh.tmp > modules_recovery.order
743 fi
744 create_ramdisk_vendor_recovery __install.sh.tmp __install_recovery.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800745
Dezhen Wang124ad7d2023-02-06 15:35:14 +0800746 if [[ -n ${MANUAL_INSMOD_MODULE} ]]; then
747 install_file=manual_install.sh
748 else
749 install_file=install.sh
750 fi
751 echo "#!/bin/sh" > ${install_file}
752 echo "cd ramdisk" >> ${install_file}
753 echo "./ramdisk_install.sh" >> ${install_file}
754 echo "cd ../vendor" >> ${install_file}
755 echo "./vendor_install.sh" >> ${install_file}
756 echo "cd ../" >> ${install_file}
757 chmod 755 ${install_file}
wanwei.jiang612a8882021-11-23 17:12:23 +0800758
759 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
Wanwei Jianga5977bd2022-08-24 22:43:40 +0800760 rm __install.sh __install.sh.tmp
wanwei.jiang612a8882021-11-23 17:12:23 +0800761
Wanwei Jiang571dde62022-11-17 14:37:41 +0800762 if [[ -n ${ANDROID_PROJECT} ]]; then
763 rm __install_recovery.sh __install_recovery.sh.tmp
764 fi
765
wanwei.jiang236e9a32021-12-07 16:34:14 +0800766 popd
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800767
Wanwei Jiang2218b892023-03-17 17:31:21 +0800768 if [[ ${BAZEL} == "1" ]]; then
769 cp ${DIST_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
770
771 find ${digit_output}/execroot -name *.ko | grep "unstripped" | while read module; do
772 cp ${module} ${OUT_AMLOGIC_DIR}/symbols
773 chmod +w ${OUT_AMLOGIC_DIR}/symbols/$(basename ${module})
774 done
775 chmod -w ${OUT_AMLOGIC_DIR}/symbols/*.ko
776 else
777 cp ${OUT_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
778 find ${OUT_DIR} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
779 for ext_module in ${EXT_MODULES}; do
780 find ${COMMON_OUT_DIR}/${ext_module} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
781 done
782 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800783}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800784export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800785
Wanwei Jiang2218b892023-03-17 17:31:21 +0800786function rename_external_module_name() {
787 local external_coppied
788 local vendor_coppied
789 sed 's/^[\t ]*\|[\t ]*$//g' ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/module_rename.txt | sed '/^#/d;/^$/d' | sed 's/[[:space:]][[:space:]]*/ /g' | while read module_line; do
790 target_module_name=`echo ${module_line%%:*} | sed '/^#/d;/^$/d'`
791 modules_name=`echo ${module_line##:*} | sed '/^#/d;/^$/d'`
792 [[ -f ${OUT_AMLOGIC_DIR}/ext_modules/${target_module_name} ]] && external_coppied=1
793 [[ -f ${OUT_AMLOGIC_DIR}/modules/vendor/${target_module_name} ]] && vendor_coppied=1
794 echo target_module_name=$target_module_name modules_name=$modules_name external_coppied=$external_coppied vendor_coppied=$vendor_coppied
795 for module in ${modules_name}; do
796 echo module=$module
797 if [[ -f ${OUT_AMLOGIC_DIR}/ext_modules/${module} ]]; then
798 if [[ -z ${external_coppied} ]]; then
799 cp ${OUT_AMLOGIC_DIR}/ext_modules/${module} ${OUT_AMLOGIC_DIR}/ext_modules/${target_module_name}
800 external_coppied=1
801 fi
802 rm -f ${OUT_AMLOGIC_DIR}/ext_modules/${module}
803 fi
804 if [[ -f ${OUT_AMLOGIC_DIR}/modules/vendor/${module} ]]; then
805 if [[ -z ${vendor_coppied} ]]; then
806 cp ${OUT_AMLOGIC_DIR}/modules/vendor/${module} ${OUT_AMLOGIC_DIR}/modules/vendor/${target_module_name}
807 vendor_coppied=1
808 fi
809 rm -f ${OUT_AMLOGIC_DIR}/modules/vendor/${module}
810 fi
811 done
812 external_coppied=
813 vendor_coppied=
814 done
815}
816export -f rename_external_module_name
817
Dezhen Wang5ad119c2023-05-04 15:07:49 +0800818# function rebuild_rootfs can rebuild the rootfs if rootfs_base.cpio.gz.uboot exist
wanwei.jiang612a8882021-11-23 17:12:23 +0800819function rebuild_rootfs() {
Wanwei Jiang2218b892023-03-17 17:31:21 +0800820 echo
821 echo "========================================================"
822 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
823 echo "Rebuild rootfs in order to install modules!"
824 else
825 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
826 return
827 fi
828
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800829 pushd ${OUT_AMLOGIC_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800830
Lei Zhang475c17b2022-03-03 11:08:50 +0800831 local ARCH=arm64
832 if [[ -n $1 ]]; then
833 ARCH=$1
834 fi
835
wanwei.jiang612a8882021-11-23 17:12:23 +0800836 rm rootfs -rf
837 mkdir rootfs
Wanwei Jiang2218b892023-03-17 17:31:21 +0800838 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800839 cd rootfs
840 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
841 gunzip rootfs_base.cpio.gz
842 mkdir rootfs
843 cd rootfs
844 cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800845 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
846 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800847 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800848 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800849
wanwei.jiang612a8882021-11-23 17:12:23 +0800850 find . | cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
851 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800852 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 +0800853 mv rootfs_new.cpio.gz.uboot ../
854 cd ../
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800855 cp rootfs_new.cpio.gz.uboot ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800856
857 popd
858}
859export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800860
Dezhen Wang5ad119c2023-05-04 15:07:49 +0800861# function check_undefined_symbol can check the dependence among the modules
862# parameter:
863# --modules_depend
wanwei.jiang403c9942021-11-30 18:29:02 +0800864function check_undefined_symbol() {
Wanwei Jiang2218b892023-03-17 17:31:21 +0800865 if [[ ${MODULES_DEPEND} != "1" ]]; then
866 return
867 fi
868
869 echo "========================================================"
870 echo "print modules depend"
871
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800872 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800873 echo
874 echo "========================================================"
875 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800876 if [[ -n ${LLVM} ]]; then
877 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
878 elif [[ -n ${CROSS_COMPILE} ]]; then
879 compile_tool=${CROSS_COMPILE}
880 else
881 echo "can't find compile tool"
882 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800883 ${compile_tool}nm ${DIST_DIR}/vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800884 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
885 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
886 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
887 cp ramdisk/*.ko .
888 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800889 while read LINE
890 do
891 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800892 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 +0800893 do
894 #echo ${U}
895 U_v=`grep -w ${U} vmlinux_T.txt`
896 in_vmlinux=0
897 if [ -n "${U_v}" ];
898 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800899 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800900 in_vmlinux=1
901 continue
902 fi
903 in_module=0
904 MODULE=
905 while read LINE1
906 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800907 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 +0800908 if [ -n "${U_m}" ];
909 then
910 in_module=1
911 MODULE=${LINE1}
912 fi
913 done < module_list.txt
914 if [ ${in_module} -eq "1" ];
915 then
916 printf "\t%-50s <== %s\n" ${U} ${MODULE}
917 continue
918 else
919 printf "\t%-50s <== none\n" ${U}
920 fi
921 done
922 echo
923 echo
924 done < module_list.txt
925 rm vmlinux_T.txt
926 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800927 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +0800928 popd
929}
930export -f check_undefined_symbol
Dezhen Wangd40fa552023-04-11 16:13:27 +0800931
932function reorganized_abi_symbol_list_file() { # delete the extra information but symbol
933 cat $@ | sed '/^$/d' >> ${symbol_tmp} # remove blank lines
934 sed -i '/^\[/d' ${symbol_tmp} # remove the title
935 sed -i '/^\#/d' ${symbol_tmp} # remove the comment
936}
937export -f reorganized_abi_symbol_list_file
938
939function abi_symbol_list_detect () { # detect symbol information that should be submitted or fix
940 symbol_file1=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic
941 symbol_file2=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.10
942 symbol_file3=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.debug
943 symbol_file4=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.illegal
944
945 file_list=("${symbol_file1} ${symbol_file2} ${symbol_file3} ${symbol_file4}")
946 for file in ${file_list}
947 do
948 local symbol_tmp=`mktemp tmp.XXXXXXXXXXXX`
949 reorganized_abi_symbol_list_file "${file}"
950
951 if [[ -s ${symbol_tmp} ]]; then
952 if [[ ${file} =~ abi_gki_aarch64_amlogic.illegal ]]; then
953 echo "WARNING: The symbols in ${file} are illegal, please deal with them as soon as possible!!!"
954 else
955 echo "WARNING: The symbols in ${file} should be submit to google!!!"
956 fi
957 cat ${symbol_tmp}
958 echo -e "\n------------------------------------------------------------"
959 fi
960 rm ${symbol_tmp}
961 done
962}
963export -f abi_symbol_list_detect
964
Dezhen Wang5ad119c2023-05-04 15:07:49 +0800965# adjust_config_action concerns three types of cmd:
966# parameters:
967# --menuconfig: make menuconfig manually based on different gki standard
968# --basicconfig: only config kernel with google original gki_defconfig as base
969# --check_defconfig: contrast the defconfig generated in out directory with gki_defconfig and show the difference
970function adjust_config_action () {
971 if [[ -n ${MENUCONFIG} ]] || [[ -n ${BASICCONFIG} ]] || [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
972 # ${ROOT_DIR}/${BUILD_DIR}/config.sh menuconfig
973 HERMETIC_TOOLCHAIN=0
974 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
975 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
976
977 orig_config=$(mktemp)
978 orig_defconfig=$(mktemp)
979 out_config="${OUT_DIR}/.config"
980 out_defconfig="${OUT_DIR}/defconfig"
981 changed_config=$(mktemp)
982 changed_defconfig=$(mktemp)
983
984 if [[ -n ${BASICCONFIG} ]]; then # config kernel with gki_defconfig or make menuconfig based on it
985 set -x
986 defconfig_name=`basename ${GKI_BASE_CONFIG}`
987 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${defconfig_name})
988 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
989 cp ${out_config} ${orig_config}
990 cp ${out_defconfig} ${orig_defconfig}
991 if [ "${BASICCONFIG}" = "m" ]; then # make menuconfig based on gki_defconfig
992 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
993 fi
994 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
995 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
996 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
997 if [ "${ARCH}" = "arm" ]; then
998 cp ${out_defconfig} ${GKI_BASE_CONFIG}
999 fi
1000 set +x # show the difference between the gki_defconfig and the config after make menuconfig
1001 echo
1002 echo "========================================================"
1003 echo "==================== .config diff ===================="
1004 cat ${changed_config}
1005 echo "==================== defconfig diff ===================="
1006 cat ${changed_defconfig}
1007 echo "========================================================"
1008 echo
1009 elif [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then # compare the defconfig generated in out directory with gki_defconfig
1010 set -x
1011 pre_defconfig_cmds
1012 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1013 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig) # export the defconfig to out directory
1014 diff -u ${ROOT_DIR}/${GKI_BASE_CONFIG} ${OUT_DIR}/defconfig
1015 post_defconfig_cmds
1016 set +x
1017 else # make menuconfig based on config with different gki standard
1018 set -x
1019 pre_defconfig_cmds
1020 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1021 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1022 cp ${out_config} ${orig_config}
1023 cp ${out_defconfig} ${orig_defconfig}
1024 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
1025 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1026 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
1027 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
1028 post_defconfig_cmds
1029 set +x
1030 echo
1031 echo "========================================================"
1032 echo "if the config follows GKI2.0, please add it to the file amlogic_gki.fragment manually"
1033 echo "if the config follows GKI1.0 optimize, please add it to the file amlogic_gki.10 manually"
1034 echo "if the config follows GKI1.0 debug, please add it to the file amlogic_gki.debug manually"
1035 echo "==================== .config diff ===================="
1036 cat ${changed_config}
1037 echo "==================== defconfig diff ===================="
1038 cat ${changed_defconfig}
1039 echo "========================================================"
1040 echo
1041 fi
1042 rm -f ${orig_config} ${changed_config} ${orig_defconfig} ${changed_defconfig}
1043 exit
1044 fi
1045}
1046export -f adjust_config_action
1047
1048# function build_part_of_kernel can only build part of kernel such as image modules or dtbs
1049# parameter:
1050# --image: only build image
1051# --modules: only build kernel modules
1052# --dtbs: only build dtbs
1053function build_part_of_kernel () {
1054 if [[ -n ${IMAGE} ]] || [[ -n ${MODULES} ]] || [[ -n ${DTB_BUILD} ]]; then
1055 old_path=${PATH}
1056 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
1057 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
1058
1059 if [[ ! -f ${OUT_DIR}/.config ]]; then
1060 pre_defconfig_cmds
1061 set -x
1062 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1063 set +x
1064 post_defconfig_cmds
1065 fi
1066
1067 if [[ -n ${IMAGE} ]]; then
1068 set -x
1069 if [ "${ARCH}" = "arm64" ]; then
1070 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) Image)
1071 elif [ "${ARCH}" = "arm" ]; then
1072 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) LOADADDR=0x108000 uImage)
1073 fi
1074 set +x
1075 fi
1076 mkdir -p ${DIST_DIR}
1077 if [[ -n ${DTB_BUILD} ]]; then
1078 set -x
1079 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) dtbs)
1080 set +x
1081 fi
1082 if [[ -n ${MODULES} ]]; then
1083 export MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
1084 rm -rf ${MODULES_STAGING_DIR}
1085 mkdir -p ${MODULES_STAGING_DIR}
1086 if [ "${DO_NOT_STRIP_MODULES}" != "1" ]; then
1087 MODULE_STRIP_FLAG="INSTALL_MOD_STRIP=1"
1088 fi
1089 if [[ `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
1090 set -x
1091 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) modules)
1092 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} "${MAKE_ARGS[@]}" modules_install)
1093 set +x
1094 fi
1095 echo EXT_MODULES=$EXT_MODULES
1096 prepare_module_build
1097 if [[ -z "${SKIP_EXT_MODULES}" ]] && [[ -n "${EXT_MODULES}" ]]; then
1098 echo "========================================================"
1099 echo " Building external modules and installing them into staging directory"
1100 KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
1101 for EXT_MOD in ${EXT_MODULES}; do
1102 EXT_MOD_REL=$(rel_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
1103 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
1104 set -x
1105 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1106 O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}"
1107 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1108 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
1109 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
1110 INSTALL_MOD_DIR="extra/${EXT_MOD}" \
1111 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" \
1112 "${MAKE_ARGS[@]}" modules_install
1113 set +x
1114 done
1115 fi
1116 export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
1117 set -x
1118 extra_cmds
1119 set +x
1120 MODULES=$(find ${MODULES_STAGING_DIR} -type f -name "*.ko")
1121 cp -p ${MODULES} ${DIST_DIR}
1122
1123 new_path=${PATH}
1124 PATH=${old_path}
1125 echo "========================================================"
1126 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
1127 echo "Rebuild rootfs in order to install modules!"
1128 rebuild_rootfs ${ARCH}
1129 else
1130 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
1131 fi
1132 PATH=${new_path}
1133 fi
1134 if [ -n "${DTS_EXT_DIR}" ]; then
1135 if [ -d "${ROOT_DIR}/${DTS_EXT_DIR}" ]; then
1136 DTS_EXT_DIR=$(rel_path ${ROOT_DIR}/${DTS_EXT_DIR} ${KERNEL_DIR})
1137 if [ -d ${OUT_DIR}/${DTS_EXT_DIR} ]; then
1138 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
1139 fi
1140 fi
1141 fi
1142 for FILE in ${FILES}; do
1143 if [ -f ${OUT_DIR}/${FILE} ]; then
1144 echo " $FILE"
1145 cp -p ${OUT_DIR}/${FILE} ${DIST_DIR}/
1146 elif [[ "${FILE}" =~ \.dtb|\.dtbo ]] && \
1147 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
1148 # DTS_EXT_DIR is recalculated before to be relative to KERNEL_DIR
1149 echo " $FILE"
1150 cp -p "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" "${DIST_DIR}/"
1151 else
1152 echo " $FILE is not a file, skipping"
1153 fi
1154 done
1155 exit
1156 fi
1157}
1158
1159export -f build_part_of_kernel
1160
1161function export_env_variable () {
1162 export ABI BUILD_CONFIG LTO KMI_SYMBOL_LIST_STRICT_MODE CHECK_DEFCONFIG MANUAL_INSMOD_MODULE ARCH
1163 export KERNEL_DIR COMMON_DRIVERS_DIR BUILD_DIR ANDROID_PROJECT GKI_CONFIG UPGRADE_PROJECT FAST_BUILD CHECK_GKI_20 DEV_CONFIG CONFIG_GROUP
1164 export FULL_KERNEL_VERSION BAZEL
1165
1166 echo ROOT_DIR=$ROOT_DIR
1167 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}
1168 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} FAST_BUILD=${FAST_BUILD} CHECK_GKI_20=${CHECK_GKI_20}
1169 echo FULL_KERNEL_VERSION=${FULL_KERNEL_VERSION} BAZEL=${BAZEL}
1170 echo MENUCONFIG=${MENUCONFIG} BASICCONFIG=${BASICCONFIG} IMAGE=${IMAGE} MODULES=${MODULES} DTB_BUILD=${DTB_BUILD}
1171}
1172
1173export -f export_env_variable