blob: aa8fc115c5a623e4a76a4352a822a2e4e4e39761 [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
Wanwei Jiangc65e4d32023-03-21 16:24:41 +080042 if [[ ${IN_BUILD_GKI_10} == 1 ]]; then
43 local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
44 echo "CONFIG_MODULE_SIG_ALL=y" >> ${temp_file}
45 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${temp_file}
46 rm ${temp_file}
47 fi
Dezhen Wanga5f456a2023-05-05 17:40:31 +080048
49 if [[ -n ${DEV_CONFIGS} ]]; then
50 config_list=$(echo ${DEV_CONFIGS}|sed 's/+/ /g')
51 #verify the extra config is in the right path and merge the config
52 CONFIG_DIR=arch/${ARCH}/configs
53 for config_name in ${config_list[@]}
54 do
55 if [[ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/${CONFIG_DIR}/${config_name} ]]; then
56 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}
57 elif [[ -f ${config_name} ]]; then
58 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${config_name}
59 else
60 echo "ERROR: config file ${config_name} is not in the right path!!"
61 exit
62 fi
63 done
64 fi
wanwei.jiang91776952021-11-19 13:10:32 +080065}
66export -f pre_defconfig_cmds
67
68function post_defconfig_cmds() {
Wanwei Jiang2d4f9742022-09-13 11:22:17 +080069 rm ${ROOT_DIR}/${KCONFIG_DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080070}
71export -f post_defconfig_cmds
72
73function read_ext_module_config() {
74 ALL_LINE=""
75 while read LINE
76 do
77 if [[ $LINE != \#* && $LINE != "" ]]; then
78 ALL_LINE="$ALL_LINE"" ""$LINE"
79 fi
80 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +080081
82 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080083}
84
85function read_ext_module_predefine() {
86 PRE_DEFINE=""
87
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080088 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080089 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
90 done
91
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080092 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080093 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
94 done
95
wanwei.jiang5c861ae2022-04-21 00:51:50 +080096 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080097}
98
wanwei.jiang8d4a5132022-04-28 16:43:54 +080099top_ext_drivers=top_ext_drivers
wanwei.jiang91776952021-11-19 13:10:32 +0800100function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800101 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800102 if [[ ! `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800103 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
104 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
105 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
106 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +0800107 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800108
109 for ext_module_config in ${EXT_MODULES_CONFIG}; do
110 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
111 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
112 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
113 done
114 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
115 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
116 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
117
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800118 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
119 if [[ -d ${top_ext_drivers} ]]; then
120 rm -rf ${top_ext_drivers}
121 fi
122 mkdir -p ${top_ext_drivers}
123 fi
124
125 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
126 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
127 fi
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800128 ext_modules=
129 for ext_module in ${EXT_MODULES}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800130 module_abs_path=`readlink -e ${ext_module}`
131 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
132 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
133 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
134 cp -rf ${module_abs_path} ${top_ext_drivers}
135 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
136 fi
137 fi
138 ext_modules="${ext_modules} ${module_rel_path}"
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800139 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800140
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800141 for ext_module_path in ${EXT_MODULES_PATH}; do
142 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800143 while read LINE
144 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800145 module_abs_path=`readlink -e ${LINE}`
146 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800147 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
148 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
149 cp -rf ${module_abs_path} ${top_ext_drivers}
150 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
151 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800152 fi
153 ext_modules="${ext_modules} ${module_rel_path}"
154
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800155 done < ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800156 done
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800157 EXT_MODULES=${ext_modules}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800158
159 local flag=0
160 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
161 for ext_module in ${EXT_MODULES}; do
162 ext_mod_rel=$(rel_path ${ext_module} ${KERNEL_DIR})
163 if [[ ${flag} -eq "1" ]]; then
164 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
165 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${ext_module}/Makefile
166 sed -i "2 i ${extra_symbols}" ${ext_module}/Makefile
167 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${ext_module}/Makefile
168 echo "${ext_module}/Makefile add: ${extra_symbols}"
169 fi
170 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
171 flag=1
172 done
173 fi
174
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800175 export EXT_MODULES
176 echo EXT_MODULES=${EXT_MODULES}
177
178 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +0800179}
180
181export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +0800182
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800183function extra_cmds() {
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800184 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
185 for ext_module in ${EXT_MODULES}; do
186 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
187 done
188 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800189
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800190 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
191 if [[ -d ${top_ext_drivers} ]]; then
192 rm -rf ${top_ext_drivers}
193 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800194 fi
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800195
196 for FILE in ${FILES}; do
197 if [[ "${FILE}" =~ \.dtbo ]] && \
198 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
199 MKDTIMG_DTBOS="${MKDTIMG_DTBOS} ${DIST_DIR}/${FILE}"
200 fi
201 done
202 export MKDTIMG_DTBOS
203
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800204 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800205 modules_install
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800206 set -x
207
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800208 local src_dir=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
209 pushd ${src_dir}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800210 cp modules.order modules_order.back
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800211 : > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800212 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800213 while read LINE
214 do
215 find -name ${LINE} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800216 done < ${OUT_AMLOGIC_DIR}/modules/modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800217 set -x
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800218 sed -i "s/^\.\///" modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800219 : > ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800220 ext_modules=
221 for ext_module in ${EXT_MODULES}; do
222 if [[ ${ext_module} =~ "../" ]]; then
223 ext_module_old=${ext_module}
224 ext_module=${ext_module//\.\.\//}
225 ext_dir=$(dirname ${ext_module})
226 [[ -d extra/${ext_module} ]] && rm -rf extra/${ext_dir}
227 mkdir -p extra/${ext_dir}
228 cp -rf extra/${ext_module_old} extra/${ext_dir}
229
230 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
231 ext_dir_top=${ext_module%/*}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800232 sed -i "s/\.\.\///g" ${ext_modules_order_file}
233 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800234 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800235 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800236 else
237 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
wanwei.jiangf73b2202022-07-23 16:00:44 +0800238 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800239 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800240 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800241 fi
242 ext_modules="${ext_modules} ${ext_module}"
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800243 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800244 EXT_MODULES=${ext_modules}
245 echo EXT_MODULES=${EXT_MODULES}
246 export EXT_MODULES
wanwei.jiangf73b2202022-07-23 16:00:44 +0800247
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800248 head -n ${ramdisk_last_line} modules.order > vendor_boot_modules
wanwei.jiangf73b2202022-07-23 16:00:44 +0800249 file_last_line=`sed -n "$=" modules.order`
250 let line=${file_last_line}-${ramdisk_last_line}
251 tail -n ${line} modules.order > vendor_dlkm_modules
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800252 export MODULES_LIST=${src_dir}/vendor_boot_modules
253 if [[ "${ARCH}" = "arm64" && -z ${FAST_BUILD} ]]; then
Lei Zhang96efea62022-09-02 14:55:06 +0800254 export VENDOR_DLKM_MODULES_LIST=${src_dir}/vendor_dlkm_modules
255 fi
wanwei.jiangf73b2202022-07-23 16:00:44 +0800256
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800257 popd
wanwei.jiang1d154992022-05-30 14:56:26 +0800258
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800259 if [[ -z ${ANDROID_PROJECT} ]] && [[ -d ${OUT_DIR}/${DTS_EXT_DIR} ]]; then
wanwei.jiang1d154992022-05-30 14:56:26 +0800260 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
261 fi
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800262
263 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
264 : > ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangb2ed83c2022-09-09 14:01:20 +0800265 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800266 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
267 echo "OUT_DIR=${OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
268 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800269 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800270 echo "MODULES_STAGING_DIR=${MODULES_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
271 echo "MODULES_PRIVATE_DIR=${MODULES_PRIVATE_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
272 echo "INITRAMFS_STAGING_DIR=${INITRAMFS_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
273 echo "SYSTEM_DLKM_STAGING_DIR=${SYSTEM_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
274 echo "VENDOR_DLKM_STAGING_DIR=${VENDOR_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
275 echo "MKBOOTIMG_STAGING_DIR=${MKBOOTIMG_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800276 echo "DIST_GKI_DIR=${DIST_GKI_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
277 echo "FULL_KERNEL_VERSION=${FULL_KERNEL_VERSION}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800278 fi
Wanwei Jianga07f9a52022-09-30 18:40:40 +0800279
280 for module_path in ${PREBUILT_MODULES_PATH}; do
281 find ${module_path} -type f -name "*.ko" -exec cp {} ${DIST_DIR} \;
282 done
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800283}
284
285export -f extra_cmds
286
Wanwei Jiang2218b892023-03-17 17:31:21 +0800287function bazel_extra_cmds() {
288 modules_install
289
290 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
291 : > ${KERNEL_BUILD_VAR_FILE}
292 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
293 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
294 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
295 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
296 fi
297
298 if [[ ${GKI_CONFIG} != gki_20 ]]; then
299 [[ -f ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz ]] && rm -f ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
300 mv ${DIST_DIR}/system_dlkm_staging_archive.tar.gz ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
301 [[ -d ${DIST_DIR}/system_dlkm_gki10 ]] && rm -rf ${DIST_DIR}/system_dlkm_gki10
302 mkdir ${DIST_DIR}/system_dlkm_gki10
303 pushd ${DIST_DIR}/system_dlkm_gki10
304 tar zxf ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
305 find -name "*.ko" | while read module; do
306 module_name=`echo ${module} | rev | cut -d '/' -f 1 | rev`
307 if [[ ! `grep "/${module_name}" ${DIST_DIR}/system_dlkm.modules.load` ]]; then
308 rm -f ${module}
309 fi
310 done
311 tar czf ${DIST_DIR}/system_dlkm_staging_archive.tar.gz lib
312 popd
313 rm -rf ${DIST_DIR}/system_dlkm_gki10
314 fi
315}
316
317export -f bazel_extra_cmds
318
wanwei.jiang612a8882021-11-23 17:12:23 +0800319function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800320 local ko=$1
321 local loop
qinglin.lia284a932022-09-21 18:07:38 +0800322 for loop in `grep "^$ko:" modules.dep | sed 's/.*://'`; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800323 mod_probe $loop
324 echo insmod $loop >> __install.sh
325 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800326}
327
Wanwei Jiang571dde62022-11-17 14:37:41 +0800328function mod_probe_recovery() {
329 local ko=$1
330 local loop
331 for loop in `grep "^$ko:" modules_recovery.dep | sed 's/.*://'`; do
332 mod_probe_recovery $loop
333 echo insmod $loop >> __install_recovery.sh
334 done
335}
336
wanwei.jiangb12abc82021-12-25 22:17:10 +0800337function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800338 if [[ -n $1 ]]; then
339 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800340 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800341
342 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
343 cp modules.dep modules.dep.temp
344
345 soc_module=()
346 for chip in ${chips[@]}; do
347 chip_module=`ls amlogic-*-soc-${chip}.ko`
348 soc_module=(${soc_module[@]} ${chip_module[@]})
349 done
350 echo soc_module=${soc_module[*]}
351
352 delete_soc_module=()
353 if [[ ${#soc_module[@]} == 0 ]]; then
354 echo "Use all soc module"
355 else
356 for module in `ls amlogic-*-soc-*`; do
357 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
358 echo Delete soc module: ${module}
359 sed -n "/${module}:/p" modules.dep.temp
360 sed -i "/${module}:/d" modules.dep.temp
361 delete_soc_module=(${delete_soc_module[@]} ${module})
362 fi
363 done
364 echo delete_soc_module=${delete_soc_module[*]}
365 fi
366
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800367 if [[ -n ${CLK_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800368 delete_clk_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800369 for module in `ls amlogic-clk-soc-*`; do
370 if [[ "${CLK_SOC_MODULE}" != "${module}" ]] ; then
371 echo Delete clk soc module: ${module}
372 sed -n "/${module}:/p" modules.dep.temp
373 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800374 delete_clk_soc_modules=(${delete_clk_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800375 fi
376 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800377 echo delete_clk_soc_modules=${delete_clk_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800378 fi
379
380 if [[ -n ${PINCTRL_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800381 delete_pinctrl_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800382 for module in `ls amlogic-pinctrl-soc-*`; do
383 if [[ "${PINCTRL_SOC_MODULE}" != "${module}" ]] ; then
384 echo Delete pinctrl soc module: ${module}
385 sed -n "/${module}:/p" modules.dep.temp
386 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800387 delete_pinctrl_soc_modules=(${delete_pinctrl_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800388 fi
389 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800390 echo delete_pinctrl_soc_modules=${delete_pinctrl_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800391 fi
392
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800393 in_line_i=a
394 delete_type_modules=()
395 echo "TYPE_MODULE_SELECT_MODULE=${TYPE_MODULE_SELECT_MODULE}"
396 mkdir temp_dir
397 cd temp_dir
398 in_temp_dir=y
399 for element in ${TYPE_MODULE_SELECT_MODULE}; do
400 if [[ ${in_temp_dir} = y ]]; then
401 cd ../
402 rm -r temp_dir
403 in_temp_dir=
404 fi
405 if [[ ${in_line_i} = a ]]; then
406 in_line_i=b
407 type_module=${element}
408 select_modules_i=0
409 select_modules_count=
410 select_modules=
411 elif [[ ${in_line_i} = b ]]; then
412 in_line_i=c
413 select_modules_count=${element}
414 else
415 let select_modules_i+=1
416 select_modules="${select_modules} ${element}"
417 if [[ ${select_modules_i} -eq ${select_modules_count} ]]; then
418 in_line_i=a
419 echo type_module=$type_module select_modules=$select_modules
420 for module in `ls ${type_module}`; do
421 dont_delete_module=0
422 for select_module in ${select_modules}; do
423 if [[ "${select_module}" == "${module}" ]] ; then
424 dont_delete_module=1
425 break;
426 fi
427 done
428 if [[ ${dont_delete_module} != 1 ]]; then
429 echo Delete module: ${module}
430 sed -n "/${module}:/p" modules.dep.temp
431 sed -i "/${module}:/d" modules.dep.temp
432 delete_type_modules=(${delete_type_modules[@]} ${module})
433 fi
434 done
435 echo delete_type_modules=${delete_type_modules[*]}
436 fi
437 fi
438 done
439 if [[ -n ${in_temp_dir} ]]; then
440 cd ../
441 rm -r temp_dir
442 fi
443
444 black_modules=()
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800445 mkdir service_module
446 echo MODULES_SERVICE_LOAD_LIST=${MODULES_SERVICE_LOAD_LIST[@]}
447 BLACK_AND_SERVICE_LIST=(${MODULES_LOAD_BLACK_LIST[@]} ${MODULES_SERVICE_LOAD_LIST[@]})
448 echo ${BLACK_AND_SERVICE_LIST[@]}
449 for module in ${BLACK_AND_SERVICE_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800450 modules=`ls ${module}*`
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800451 black_modules=(${black_modules[@]} ${modules[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800452 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800453 if [[ ${#black_modules[@]} == 0 ]]; then
454 echo "black_modules is null, don't delete modules, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800455 else
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800456 echo black_modules=${black_modules[*]}
457 for module in ${black_modules[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800458 echo Delete module: ${module}
459 sed -n "/${module}:/p" modules.dep.temp
460 sed -i "/${module}:/d" modules.dep.temp
461 done
462 fi
463
464 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800465 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 +0800466 for module in ${delete_modules[@]}; do
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800467 if [[ ! `ls $module` ]]; then
468 continue
469 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800470 match=`sed -n "/${module}/=" modules.dep.temp1`
471 for match in ${match[@]}; do
472 match_count=(${match_count[@]} $match)
473 done
474 if [[ ${#match_count[@]} != 0 ]]; then
475 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800476 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800477 exit
478 fi
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800479 if [[ -n ${ANDROID_PROJECT} ]]; then
480 for service_module_temp in ${MODULES_SERVICE_LOAD_LIST[@]}; do
481 if [[ ${module} = ${service_module_temp} ]]; then
482 mv ${module} service_module
483 fi
484 done
485 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800486 rm -f ${module}
487 done
488 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800489 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800490
491 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
492 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800493 sed -n "/${module}:/p" modules.dep.temp
494 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
495 sed -i "/${module}:/d" modules.dep.temp
496 sed -n "/${module}.*\.ko:/p" modules.dep.temp
497 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
498 sed -i "/${module}.*\.ko:/d" modules.dep.temp
499 done
500
Wanwei Jiang571dde62022-11-17 14:37:41 +0800501 if [[ -n ${ANDROID_PROJECT} ]]; then
502 cp modules.dep.temp modules_recovery.dep.temp
503 cp modules.dep.temp1 modules_recovery.dep.temp1
504 fi
505
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800506 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
507 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
508 sed -n "/${module}:/p" modules.dep.temp
509 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
510 sed -i "/${module}:/d" modules.dep.temp
511 sed -n "/${module}.*\.ko:/p" modules.dep.temp
512 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
513 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800514 done
515
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800516 if [ -f modules.dep.temp2 ]; then
517 rm modules.dep.temp2
518 fi
519 touch modules.dep.temp2
520 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
521 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
522 sed -n "/${module}:/p" modules.dep.temp
523 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
524 sed -i "/${module}:/d" modules.dep.temp
525 sed -n "/${module}.*\.ko:/p" modules.dep.temp
526 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
527 sed -i "/${module}.*\.ko:/d" modules.dep.temp
528 done
529
530 cat modules.dep.temp >> modules.dep.temp1
531 cat modules.dep.temp2 >> modules.dep.temp1
532
wanwei.jiangb12abc82021-12-25 22:17:10 +0800533 cp modules.dep.temp1 modules.dep
534 rm modules.dep.temp
535 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800536 rm modules.dep.temp2
Wanwei Jiang571dde62022-11-17 14:37:41 +0800537
538 if [[ -n ${ANDROID_PROJECT} ]]; then
539 for module in ${RECOVERY_MODULES_LOAD_LIST[@]}; do
540 echo RECOVERY_MODULES_LOAD_LIST: $module
541 sed -n "/${module}:/p" modules_recovery.dep.temp
542 sed -n "/${module}:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
543 sed -i "/${module}:/d" modules_recovery.dep.temp
544 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp
545 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
546 sed -i "/${module}.*\.ko:/d" modules_recovery.dep.temp
547 done
548
549 cat modules_recovery.dep.temp >> modules_recovery.dep.temp1
550
551 cp modules_recovery.dep.temp1 modules_recovery.dep
552 rm modules_recovery.dep.temp
553 rm modules_recovery.dep.temp1
554 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800555}
556
Wanwei Jiang571dde62022-11-17 14:37:41 +0800557create_ramdisk_vendor_recovery() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800558 install_temp=$1
Wanwei Jiang571dde62022-11-17 14:37:41 +0800559 if [[ -n ${ANDROID_PROJECT} ]]; then
560 recovery_install_temp=$2
561 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800562 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
Wanwei Jiang9173e462022-09-29 00:58:33 +0800563 ramdisk_module_i=${#RAMDISK_MODULES_LOAD_LIST[@]}
564 while [ ${ramdisk_module_i} -gt 0 ]; do
565 let ramdisk_module_i--
566 echo ramdisk_module_i=$ramdisk_module_i ${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
567 if [[ `grep "${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}" ${install_temp}` ]]; then
568 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
569 break;
570 fi
571 done
572 # last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800573 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
574 for line in ${last_ramdisk_module_line}; do
575 ramdisk_last_line=${line}
576 done
wanwei.jiangf73b2202022-07-23 16:00:44 +0800577 export ramdisk_last_line
Wanwei Jiang571dde62022-11-17 14:37:41 +0800578
579 if [[ -n ${ANDROID_PROJECT} ]]; then
580 recovery_module_i=${#RECOVERY_MODULES_LOAD_LIST[@]}
qinglin.lidba324f2023-03-02 19:56:21 +0800581 #when RECOVERY_MODULES_LOAD_LIST is NULL
582 if [ ${#RECOVERY_MODULES_LOAD_LIST[@]} -eq 0 ]; then
583 last_recovery_module=${last_ramdisk_module}
584 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800585 while [ ${recovery_module_i} -gt 0 ]; do
586 let recovery_module_i--
587 echo recovery_module_i=$recovery_module_i ${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}
588 if [[ `grep "${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}" ${recovery_install_temp}` ]]; then
589 last_recovery_module=${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}
590 break;
591 fi
592 done
593 # last_recovery_module=${RECOVERY_MODULES_LOAD_LIST[${#RECOVERY_MODULES_LOAD_LIST[@]}-1]}
594 last_recovery_module_line=`sed -n "/${last_recovery_module}/=" ${recovery_install_temp}`
595 for line in ${last_recovery_module_line}; do
596 recovery_last_line=${line}
597 done
598
599 sed -n "${ramdisk_last_line},${recovery_last_line}p" ${recovery_install_temp} > recovery_install.sh
600 sed -i "1d" recovery_install.sh
601 mkdir recovery
602 cat recovery_install.sh | cut -d ' ' -f 2 > recovery/recovery_modules.order
qinglin.lidba324f2023-03-02 19:56:21 +0800603 if [ ${#RECOVERY_MODULES_LOAD_LIST[@]} -ne 0 ]; then
604 cat recovery_install.sh | cut -d ' ' -f 2 | xargs cp -t recovery/
605 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800606 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' recovery_install.sh
607 echo "echo Install recovery modules success!" >> recovery_install.sh
608 chmod 755 recovery_install.sh
609 mv recovery_install.sh recovery/
610 fi
611
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800612 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800613 mkdir ramdisk
wanwei.jiangf73b2202022-07-23 16:00:44 +0800614 cat ramdisk_install.sh | cut -d ' ' -f 2 > ramdisk/ramdisk_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800615 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800616
qinglin.lie5b951e2022-06-07 16:13:44 +0800617 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' ramdisk_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800618 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
619 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800620 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800621
622 file_last_line=`sed -n "$=" ${install_temp}`
623 let line=${file_last_line}-${ramdisk_last_line}
624 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800625 mkdir vendor
wanwei.jiangf73b2202022-07-23 16:00:44 +0800626 cat vendor_install.sh | cut -d ' ' -f 2 > vendor/vendor_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800627 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800628
qinglin.lie5b951e2022-06-07 16:13:44 +0800629 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' vendor_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800630 echo "echo Install vendor modules success!" >> vendor_install.sh
631 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800632 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800633}
634
wanwei.jiang612a8882021-11-23 17:12:23 +0800635function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800636 arg1=$1
637
Wanwei Jiang2218b892023-03-17 17:31:21 +0800638 export OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR:-$(readlink -m ${COMMON_OUT_DIR}/amlogic)}
639 echo $OUT_AMLOGIC_DIR
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800640 rm -rf ${OUT_AMLOGIC_DIR}
641 mkdir -p ${OUT_AMLOGIC_DIR}
642 mkdir -p ${OUT_AMLOGIC_DIR}/modules
643 mkdir -p ${OUT_AMLOGIC_DIR}/ext_modules
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800644 mkdir -p ${OUT_AMLOGIC_DIR}/symbols
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800645
Wanwei Jiang2218b892023-03-17 17:31:21 +0800646 if [[ ${BAZEL} == "1" ]]; then
647 local output="out/bazel/output_user_root"
648 for dir in `ls ${output}`; do
649 if [[ ${dir} =~ ^[0-9A-Fa-f]*$ ]]; then
650 digit_output=${output}/${dir}
651 break
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800652 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800653 done
654
Wanwei Jiang0df84602023-05-05 14:40:42 +0800655 while read module
656 do
Wanwei Jiang2218b892023-03-17 17:31:21 +0800657 module_name=`echo ${module} | rev | cut -d '/' -f 1 | rev`
Wanwei Jiang0df84602023-05-05 14:40:42 +0800658 if [[ `echo ${module} | grep "^kernel\/"` ]]; then
659 if [[ -f ${DIST_DIR}/${module_name} ]]; then
660 cp ${DIST_DIR}/${module_name} ${OUT_AMLOGIC_DIR}/modules
661 else
662 module=`find ${digit_output}/execroot/ -name ${module_name} | grep "amlogic"`
663 cp ${module} ${OUT_AMLOGIC_DIR}/modules
664 fi
665 elif [[ `echo ${module} | grep "^extra\/"` ]]; then
666 cp ${DIST_DIR}/${module_name} ${OUT_AMLOGIC_DIR}/ext_modules
Wanwei Jiang2218b892023-03-17 17:31:21 +0800667 else
Wanwei Jiang0df84602023-05-05 14:40:42 +0800668 echo "warning unrecognized module: ${module}"
Wanwei Jiang2218b892023-03-17 17:31:21 +0800669 fi
Wanwei Jiang0df84602023-05-05 14:40:42 +0800670 done < ${DIST_DIR}/modules.load
Wanwei Jiang2218b892023-03-17 17:31:21 +0800671
672 dep_file=`find ${digit_output}/execroot/ -name *.dep | grep "amlogic"`
673 cp ${dep_file} ${OUT_AMLOGIC_DIR}/modules/full_modules.dep
Wanwei Jiang0df84602023-05-05 14:40:42 +0800674 grep -E "^kernel\/" ${dep_file} > ${OUT_AMLOGIC_DIR}/modules/modules.dep
Wanwei Jiang2218b892023-03-17 17:31:21 +0800675 touch ${module} ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
676 for order_file in `find ${digit_output}/execroot/ -name "modules.order.*" | grep "amlogic"`; do
677 echo "# ${order_file}" >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
678 cat ${order_file} >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
679 echo >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
680 done
681 else
682 local MODULES_ROOT_DIR=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
683 pushd ${MODULES_ROOT_DIR}
684 local common_drivers=${COMMON_DRIVERS_DIR##*/}
685 local modules_list=$(find -type f -name "*.ko")
686 for module in ${modules_list}; do
687 if [[ -n ${ANDROID_PROJECT} ]]; then # copy internal build modules
688 if [[ `echo ${module} | grep -E "\.\/kernel\/|\/${common_drivers}\/"` ]]; then
689 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
690 else
691 cp ${module} ${OUT_AMLOGIC_DIR}/ext_modules/
692 fi
693 else # copy all modules, include external modules
694 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
695 fi
696 done
697
698 if [[ -n ${ANDROID_PROJECT} ]]; then # internal build modules
699 grep -E "^kernel\/|^${common_drivers}\/" modules.dep > ${OUT_AMLOGIC_DIR}/modules/modules.dep
700 else # all modules, include external modules
701 cp modules.dep ${OUT_AMLOGIC_DIR}/modules
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800702 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800703 popd
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800704 fi
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800705 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang612a8882021-11-23 17:12:23 +0800706 sed -i 's#[^ ]*/##g' modules.dep
707
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800708 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800709
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800710 touch __install.sh
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800711 touch modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800712 for loop in `cat modules.dep | sed 's/:.*//'`; do
713 mod_probe $loop
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800714 echo $loop >> modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800715 echo insmod $loop >> __install.sh
716 done
717
718 cat __install.sh | awk ' {
719 if (!cnt[$2]) {
720 print $0;
721 cnt[$2]++;
722 }
723 }' > __install.sh.tmp
724
Wanwei Jiangbf119d22022-10-27 09:49:49 +0800725 cp modules.order modules.order.back
726 cut -d ' ' -f 2 __install.sh.tmp > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800727
728 if [[ -n ${ANDROID_PROJECT} ]]; then
729 touch __install_recovery.sh
730 touch modules_recovery.order
731 for loop in `cat modules_recovery.dep | sed 's/:.*//'`; do
732 mod_probe_recovery $loop
733 echo $loop >> modules_recovery.order
734 echo insmod $loop >> __install_recovery.sh
735 done
736
737 cat __install_recovery.sh | awk ' {
738 if (!cnt[$2]) {
739 print $0;
740 cnt[$2]++;
741 }
742 }' > __install_recovery.sh.tmp
743
744 cut -d ' ' -f 2 __install_recovery.sh.tmp > modules_recovery.order
745 fi
746 create_ramdisk_vendor_recovery __install.sh.tmp __install_recovery.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800747
Dezhen Wang124ad7d2023-02-06 15:35:14 +0800748 if [[ -n ${MANUAL_INSMOD_MODULE} ]]; then
749 install_file=manual_install.sh
750 else
751 install_file=install.sh
752 fi
753 echo "#!/bin/sh" > ${install_file}
754 echo "cd ramdisk" >> ${install_file}
755 echo "./ramdisk_install.sh" >> ${install_file}
756 echo "cd ../vendor" >> ${install_file}
757 echo "./vendor_install.sh" >> ${install_file}
758 echo "cd ../" >> ${install_file}
759 chmod 755 ${install_file}
wanwei.jiang612a8882021-11-23 17:12:23 +0800760
761 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
Wanwei Jianga5977bd2022-08-24 22:43:40 +0800762 rm __install.sh __install.sh.tmp
wanwei.jiang612a8882021-11-23 17:12:23 +0800763
Wanwei Jiang571dde62022-11-17 14:37:41 +0800764 if [[ -n ${ANDROID_PROJECT} ]]; then
765 rm __install_recovery.sh __install_recovery.sh.tmp
766 fi
767
wanwei.jiang236e9a32021-12-07 16:34:14 +0800768 popd
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800769
Wanwei Jiang2218b892023-03-17 17:31:21 +0800770 if [[ ${BAZEL} == "1" ]]; then
771 cp ${DIST_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
772
773 find ${digit_output}/execroot -name *.ko | grep "unstripped" | while read module; do
774 cp ${module} ${OUT_AMLOGIC_DIR}/symbols
775 chmod +w ${OUT_AMLOGIC_DIR}/symbols/$(basename ${module})
776 done
777 chmod -w ${OUT_AMLOGIC_DIR}/symbols/*.ko
778 else
779 cp ${OUT_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
780 find ${OUT_DIR} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
781 for ext_module in ${EXT_MODULES}; do
782 find ${COMMON_OUT_DIR}/${ext_module} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
783 done
784 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800785}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800786export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800787
Wanwei Jiang2218b892023-03-17 17:31:21 +0800788function rename_external_module_name() {
789 local external_coppied
790 local vendor_coppied
791 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
792 target_module_name=`echo ${module_line%%:*} | sed '/^#/d;/^$/d'`
793 modules_name=`echo ${module_line##:*} | sed '/^#/d;/^$/d'`
794 [[ -f ${OUT_AMLOGIC_DIR}/ext_modules/${target_module_name} ]] && external_coppied=1
795 [[ -f ${OUT_AMLOGIC_DIR}/modules/vendor/${target_module_name} ]] && vendor_coppied=1
796 echo target_module_name=$target_module_name modules_name=$modules_name external_coppied=$external_coppied vendor_coppied=$vendor_coppied
797 for module in ${modules_name}; do
798 echo module=$module
799 if [[ -f ${OUT_AMLOGIC_DIR}/ext_modules/${module} ]]; then
800 if [[ -z ${external_coppied} ]]; then
801 cp ${OUT_AMLOGIC_DIR}/ext_modules/${module} ${OUT_AMLOGIC_DIR}/ext_modules/${target_module_name}
802 external_coppied=1
803 fi
804 rm -f ${OUT_AMLOGIC_DIR}/ext_modules/${module}
805 fi
806 if [[ -f ${OUT_AMLOGIC_DIR}/modules/vendor/${module} ]]; then
807 if [[ -z ${vendor_coppied} ]]; then
808 cp ${OUT_AMLOGIC_DIR}/modules/vendor/${module} ${OUT_AMLOGIC_DIR}/modules/vendor/${target_module_name}
809 vendor_coppied=1
810 fi
811 rm -f ${OUT_AMLOGIC_DIR}/modules/vendor/${module}
812 fi
813 done
814 external_coppied=
815 vendor_coppied=
816 done
817}
818export -f rename_external_module_name
819
Dezhen Wang5ad119c2023-05-04 15:07:49 +0800820# function rebuild_rootfs can rebuild the rootfs if rootfs_base.cpio.gz.uboot exist
wanwei.jiang612a8882021-11-23 17:12:23 +0800821function rebuild_rootfs() {
Wanwei Jiang2218b892023-03-17 17:31:21 +0800822 echo
823 echo "========================================================"
824 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
825 echo "Rebuild rootfs in order to install modules!"
826 else
827 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
828 return
829 fi
830
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800831 pushd ${OUT_AMLOGIC_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800832
Lei Zhang475c17b2022-03-03 11:08:50 +0800833 local ARCH=arm64
834 if [[ -n $1 ]]; then
835 ARCH=$1
836 fi
837
wanwei.jiang612a8882021-11-23 17:12:23 +0800838 rm rootfs -rf
839 mkdir rootfs
Wanwei Jiang2218b892023-03-17 17:31:21 +0800840 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800841 cd rootfs
842 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
843 gunzip rootfs_base.cpio.gz
844 mkdir rootfs
845 cd rootfs
846 cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800847 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
848 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800849 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800850 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800851
wanwei.jiang612a8882021-11-23 17:12:23 +0800852 find . | cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
853 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800854 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 +0800855 mv rootfs_new.cpio.gz.uboot ../
856 cd ../
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800857 cp rootfs_new.cpio.gz.uboot ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800858
859 popd
860}
861export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800862
Dezhen Wang5ad119c2023-05-04 15:07:49 +0800863# function check_undefined_symbol can check the dependence among the modules
864# parameter:
865# --modules_depend
wanwei.jiang403c9942021-11-30 18:29:02 +0800866function check_undefined_symbol() {
Wanwei Jiang2218b892023-03-17 17:31:21 +0800867 if [[ ${MODULES_DEPEND} != "1" ]]; then
868 return
869 fi
870
871 echo "========================================================"
872 echo "print modules depend"
873
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800874 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800875 echo
876 echo "========================================================"
877 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800878 if [[ -n ${LLVM} ]]; then
879 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
880 elif [[ -n ${CROSS_COMPILE} ]]; then
881 compile_tool=${CROSS_COMPILE}
882 else
883 echo "can't find compile tool"
884 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800885 ${compile_tool}nm ${DIST_DIR}/vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800886 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
887 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
888 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
889 cp ramdisk/*.ko .
890 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800891 while read LINE
892 do
893 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800894 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 +0800895 do
896 #echo ${U}
897 U_v=`grep -w ${U} vmlinux_T.txt`
898 in_vmlinux=0
899 if [ -n "${U_v}" ];
900 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800901 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800902 in_vmlinux=1
903 continue
904 fi
905 in_module=0
906 MODULE=
907 while read LINE1
908 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800909 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 +0800910 if [ -n "${U_m}" ];
911 then
912 in_module=1
913 MODULE=${LINE1}
914 fi
915 done < module_list.txt
916 if [ ${in_module} -eq "1" ];
917 then
918 printf "\t%-50s <== %s\n" ${U} ${MODULE}
919 continue
920 else
921 printf "\t%-50s <== none\n" ${U}
922 fi
923 done
924 echo
925 echo
926 done < module_list.txt
927 rm vmlinux_T.txt
928 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800929 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +0800930 popd
931}
932export -f check_undefined_symbol
Dezhen Wangd40fa552023-04-11 16:13:27 +0800933
934function reorganized_abi_symbol_list_file() { # delete the extra information but symbol
935 cat $@ | sed '/^$/d' >> ${symbol_tmp} # remove blank lines
936 sed -i '/^\[/d' ${symbol_tmp} # remove the title
937 sed -i '/^\#/d' ${symbol_tmp} # remove the comment
938}
939export -f reorganized_abi_symbol_list_file
940
941function abi_symbol_list_detect () { # detect symbol information that should be submitted or fix
942 symbol_file1=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic
943 symbol_file2=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.10
944 symbol_file3=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.debug
945 symbol_file4=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.illegal
946
947 file_list=("${symbol_file1} ${symbol_file2} ${symbol_file3} ${symbol_file4}")
948 for file in ${file_list}
949 do
950 local symbol_tmp=`mktemp tmp.XXXXXXXXXXXX`
951 reorganized_abi_symbol_list_file "${file}"
952
953 if [[ -s ${symbol_tmp} ]]; then
954 if [[ ${file} =~ abi_gki_aarch64_amlogic.illegal ]]; then
955 echo "WARNING: The symbols in ${file} are illegal, please deal with them as soon as possible!!!"
956 else
957 echo "WARNING: The symbols in ${file} should be submit to google!!!"
958 fi
959 cat ${symbol_tmp}
960 echo -e "\n------------------------------------------------------------"
961 fi
962 rm ${symbol_tmp}
963 done
964}
965export -f abi_symbol_list_detect
966
Dezhen Wang5ad119c2023-05-04 15:07:49 +0800967# adjust_config_action concerns three types of cmd:
968# parameters:
969# --menuconfig: make menuconfig manually based on different gki standard
970# --basicconfig: only config kernel with google original gki_defconfig as base
971# --check_defconfig: contrast the defconfig generated in out directory with gki_defconfig and show the difference
972function adjust_config_action () {
973 if [[ -n ${MENUCONFIG} ]] || [[ -n ${BASICCONFIG} ]] || [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
974 # ${ROOT_DIR}/${BUILD_DIR}/config.sh menuconfig
975 HERMETIC_TOOLCHAIN=0
976 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
977 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
978
979 orig_config=$(mktemp)
980 orig_defconfig=$(mktemp)
981 out_config="${OUT_DIR}/.config"
982 out_defconfig="${OUT_DIR}/defconfig"
983 changed_config=$(mktemp)
984 changed_defconfig=$(mktemp)
985
986 if [[ -n ${BASICCONFIG} ]]; then # config kernel with gki_defconfig or make menuconfig based on it
987 set -x
988 defconfig_name=`basename ${GKI_BASE_CONFIG}`
989 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${defconfig_name})
990 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
991 cp ${out_config} ${orig_config}
992 cp ${out_defconfig} ${orig_defconfig}
993 if [ "${BASICCONFIG}" = "m" ]; then # make menuconfig based on gki_defconfig
994 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
995 fi
996 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
997 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
998 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
999 if [ "${ARCH}" = "arm" ]; then
1000 cp ${out_defconfig} ${GKI_BASE_CONFIG}
1001 fi
1002 set +x # show the difference between the gki_defconfig and the config after make menuconfig
1003 echo
1004 echo "========================================================"
1005 echo "==================== .config diff ===================="
1006 cat ${changed_config}
1007 echo "==================== defconfig diff ===================="
1008 cat ${changed_defconfig}
1009 echo "========================================================"
1010 echo
1011 elif [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then # compare the defconfig generated in out directory with gki_defconfig
1012 set -x
1013 pre_defconfig_cmds
1014 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1015 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig) # export the defconfig to out directory
1016 diff -u ${ROOT_DIR}/${GKI_BASE_CONFIG} ${OUT_DIR}/defconfig
1017 post_defconfig_cmds
1018 set +x
1019 else # make menuconfig based on config with different gki standard
1020 set -x
1021 pre_defconfig_cmds
1022 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1023 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1024 cp ${out_config} ${orig_config}
1025 cp ${out_defconfig} ${orig_defconfig}
1026 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
1027 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1028 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
1029 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
1030 post_defconfig_cmds
1031 set +x
1032 echo
1033 echo "========================================================"
1034 echo "if the config follows GKI2.0, please add it to the file amlogic_gki.fragment manually"
1035 echo "if the config follows GKI1.0 optimize, please add it to the file amlogic_gki.10 manually"
1036 echo "if the config follows GKI1.0 debug, please add it to the file amlogic_gki.debug manually"
1037 echo "==================== .config diff ===================="
1038 cat ${changed_config}
1039 echo "==================== defconfig diff ===================="
1040 cat ${changed_defconfig}
1041 echo "========================================================"
1042 echo
1043 fi
1044 rm -f ${orig_config} ${changed_config} ${orig_defconfig} ${changed_defconfig}
1045 exit
1046 fi
1047}
1048export -f adjust_config_action
1049
1050# function build_part_of_kernel can only build part of kernel such as image modules or dtbs
1051# parameter:
1052# --image: only build image
1053# --modules: only build kernel modules
1054# --dtbs: only build dtbs
1055function build_part_of_kernel () {
1056 if [[ -n ${IMAGE} ]] || [[ -n ${MODULES} ]] || [[ -n ${DTB_BUILD} ]]; then
1057 old_path=${PATH}
1058 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
1059 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
1060
1061 if [[ ! -f ${OUT_DIR}/.config ]]; then
1062 pre_defconfig_cmds
1063 set -x
1064 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1065 set +x
1066 post_defconfig_cmds
1067 fi
1068
1069 if [[ -n ${IMAGE} ]]; then
1070 set -x
1071 if [ "${ARCH}" = "arm64" ]; then
1072 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) Image)
1073 elif [ "${ARCH}" = "arm" ]; then
1074 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) LOADADDR=0x108000 uImage)
1075 fi
1076 set +x
1077 fi
1078 mkdir -p ${DIST_DIR}
1079 if [[ -n ${DTB_BUILD} ]]; then
1080 set -x
1081 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) dtbs)
1082 set +x
1083 fi
1084 if [[ -n ${MODULES} ]]; then
1085 export MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
1086 rm -rf ${MODULES_STAGING_DIR}
1087 mkdir -p ${MODULES_STAGING_DIR}
1088 if [ "${DO_NOT_STRIP_MODULES}" != "1" ]; then
1089 MODULE_STRIP_FLAG="INSTALL_MOD_STRIP=1"
1090 fi
1091 if [[ `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
1092 set -x
1093 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) modules)
1094 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} "${MAKE_ARGS[@]}" modules_install)
1095 set +x
1096 fi
1097 echo EXT_MODULES=$EXT_MODULES
1098 prepare_module_build
1099 if [[ -z "${SKIP_EXT_MODULES}" ]] && [[ -n "${EXT_MODULES}" ]]; then
1100 echo "========================================================"
1101 echo " Building external modules and installing them into staging directory"
1102 KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
1103 for EXT_MOD in ${EXT_MODULES}; do
1104 EXT_MOD_REL=$(rel_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
1105 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
1106 set -x
1107 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1108 O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}"
1109 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1110 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
1111 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
1112 INSTALL_MOD_DIR="extra/${EXT_MOD}" \
1113 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" \
1114 "${MAKE_ARGS[@]}" modules_install
1115 set +x
1116 done
1117 fi
1118 export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
1119 set -x
1120 extra_cmds
1121 set +x
1122 MODULES=$(find ${MODULES_STAGING_DIR} -type f -name "*.ko")
1123 cp -p ${MODULES} ${DIST_DIR}
1124
1125 new_path=${PATH}
1126 PATH=${old_path}
1127 echo "========================================================"
1128 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
1129 echo "Rebuild rootfs in order to install modules!"
1130 rebuild_rootfs ${ARCH}
1131 else
1132 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
1133 fi
1134 PATH=${new_path}
1135 fi
1136 if [ -n "${DTS_EXT_DIR}" ]; then
1137 if [ -d "${ROOT_DIR}/${DTS_EXT_DIR}" ]; then
1138 DTS_EXT_DIR=$(rel_path ${ROOT_DIR}/${DTS_EXT_DIR} ${KERNEL_DIR})
1139 if [ -d ${OUT_DIR}/${DTS_EXT_DIR} ]; then
1140 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
1141 fi
1142 fi
1143 fi
1144 for FILE in ${FILES}; do
1145 if [ -f ${OUT_DIR}/${FILE} ]; then
1146 echo " $FILE"
1147 cp -p ${OUT_DIR}/${FILE} ${DIST_DIR}/
1148 elif [[ "${FILE}" =~ \.dtb|\.dtbo ]] && \
1149 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
1150 # DTS_EXT_DIR is recalculated before to be relative to KERNEL_DIR
1151 echo " $FILE"
1152 cp -p "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" "${DIST_DIR}/"
1153 else
1154 echo " $FILE is not a file, skipping"
1155 fi
1156 done
1157 exit
1158 fi
1159}
1160
1161export -f build_part_of_kernel
1162
1163function export_env_variable () {
1164 export ABI BUILD_CONFIG LTO KMI_SYMBOL_LIST_STRICT_MODE CHECK_DEFCONFIG MANUAL_INSMOD_MODULE ARCH
Dezhen Wanga5f456a2023-05-05 17:40:31 +08001165 export KERNEL_DIR COMMON_DRIVERS_DIR BUILD_DIR ANDROID_PROJECT GKI_CONFIG UPGRADE_PROJECT FAST_BUILD CHECK_GKI_20 DEV_CONFIGS
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001166 export FULL_KERNEL_VERSION BAZEL
1167
1168 echo ROOT_DIR=$ROOT_DIR
1169 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}
1170 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}
1171 echo FULL_KERNEL_VERSION=${FULL_KERNEL_VERSION} BAZEL=${BAZEL}
1172 echo MENUCONFIG=${MENUCONFIG} BASICCONFIG=${BASICCONFIG} IMAGE=${IMAGE} MODULES=${MODULES} DTB_BUILD=${DTB_BUILD}
1173}
1174
1175export -f export_env_variable