blob: b7091dd954d8d678c766992aae5e49868e570221 [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}
Dezhen Wanga6806c52023-06-13 19:47:05 +080013 if [[ ${ARCH} == arm ]]; then
Wanwei Jiang51217812022-11-01 20:23:03 +080014 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}
Dezhen Wanga6806c52023-06-13 19:47:05 +080015 else
16 if [[ ${GKI_CONFIG} == gki_20 ]]; then
17 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}
18 elif [[ ${GKI_CONFIG} == gki_10 ]]; then
19 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}
20 elif [[ ${GKI_CONFIG} == gki_debug ]]; then
21 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}
22 fi
Wanwei Jiang51217812022-11-01 20:23:03 +080023 fi
24 rm ${temp_file}
25 else
Dezhen Wanga6806c52023-06-13 19:47:05 +080026 if [[ ${ARCH} == arm ]]; then
27 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${GKI_BASE_CONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG}
28 else
29 if [[ ${GKI_CONFIG} == gki_20 ]]; then
30 if [[ -n ${CHECK_GKI_20} ]]; then
31 local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
32 echo "CONFIG_STMMAC_ETH=n" > ${temp_file}
33 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}
34 rm ${temp_file}
35 else
36 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}
37 fi
38 elif [[ ${GKI_CONFIG} == gki_10 ]]; then
39 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}
40 elif [[ ${GKI_CONFIG} == gki_debug ]]; then
41 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}
qinglin.li8d41aaf2023-02-07 19:49:44 +080042 fi
Wanwei Jiang51217812022-11-01 20:23:03 +080043 fi
wanwei.jiang6fdd3152022-08-01 20:35:05 +080044 fi
qinglin.li7a994a02022-12-05 15:04:40 +080045
46 if [[ -n ${UPGRADE_PROJECT} ]]; then
Dezhen Wang061c4782023-05-25 11:13:08 +080047 if [[ ${ANDROID_VERSION} == r || ${ANDROID_VERSION} == R ]]; then
48 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_UPGRADE_R}
49 fi
qinglin.libce54712023-05-08 13:56:31 +080050 if [[ ${ANDROID_VERSION} == p || ${ANDROID_VERSION} == P ]]; then
51 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_UPGRADE_P}
52 fi
Dezhen Wang061c4782023-05-25 11:13:08 +080053 if [[ ${ANDROID_VERSION} == s || ${ANDROID_VERSION} == S ]]; then
54 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_UPGRADE_S}
55 fi
yao zhang1a0c556a2023-06-27 10:32:14 +080056 if [[ ${ANDROID_VERSION} == u || ${ANDROID_VERSION} == U ]]; then
57 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_U}
58 fi
qinglin.li7a994a02022-12-05 15:04:40 +080059 fi
Dezhen Wangab7ba642023-03-15 14:10:44 +080060
Wanwei Jiangc65e4d32023-03-21 16:24:41 +080061 if [[ ${IN_BUILD_GKI_10} == 1 ]]; then
62 local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
63 echo "CONFIG_MODULE_SIG_ALL=y" >> ${temp_file}
64 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${temp_file}
65 rm ${temp_file}
66 fi
Dezhen Wanga5f456a2023-05-05 17:40:31 +080067
68 if [[ -n ${DEV_CONFIGS} ]]; then
69 config_list=$(echo ${DEV_CONFIGS}|sed 's/+/ /g')
70 #verify the extra config is in the right path and merge the config
71 CONFIG_DIR=arch/${ARCH}/configs
72 for config_name in ${config_list[@]}
73 do
74 if [[ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/${CONFIG_DIR}/${config_name} ]]; then
75 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}
76 elif [[ -f ${config_name} ]]; then
77 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${config_name}
78 else
79 echo "ERROR: config file ${config_name} is not in the right path!!"
80 exit
81 fi
82 done
83 fi
wanwei.jiang91776952021-11-19 13:10:32 +080084}
85export -f pre_defconfig_cmds
86
87function post_defconfig_cmds() {
Wanwei Jiang2d4f9742022-09-13 11:22:17 +080088 rm ${ROOT_DIR}/${KCONFIG_DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080089}
90export -f post_defconfig_cmds
91
92function read_ext_module_config() {
93 ALL_LINE=""
94 while read LINE
95 do
96 if [[ $LINE != \#* && $LINE != "" ]]; then
97 ALL_LINE="$ALL_LINE"" ""$LINE"
98 fi
99 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800100
101 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +0800102}
103
pengzhao.liua923dea2023-06-25 09:58:20 +0800104function autotest(){
105 if [[ -d ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/.git/hooks/ ]]; then
106 if [[ ! -f ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/.git/hooks/pre-commit ]]; then
107 cp ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/pre-commit ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/.git/hooks/pre-commit
108 cp ${KERNEL_DIR}/scripts/amlogic/pre-commit ${KERNEL_DIR}/.git/hooks/pre-commit
109 chmod +x ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/.git/hooks/pre-commit
110 chmod +x ${KERNEL_DIR}/.git/hooks/pre-commit
111 fi
112 fi
113}
114
wanwei.jiang91776952021-11-19 13:10:32 +0800115function read_ext_module_predefine() {
116 PRE_DEFINE=""
117
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800118 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +0800119 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
120 done
121
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800122 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +0800123 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
124 done
125
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800126 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +0800127}
128
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800129top_ext_drivers=top_ext_drivers
wanwei.jiang91776952021-11-19 13:10:32 +0800130function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800131 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800132 if [[ ! `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800133 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
134 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
135 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
136 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +0800137 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800138
139 for ext_module_config in ${EXT_MODULES_CONFIG}; do
140 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
141 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
142 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
143 done
144 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
145 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
146 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
147
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800148 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
149 if [[ -d ${top_ext_drivers} ]]; then
150 rm -rf ${top_ext_drivers}
151 fi
152 mkdir -p ${top_ext_drivers}
153 fi
154
155 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
156 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
157 fi
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800158 ext_modules=
159 for ext_module in ${EXT_MODULES}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800160 module_abs_path=`readlink -e ${ext_module}`
161 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
162 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
163 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
164 cp -rf ${module_abs_path} ${top_ext_drivers}
165 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
166 fi
167 fi
168 ext_modules="${ext_modules} ${module_rel_path}"
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800169 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800170
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800171 for ext_module_path in ${EXT_MODULES_PATH}; do
172 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800173 while read LINE
174 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800175 module_abs_path=`readlink -e ${LINE}`
176 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800177 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
178 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
179 cp -rf ${module_abs_path} ${top_ext_drivers}
180 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
181 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800182 fi
183 ext_modules="${ext_modules} ${module_rel_path}"
184
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800185 done < ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800186 done
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800187 EXT_MODULES=${ext_modules}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800188
189 local flag=0
190 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
191 for ext_module in ${EXT_MODULES}; do
192 ext_mod_rel=$(rel_path ${ext_module} ${KERNEL_DIR})
193 if [[ ${flag} -eq "1" ]]; then
194 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
195 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${ext_module}/Makefile
196 sed -i "2 i ${extra_symbols}" ${ext_module}/Makefile
197 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${ext_module}/Makefile
198 echo "${ext_module}/Makefile add: ${extra_symbols}"
199 fi
200 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
201 flag=1
202 done
203 fi
204
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800205 export EXT_MODULES
206 echo EXT_MODULES=${EXT_MODULES}
207
208 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +0800209}
wanwei.jiang91776952021-11-19 13:10:32 +0800210export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +0800211
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800212function extra_cmds() {
Dezhen Wang1176fad2023-06-09 11:22:17 +0800213 echo "========================================================"
214 echo " Running extra build command(s):"
215
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800216 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
217 for ext_module in ${EXT_MODULES}; do
218 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
219 done
220 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800221
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800222 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
223 if [[ -d ${top_ext_drivers} ]]; then
224 rm -rf ${top_ext_drivers}
225 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800226 fi
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800227
228 for FILE in ${FILES}; do
229 if [[ "${FILE}" =~ \.dtbo ]] && \
230 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
231 MKDTIMG_DTBOS="${MKDTIMG_DTBOS} ${DIST_DIR}/${FILE}"
232 fi
233 done
234 export MKDTIMG_DTBOS
235
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800236 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800237 modules_install
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800238 set -x
239
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800240 local src_dir=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
241 pushd ${src_dir}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800242 cp modules.order modules_order.back
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800243 : > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800244 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800245 while read LINE
246 do
247 find -name ${LINE} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800248 done < ${OUT_AMLOGIC_DIR}/modules/modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800249 set -x
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800250 sed -i "s/^\.\///" modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800251 : > ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800252 ext_modules=
253 for ext_module in ${EXT_MODULES}; do
254 if [[ ${ext_module} =~ "../" ]]; then
255 ext_module_old=${ext_module}
256 ext_module=${ext_module//\.\.\//}
257 ext_dir=$(dirname ${ext_module})
258 [[ -d extra/${ext_module} ]] && rm -rf extra/${ext_dir}
259 mkdir -p extra/${ext_dir}
260 cp -rf extra/${ext_module_old} extra/${ext_dir}
261
262 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
263 ext_dir_top=${ext_module%/*}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800264 sed -i "s/\.\.\///g" ${ext_modules_order_file}
265 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800266 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800267 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800268 else
269 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
wanwei.jiangf73b2202022-07-23 16:00:44 +0800270 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800271 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800272 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800273 fi
274 ext_modules="${ext_modules} ${ext_module}"
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800275 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800276 EXT_MODULES=${ext_modules}
277 echo EXT_MODULES=${EXT_MODULES}
278 export EXT_MODULES
wanwei.jiangf73b2202022-07-23 16:00:44 +0800279
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800280 head -n ${ramdisk_last_line} modules.order > vendor_boot_modules
wanwei.jiangf73b2202022-07-23 16:00:44 +0800281 file_last_line=`sed -n "$=" modules.order`
282 let line=${file_last_line}-${ramdisk_last_line}
283 tail -n ${line} modules.order > vendor_dlkm_modules
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800284 export MODULES_LIST=${src_dir}/vendor_boot_modules
285 if [[ "${ARCH}" = "arm64" && -z ${FAST_BUILD} ]]; then
Lei Zhang96efea62022-09-02 14:55:06 +0800286 export VENDOR_DLKM_MODULES_LIST=${src_dir}/vendor_dlkm_modules
287 fi
wanwei.jiangf73b2202022-07-23 16:00:44 +0800288
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800289 popd
wanwei.jiang1d154992022-05-30 14:56:26 +0800290
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800291 if [[ -z ${ANDROID_PROJECT} ]] && [[ -d ${OUT_DIR}/${DTS_EXT_DIR} ]]; then
wanwei.jiang1d154992022-05-30 14:56:26 +0800292 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
293 fi
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800294
295 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
296 : > ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangb2ed83c2022-09-09 14:01:20 +0800297 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800298 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
299 echo "OUT_DIR=${OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
300 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800301 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800302 echo "MODULES_STAGING_DIR=${MODULES_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
303 echo "MODULES_PRIVATE_DIR=${MODULES_PRIVATE_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
304 echo "INITRAMFS_STAGING_DIR=${INITRAMFS_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
305 echo "SYSTEM_DLKM_STAGING_DIR=${SYSTEM_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
306 echo "VENDOR_DLKM_STAGING_DIR=${VENDOR_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
307 echo "MKBOOTIMG_STAGING_DIR=${MKBOOTIMG_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800308 echo "DIST_GKI_DIR=${DIST_GKI_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
309 echo "FULL_KERNEL_VERSION=${FULL_KERNEL_VERSION}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8fe00342023-05-16 22:53:14 +0800310 echo "GKI_MODULES_LOAD_WHITE_LIST=\"${GKI_MODULES_LOAD_WHITE_LIST[*]}\"" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8042e472023-06-06 14:12:32 +0800311 echo "BAZEL=${BAZEL}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800312 fi
Wanwei Jianga07f9a52022-09-30 18:40:40 +0800313
314 for module_path in ${PREBUILT_MODULES_PATH}; do
315 find ${module_path} -type f -name "*.ko" -exec cp {} ${DIST_DIR} \;
316 done
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800317}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800318export -f extra_cmds
319
Wanwei Jiang2218b892023-03-17 17:31:21 +0800320function bazel_extra_cmds() {
321 modules_install
322
323 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
324 : > ${KERNEL_BUILD_VAR_FILE}
325 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
326 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
327 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
328 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8fe00342023-05-16 22:53:14 +0800329 echo "GKI_MODULES_LOAD_WHITE_LIST=\"${GKI_MODULES_LOAD_WHITE_LIST[*]}\"" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8042e472023-06-06 14:12:32 +0800330 echo "BAZEL=${BAZEL}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang2218b892023-03-17 17:31:21 +0800331 fi
332
333 if [[ ${GKI_CONFIG} != gki_20 ]]; then
334 [[ -f ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz ]] && rm -f ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
335 mv ${DIST_DIR}/system_dlkm_staging_archive.tar.gz ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
336 [[ -d ${DIST_DIR}/system_dlkm_gki10 ]] && rm -rf ${DIST_DIR}/system_dlkm_gki10
337 mkdir ${DIST_DIR}/system_dlkm_gki10
338 pushd ${DIST_DIR}/system_dlkm_gki10
339 tar zxf ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
340 find -name "*.ko" | while read module; do
Wanwei Jiang475245b2023-05-10 21:06:52 +0800341 module_name=${module##*/}
Wanwei Jiang2218b892023-03-17 17:31:21 +0800342 if [[ ! `grep "/${module_name}" ${DIST_DIR}/system_dlkm.modules.load` ]]; then
343 rm -f ${module}
344 fi
345 done
346 tar czf ${DIST_DIR}/system_dlkm_staging_archive.tar.gz lib
347 popd
348 rm -rf ${DIST_DIR}/system_dlkm_gki10
349 fi
350}
351
352export -f bazel_extra_cmds
353
wanwei.jiang612a8882021-11-23 17:12:23 +0800354function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800355 local ko=$1
356 local loop
qinglin.lia284a932022-09-21 18:07:38 +0800357 for loop in `grep "^$ko:" modules.dep | sed 's/.*://'`; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800358 mod_probe $loop
359 echo insmod $loop >> __install.sh
360 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800361}
362
Wanwei Jiang571dde62022-11-17 14:37:41 +0800363function mod_probe_recovery() {
364 local ko=$1
365 local loop
366 for loop in `grep "^$ko:" modules_recovery.dep | sed 's/.*://'`; do
367 mod_probe_recovery $loop
368 echo insmod $loop >> __install_recovery.sh
369 done
370}
371
wanwei.jiangb12abc82021-12-25 22:17:10 +0800372function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800373 if [[ -n $1 ]]; then
374 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800375 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800376
377 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
378 cp modules.dep modules.dep.temp
379
380 soc_module=()
381 for chip in ${chips[@]}; do
382 chip_module=`ls amlogic-*-soc-${chip}.ko`
383 soc_module=(${soc_module[@]} ${chip_module[@]})
384 done
385 echo soc_module=${soc_module[*]}
386
387 delete_soc_module=()
388 if [[ ${#soc_module[@]} == 0 ]]; then
389 echo "Use all soc module"
390 else
391 for module in `ls amlogic-*-soc-*`; do
392 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
393 echo Delete soc module: ${module}
394 sed -n "/${module}:/p" modules.dep.temp
395 sed -i "/${module}:/d" modules.dep.temp
396 delete_soc_module=(${delete_soc_module[@]} ${module})
397 fi
398 done
399 echo delete_soc_module=${delete_soc_module[*]}
400 fi
401
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800402 if [[ -n ${CLK_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800403 delete_clk_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800404 for module in `ls amlogic-clk-soc-*`; do
405 if [[ "${CLK_SOC_MODULE}" != "${module}" ]] ; then
406 echo Delete clk soc module: ${module}
407 sed -n "/${module}:/p" modules.dep.temp
408 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800409 delete_clk_soc_modules=(${delete_clk_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800410 fi
411 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800412 echo delete_clk_soc_modules=${delete_clk_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800413 fi
414
415 if [[ -n ${PINCTRL_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800416 delete_pinctrl_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800417 for module in `ls amlogic-pinctrl-soc-*`; do
418 if [[ "${PINCTRL_SOC_MODULE}" != "${module}" ]] ; then
419 echo Delete pinctrl soc module: ${module}
420 sed -n "/${module}:/p" modules.dep.temp
421 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800422 delete_pinctrl_soc_modules=(${delete_pinctrl_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800423 fi
424 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800425 echo delete_pinctrl_soc_modules=${delete_pinctrl_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800426 fi
427
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800428 in_line_i=a
429 delete_type_modules=()
430 echo "TYPE_MODULE_SELECT_MODULE=${TYPE_MODULE_SELECT_MODULE}"
431 mkdir temp_dir
432 cd temp_dir
433 in_temp_dir=y
434 for element in ${TYPE_MODULE_SELECT_MODULE}; do
435 if [[ ${in_temp_dir} = y ]]; then
436 cd ../
437 rm -r temp_dir
438 in_temp_dir=
439 fi
440 if [[ ${in_line_i} = a ]]; then
441 in_line_i=b
442 type_module=${element}
443 select_modules_i=0
444 select_modules_count=
445 select_modules=
446 elif [[ ${in_line_i} = b ]]; then
447 in_line_i=c
448 select_modules_count=${element}
449 else
450 let select_modules_i+=1
451 select_modules="${select_modules} ${element}"
452 if [[ ${select_modules_i} -eq ${select_modules_count} ]]; then
453 in_line_i=a
454 echo type_module=$type_module select_modules=$select_modules
455 for module in `ls ${type_module}`; do
456 dont_delete_module=0
457 for select_module in ${select_modules}; do
458 if [[ "${select_module}" == "${module}" ]] ; then
459 dont_delete_module=1
460 break;
461 fi
462 done
463 if [[ ${dont_delete_module} != 1 ]]; then
464 echo Delete module: ${module}
465 sed -n "/${module}:/p" modules.dep.temp
466 sed -i "/${module}:/d" modules.dep.temp
467 delete_type_modules=(${delete_type_modules[@]} ${module})
468 fi
469 done
470 echo delete_type_modules=${delete_type_modules[*]}
471 fi
472 fi
473 done
474 if [[ -n ${in_temp_dir} ]]; then
475 cd ../
476 rm -r temp_dir
477 fi
478
479 black_modules=()
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800480 mkdir service_module
481 echo MODULES_SERVICE_LOAD_LIST=${MODULES_SERVICE_LOAD_LIST[@]}
482 BLACK_AND_SERVICE_LIST=(${MODULES_LOAD_BLACK_LIST[@]} ${MODULES_SERVICE_LOAD_LIST[@]})
483 echo ${BLACK_AND_SERVICE_LIST[@]}
484 for module in ${BLACK_AND_SERVICE_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800485 modules=`ls ${module}*`
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800486 black_modules=(${black_modules[@]} ${modules[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800487 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800488 if [[ ${#black_modules[@]} == 0 ]]; then
489 echo "black_modules is null, don't delete modules, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800490 else
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800491 echo black_modules=${black_modules[*]}
492 for module in ${black_modules[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800493 echo Delete module: ${module}
494 sed -n "/${module}:/p" modules.dep.temp
495 sed -i "/${module}:/d" modules.dep.temp
496 done
497 fi
498
Wanwei Jiang475245b2023-05-10 21:06:52 +0800499 GKI_MODULES_LOAD_BLACK_LIST=()
500 if [[ "${FULL_KERNEL_VERSION}" != "common13-5.15" ]]; then
501 gki_modules_temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
qinglin.lieafebcf2023-06-27 12:48:22 +0800502 if [[ ${BAZEL} == "1" ]]; then
503 cp $DIST_DIR/system_dlkm.modules.load ${gki_modules_temp_file}
504 else
505 rm -f ${gki_modules_temp_file}
506 cat ${ROOT_DIR}/${KERNEL_DIR}/modules.bzl |grep ko | while read LINE
507 do
508 echo $LINE | sed 's/^[^"]*"//' | sed 's/".*$//' >> ${gki_modules_temp_file}
509 done
510 fi
Wanwei Jiang475245b2023-05-10 21:06:52 +0800511
512 for module in ${GKI_MODULES_LOAD_WHITE_LIST[@]}; do
513 sed -i "/\/${module}/d" ${gki_modules_temp_file}
514 done
515
516 for module in `cat ${gki_modules_temp_file}`; do
517 module=${module##*/}
518 GKI_MODULES_LOAD_BLACK_LIST[${#GKI_MODULES_LOAD_BLACK_LIST[*]}]=${module}
519 done
520 rm -f ${gki_modules_temp_file}
521
522 for module in ${GKI_MODULES_LOAD_BLACK_LIST[@]}; do
523 echo Delete module: ${module}
524 sed -n "/${module}:/p" modules.dep.temp
525 sed -i "/${module}:/d" modules.dep.temp
526 done
527 fi
528
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800529 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
Wanwei Jiang475245b2023-05-10 21:06:52 +0800530 delete_modules=(${delete_soc_module[@]} ${delete_clk_soc_modules[@]} ${delete_pinctrl_soc_modules[@]} ${delete_type_modules[@]} ${black_modules[@]} ${GKI_MODULES_LOAD_BLACK_LIST[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800531 for module in ${delete_modules[@]}; do
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800532 if [[ ! `ls $module` ]]; then
533 continue
534 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800535 match=`sed -n "/${module}/=" modules.dep.temp1`
536 for match in ${match[@]}; do
537 match_count=(${match_count[@]} $match)
538 done
539 if [[ ${#match_count[@]} != 0 ]]; then
540 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800541 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800542 exit
543 fi
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800544 if [[ -n ${ANDROID_PROJECT} ]]; then
545 for service_module_temp in ${MODULES_SERVICE_LOAD_LIST[@]}; do
546 if [[ ${module} = ${service_module_temp} ]]; then
547 mv ${module} service_module
548 fi
549 done
550 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800551 rm -f ${module}
552 done
553 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800554 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800555
556 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
557 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800558 sed -n "/${module}:/p" modules.dep.temp
559 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
560 sed -i "/${module}:/d" modules.dep.temp
561 sed -n "/${module}.*\.ko:/p" modules.dep.temp
562 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
563 sed -i "/${module}.*\.ko:/d" modules.dep.temp
564 done
565
Wanwei Jiang571dde62022-11-17 14:37:41 +0800566 if [[ -n ${ANDROID_PROJECT} ]]; then
567 cp modules.dep.temp modules_recovery.dep.temp
568 cp modules.dep.temp1 modules_recovery.dep.temp1
569 fi
570
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800571 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
572 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
573 sed -n "/${module}:/p" modules.dep.temp
574 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
575 sed -i "/${module}:/d" modules.dep.temp
576 sed -n "/${module}.*\.ko:/p" modules.dep.temp
577 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
578 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800579 done
580
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800581 if [ -f modules.dep.temp2 ]; then
582 rm modules.dep.temp2
583 fi
584 touch modules.dep.temp2
585 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
586 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
587 sed -n "/${module}:/p" modules.dep.temp
588 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
589 sed -i "/${module}:/d" modules.dep.temp
590 sed -n "/${module}.*\.ko:/p" modules.dep.temp
591 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
592 sed -i "/${module}.*\.ko:/d" modules.dep.temp
593 done
594
595 cat modules.dep.temp >> modules.dep.temp1
596 cat modules.dep.temp2 >> modules.dep.temp1
597
wanwei.jiangb12abc82021-12-25 22:17:10 +0800598 cp modules.dep.temp1 modules.dep
599 rm modules.dep.temp
600 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800601 rm modules.dep.temp2
Wanwei Jiang571dde62022-11-17 14:37:41 +0800602
603 if [[ -n ${ANDROID_PROJECT} ]]; then
604 for module in ${RECOVERY_MODULES_LOAD_LIST[@]}; do
605 echo RECOVERY_MODULES_LOAD_LIST: $module
606 sed -n "/${module}:/p" modules_recovery.dep.temp
607 sed -n "/${module}:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
608 sed -i "/${module}:/d" modules_recovery.dep.temp
609 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp
610 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
611 sed -i "/${module}.*\.ko:/d" modules_recovery.dep.temp
612 done
613
614 cat modules_recovery.dep.temp >> modules_recovery.dep.temp1
615
616 cp modules_recovery.dep.temp1 modules_recovery.dep
617 rm modules_recovery.dep.temp
618 rm modules_recovery.dep.temp1
619 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800620}
621
Wanwei Jiang571dde62022-11-17 14:37:41 +0800622create_ramdisk_vendor_recovery() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800623 install_temp=$1
Wanwei Jiang571dde62022-11-17 14:37:41 +0800624 if [[ -n ${ANDROID_PROJECT} ]]; then
625 recovery_install_temp=$2
626 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800627 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
Wanwei Jiang9173e462022-09-29 00:58:33 +0800628 ramdisk_module_i=${#RAMDISK_MODULES_LOAD_LIST[@]}
629 while [ ${ramdisk_module_i} -gt 0 ]; do
630 let ramdisk_module_i--
631 echo ramdisk_module_i=$ramdisk_module_i ${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
632 if [[ `grep "${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}" ${install_temp}` ]]; then
633 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
634 break;
635 fi
636 done
637 # last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
qinglin.libce54712023-05-08 13:56:31 +0800638 if [[ -n ${last_ramdisk_module} ]]; then
639 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
640 for line in ${last_ramdisk_module_line}; do
641 ramdisk_last_line=${line}
642 done
643 else
644 ramdisk_last_line=1
645 fi
wanwei.jiangf73b2202022-07-23 16:00:44 +0800646 export ramdisk_last_line
Wanwei Jiang571dde62022-11-17 14:37:41 +0800647
648 if [[ -n ${ANDROID_PROJECT} ]]; then
649 recovery_module_i=${#RECOVERY_MODULES_LOAD_LIST[@]}
qinglin.lidba324f2023-03-02 19:56:21 +0800650 #when RECOVERY_MODULES_LOAD_LIST is NULL
651 if [ ${#RECOVERY_MODULES_LOAD_LIST[@]} -eq 0 ]; then
652 last_recovery_module=${last_ramdisk_module}
653 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800654 while [ ${recovery_module_i} -gt 0 ]; do
655 let recovery_module_i--
656 echo recovery_module_i=$recovery_module_i ${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}
657 if [[ `grep "${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}" ${recovery_install_temp}` ]]; then
658 last_recovery_module=${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}
659 break;
660 fi
661 done
662 # last_recovery_module=${RECOVERY_MODULES_LOAD_LIST[${#RECOVERY_MODULES_LOAD_LIST[@]}-1]}
qinglin.libce54712023-05-08 13:56:31 +0800663 if [[ -n ${last_recovery_module} ]]; then
664 last_recovery_module_line=`sed -n "/${last_recovery_module}/=" ${recovery_install_temp}`
665 for line in ${last_recovery_module_line}; do
666 recovery_last_line=${line}
667 done
668 else
669 recovery_last_line=1
670 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800671 sed -n "${ramdisk_last_line},${recovery_last_line}p" ${recovery_install_temp} > recovery_install.sh
qinglin.libce54712023-05-08 13:56:31 +0800672 if [[ -n ${last_ramdisk_module} ]]; then
673 sed -i "1d" recovery_install.sh
674 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800675 mkdir recovery
676 cat recovery_install.sh | cut -d ' ' -f 2 > recovery/recovery_modules.order
qinglin.lidba324f2023-03-02 19:56:21 +0800677 if [ ${#RECOVERY_MODULES_LOAD_LIST[@]} -ne 0 ]; then
678 cat recovery_install.sh | cut -d ' ' -f 2 | xargs cp -t recovery/
679 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800680 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' recovery_install.sh
681 echo "echo Install recovery modules success!" >> recovery_install.sh
682 chmod 755 recovery_install.sh
683 mv recovery_install.sh recovery/
684 fi
685
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800686 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800687 mkdir ramdisk
wanwei.jiangf73b2202022-07-23 16:00:44 +0800688 cat ramdisk_install.sh | cut -d ' ' -f 2 > ramdisk/ramdisk_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800689 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800690
qinglin.lie5b951e2022-06-07 16:13:44 +0800691 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' ramdisk_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800692 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
693 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800694 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800695
696 file_last_line=`sed -n "$=" ${install_temp}`
697 let line=${file_last_line}-${ramdisk_last_line}
698 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800699 mkdir vendor
wanwei.jiangf73b2202022-07-23 16:00:44 +0800700 cat vendor_install.sh | cut -d ' ' -f 2 > vendor/vendor_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800701 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800702
qinglin.lie5b951e2022-06-07 16:13:44 +0800703 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' vendor_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800704 echo "echo Install vendor modules success!" >> vendor_install.sh
705 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800706 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800707}
708
wanwei.jiang612a8882021-11-23 17:12:23 +0800709function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800710 arg1=$1
711
Wanwei Jiang2218b892023-03-17 17:31:21 +0800712 export OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR:-$(readlink -m ${COMMON_OUT_DIR}/amlogic)}
713 echo $OUT_AMLOGIC_DIR
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800714 rm -rf ${OUT_AMLOGIC_DIR}
715 mkdir -p ${OUT_AMLOGIC_DIR}
716 mkdir -p ${OUT_AMLOGIC_DIR}/modules
717 mkdir -p ${OUT_AMLOGIC_DIR}/ext_modules
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800718 mkdir -p ${OUT_AMLOGIC_DIR}/symbols
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800719
Wanwei Jiang2218b892023-03-17 17:31:21 +0800720 if [[ ${BAZEL} == "1" ]]; then
721 local output="out/bazel/output_user_root"
722 for dir in `ls ${output}`; do
723 if [[ ${dir} =~ ^[0-9A-Fa-f]*$ ]]; then
724 digit_output=${output}/${dir}
725 break
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800726 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800727 done
728
Wanwei Jiang0df84602023-05-05 14:40:42 +0800729 while read module
730 do
Wanwei Jiang475245b2023-05-10 21:06:52 +0800731 module_name=${module##*/}
Wanwei Jiang0df84602023-05-05 14:40:42 +0800732 if [[ `echo ${module} | grep "^kernel\/"` ]]; then
733 if [[ -f ${DIST_DIR}/${module_name} ]]; then
734 cp ${DIST_DIR}/${module_name} ${OUT_AMLOGIC_DIR}/modules
735 else
736 module=`find ${digit_output}/execroot/ -name ${module_name} | grep "amlogic"`
737 cp ${module} ${OUT_AMLOGIC_DIR}/modules
738 fi
739 elif [[ `echo ${module} | grep "^extra\/"` ]]; then
740 cp ${DIST_DIR}/${module_name} ${OUT_AMLOGIC_DIR}/ext_modules
Wanwei Jiang2218b892023-03-17 17:31:21 +0800741 else
Wanwei Jiang0df84602023-05-05 14:40:42 +0800742 echo "warning unrecognized module: ${module}"
Wanwei Jiang2218b892023-03-17 17:31:21 +0800743 fi
Wanwei Jiang0df84602023-05-05 14:40:42 +0800744 done < ${DIST_DIR}/modules.load
Wanwei Jiang2218b892023-03-17 17:31:21 +0800745
746 dep_file=`find ${digit_output}/execroot/ -name *.dep | grep "amlogic"`
747 cp ${dep_file} ${OUT_AMLOGIC_DIR}/modules/full_modules.dep
Wanwei Jiang0df84602023-05-05 14:40:42 +0800748 grep -E "^kernel\/" ${dep_file} > ${OUT_AMLOGIC_DIR}/modules/modules.dep
Wanwei Jiang2218b892023-03-17 17:31:21 +0800749 touch ${module} ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
750 for order_file in `find ${digit_output}/execroot/ -name "modules.order.*" | grep "amlogic"`; do
751 echo "# ${order_file}" >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
752 cat ${order_file} >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
753 echo >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
754 done
755 else
756 local MODULES_ROOT_DIR=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
757 pushd ${MODULES_ROOT_DIR}
758 local common_drivers=${COMMON_DRIVERS_DIR##*/}
759 local modules_list=$(find -type f -name "*.ko")
760 for module in ${modules_list}; do
761 if [[ -n ${ANDROID_PROJECT} ]]; then # copy internal build modules
762 if [[ `echo ${module} | grep -E "\.\/kernel\/|\/${common_drivers}\/"` ]]; then
763 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
764 else
765 cp ${module} ${OUT_AMLOGIC_DIR}/ext_modules/
766 fi
767 else # copy all modules, include external modules
768 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
769 fi
770 done
771
772 if [[ -n ${ANDROID_PROJECT} ]]; then # internal build modules
773 grep -E "^kernel\/|^${common_drivers}\/" modules.dep > ${OUT_AMLOGIC_DIR}/modules/modules.dep
774 else # all modules, include external modules
775 cp modules.dep ${OUT_AMLOGIC_DIR}/modules
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800776 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800777 popd
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800778 fi
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800779 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang612a8882021-11-23 17:12:23 +0800780 sed -i 's#[^ ]*/##g' modules.dep
781
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800782 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800783
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800784 touch __install.sh
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800785 touch modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800786 for loop in `cat modules.dep | sed 's/:.*//'`; do
787 mod_probe $loop
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800788 echo $loop >> modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800789 echo insmod $loop >> __install.sh
790 done
791
792 cat __install.sh | awk ' {
793 if (!cnt[$2]) {
794 print $0;
795 cnt[$2]++;
796 }
797 }' > __install.sh.tmp
798
Wanwei Jiangbf119d22022-10-27 09:49:49 +0800799 cp modules.order modules.order.back
800 cut -d ' ' -f 2 __install.sh.tmp > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800801
802 if [[ -n ${ANDROID_PROJECT} ]]; then
803 touch __install_recovery.sh
804 touch modules_recovery.order
805 for loop in `cat modules_recovery.dep | sed 's/:.*//'`; do
806 mod_probe_recovery $loop
807 echo $loop >> modules_recovery.order
808 echo insmod $loop >> __install_recovery.sh
809 done
810
811 cat __install_recovery.sh | awk ' {
812 if (!cnt[$2]) {
813 print $0;
814 cnt[$2]++;
815 }
816 }' > __install_recovery.sh.tmp
817
818 cut -d ' ' -f 2 __install_recovery.sh.tmp > modules_recovery.order
819 fi
820 create_ramdisk_vendor_recovery __install.sh.tmp __install_recovery.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800821
Dezhen Wang124ad7d2023-02-06 15:35:14 +0800822 if [[ -n ${MANUAL_INSMOD_MODULE} ]]; then
823 install_file=manual_install.sh
824 else
825 install_file=install.sh
826 fi
827 echo "#!/bin/sh" > ${install_file}
828 echo "cd ramdisk" >> ${install_file}
829 echo "./ramdisk_install.sh" >> ${install_file}
830 echo "cd ../vendor" >> ${install_file}
831 echo "./vendor_install.sh" >> ${install_file}
832 echo "cd ../" >> ${install_file}
833 chmod 755 ${install_file}
wanwei.jiang612a8882021-11-23 17:12:23 +0800834
835 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
Wanwei Jianga5977bd2022-08-24 22:43:40 +0800836 rm __install.sh __install.sh.tmp
wanwei.jiang612a8882021-11-23 17:12:23 +0800837
Wanwei Jiang571dde62022-11-17 14:37:41 +0800838 if [[ -n ${ANDROID_PROJECT} ]]; then
839 rm __install_recovery.sh __install_recovery.sh.tmp
840 fi
841
wanwei.jiang236e9a32021-12-07 16:34:14 +0800842 popd
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800843
Wanwei Jiang2218b892023-03-17 17:31:21 +0800844 if [[ ${BAZEL} == "1" ]]; then
845 cp ${DIST_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
846
847 find ${digit_output}/execroot -name *.ko | grep "unstripped" | while read module; do
848 cp ${module} ${OUT_AMLOGIC_DIR}/symbols
849 chmod +w ${OUT_AMLOGIC_DIR}/symbols/$(basename ${module})
850 done
851 chmod -w ${OUT_AMLOGIC_DIR}/symbols/*.ko
852 else
853 cp ${OUT_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
854 find ${OUT_DIR} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
855 for ext_module in ${EXT_MODULES}; do
856 find ${COMMON_OUT_DIR}/${ext_module} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
857 done
858 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800859}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800860export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800861
Wanwei Jiang2218b892023-03-17 17:31:21 +0800862function rename_external_module_name() {
863 local external_coppied
864 local vendor_coppied
Wanwei Jiang92c89432023-05-15 23:57:16 +0800865 sed 's/^[\t ]*\|[\t ]*$//g' ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/modules_rename.txt | sed '/^#/d;/^$/d' | sed 's/[[:space:]][[:space:]]*/ /g' | while read module_line; do
Wanwei Jiang2218b892023-03-17 17:31:21 +0800866 target_module_name=`echo ${module_line%%:*} | sed '/^#/d;/^$/d'`
867 modules_name=`echo ${module_line##:*} | sed '/^#/d;/^$/d'`
868 [[ -f ${OUT_AMLOGIC_DIR}/ext_modules/${target_module_name} ]] && external_coppied=1
869 [[ -f ${OUT_AMLOGIC_DIR}/modules/vendor/${target_module_name} ]] && vendor_coppied=1
870 echo target_module_name=$target_module_name modules_name=$modules_name external_coppied=$external_coppied vendor_coppied=$vendor_coppied
871 for module in ${modules_name}; do
872 echo module=$module
873 if [[ -f ${OUT_AMLOGIC_DIR}/ext_modules/${module} ]]; then
874 if [[ -z ${external_coppied} ]]; then
875 cp ${OUT_AMLOGIC_DIR}/ext_modules/${module} ${OUT_AMLOGIC_DIR}/ext_modules/${target_module_name}
876 external_coppied=1
877 fi
878 rm -f ${OUT_AMLOGIC_DIR}/ext_modules/${module}
879 fi
880 if [[ -f ${OUT_AMLOGIC_DIR}/modules/vendor/${module} ]]; then
881 if [[ -z ${vendor_coppied} ]]; then
882 cp ${OUT_AMLOGIC_DIR}/modules/vendor/${module} ${OUT_AMLOGIC_DIR}/modules/vendor/${target_module_name}
883 vendor_coppied=1
884 fi
885 rm -f ${OUT_AMLOGIC_DIR}/modules/vendor/${module}
886 fi
887 done
888 external_coppied=
889 vendor_coppied=
890 done
891}
892export -f rename_external_module_name
893
Dezhen Wang5ad119c2023-05-04 15:07:49 +0800894# function rebuild_rootfs can rebuild the rootfs if rootfs_base.cpio.gz.uboot exist
wanwei.jiang612a8882021-11-23 17:12:23 +0800895function rebuild_rootfs() {
Wanwei Jiang2218b892023-03-17 17:31:21 +0800896 echo
897 echo "========================================================"
898 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
899 echo "Rebuild rootfs in order to install modules!"
900 else
901 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
902 return
903 fi
904
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800905 pushd ${OUT_AMLOGIC_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800906
Lei Zhang475c17b2022-03-03 11:08:50 +0800907 local ARCH=arm64
908 if [[ -n $1 ]]; then
909 ARCH=$1
910 fi
911
wanwei.jiang612a8882021-11-23 17:12:23 +0800912 rm rootfs -rf
913 mkdir rootfs
Wanwei Jiang2218b892023-03-17 17:31:21 +0800914 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800915 cd rootfs
916 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
917 gunzip rootfs_base.cpio.gz
918 mkdir rootfs
919 cd rootfs
dongqing.li6fd83502023-06-15 09:59:40 +0800920 fakeroot cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800921 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
922 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800923 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800924 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800925
dongqing.li6fd83502023-06-15 09:59:40 +0800926 find . | fakeroot cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
wanwei.jiang612a8882021-11-23 17:12:23 +0800927 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800928 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 +0800929 mv rootfs_new.cpio.gz.uboot ../
930 cd ../
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800931 cp rootfs_new.cpio.gz.uboot ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800932
933 popd
934}
935export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800936
Dezhen Wang5ad119c2023-05-04 15:07:49 +0800937# function check_undefined_symbol can check the dependence among the modules
938# parameter:
939# --modules_depend
wanwei.jiang403c9942021-11-30 18:29:02 +0800940function check_undefined_symbol() {
Wanwei Jiang2218b892023-03-17 17:31:21 +0800941 if [[ ${MODULES_DEPEND} != "1" ]]; then
942 return
943 fi
944
945 echo "========================================================"
946 echo "print modules depend"
947
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800948 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800949 echo
950 echo "========================================================"
951 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800952 if [[ -n ${LLVM} ]]; then
953 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
954 elif [[ -n ${CROSS_COMPILE} ]]; then
955 compile_tool=${CROSS_COMPILE}
956 else
957 echo "can't find compile tool"
958 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800959 ${compile_tool}nm ${DIST_DIR}/vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800960 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
961 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
962 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
963 cp ramdisk/*.ko .
964 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800965 while read LINE
966 do
967 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800968 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 +0800969 do
970 #echo ${U}
971 U_v=`grep -w ${U} vmlinux_T.txt`
972 in_vmlinux=0
973 if [ -n "${U_v}" ];
974 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800975 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800976 in_vmlinux=1
977 continue
978 fi
979 in_module=0
980 MODULE=
981 while read LINE1
982 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800983 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 +0800984 if [ -n "${U_m}" ];
985 then
986 in_module=1
987 MODULE=${LINE1}
988 fi
989 done < module_list.txt
990 if [ ${in_module} -eq "1" ];
991 then
992 printf "\t%-50s <== %s\n" ${U} ${MODULE}
993 continue
994 else
995 printf "\t%-50s <== none\n" ${U}
996 fi
997 done
998 echo
999 echo
1000 done < module_list.txt
1001 rm vmlinux_T.txt
1002 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +08001003 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +08001004 popd
1005}
1006export -f check_undefined_symbol
Dezhen Wangd40fa552023-04-11 16:13:27 +08001007
1008function reorganized_abi_symbol_list_file() { # delete the extra information but symbol
1009 cat $@ | sed '/^$/d' >> ${symbol_tmp} # remove blank lines
1010 sed -i '/^\[/d' ${symbol_tmp} # remove the title
1011 sed -i '/^\#/d' ${symbol_tmp} # remove the comment
1012}
1013export -f reorganized_abi_symbol_list_file
1014
1015function abi_symbol_list_detect () { # detect symbol information that should be submitted or fix
1016 symbol_file1=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic
1017 symbol_file2=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.10
1018 symbol_file3=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.debug
1019 symbol_file4=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.illegal
1020
1021 file_list=("${symbol_file1} ${symbol_file2} ${symbol_file3} ${symbol_file4}")
1022 for file in ${file_list}
1023 do
1024 local symbol_tmp=`mktemp tmp.XXXXXXXXXXXX`
1025 reorganized_abi_symbol_list_file "${file}"
1026
1027 if [[ -s ${symbol_tmp} ]]; then
1028 if [[ ${file} =~ abi_gki_aarch64_amlogic.illegal ]]; then
1029 echo "WARNING: The symbols in ${file} are illegal, please deal with them as soon as possible!!!"
1030 else
1031 echo "WARNING: The symbols in ${file} should be submit to google!!!"
1032 fi
1033 cat ${symbol_tmp}
1034 echo -e "\n------------------------------------------------------------"
1035 fi
1036 rm ${symbol_tmp}
1037 done
1038}
1039export -f abi_symbol_list_detect
1040
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001041# adjust_config_action concerns three types of cmd:
1042# parameters:
1043# --menuconfig: make menuconfig manually based on different gki standard
1044# --basicconfig: only config kernel with google original gki_defconfig as base
1045# --check_defconfig: contrast the defconfig generated in out directory with gki_defconfig and show the difference
1046function adjust_config_action () {
1047 if [[ -n ${MENUCONFIG} ]] || [[ -n ${BASICCONFIG} ]] || [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
1048 # ${ROOT_DIR}/${BUILD_DIR}/config.sh menuconfig
1049 HERMETIC_TOOLCHAIN=0
1050 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
1051 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
1052
1053 orig_config=$(mktemp)
1054 orig_defconfig=$(mktemp)
1055 out_config="${OUT_DIR}/.config"
1056 out_defconfig="${OUT_DIR}/defconfig"
1057 changed_config=$(mktemp)
1058 changed_defconfig=$(mktemp)
1059
1060 if [[ -n ${BASICCONFIG} ]]; then # config kernel with gki_defconfig or make menuconfig based on it
1061 set -x
1062 defconfig_name=`basename ${GKI_BASE_CONFIG}`
1063 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${defconfig_name})
1064 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1065 cp ${out_config} ${orig_config}
1066 cp ${out_defconfig} ${orig_defconfig}
1067 if [ "${BASICCONFIG}" = "m" ]; then # make menuconfig based on gki_defconfig
1068 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
1069 fi
1070 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1071 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
1072 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
1073 if [ "${ARCH}" = "arm" ]; then
1074 cp ${out_defconfig} ${GKI_BASE_CONFIG}
1075 fi
1076 set +x # show the difference between the gki_defconfig and the config after make menuconfig
1077 echo
1078 echo "========================================================"
1079 echo "==================== .config diff ===================="
1080 cat ${changed_config}
1081 echo "==================== defconfig diff ===================="
1082 cat ${changed_defconfig}
1083 echo "========================================================"
1084 echo
1085 elif [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then # compare the defconfig generated in out directory with gki_defconfig
1086 set -x
1087 pre_defconfig_cmds
1088 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1089 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig) # export the defconfig to out directory
1090 diff -u ${ROOT_DIR}/${GKI_BASE_CONFIG} ${OUT_DIR}/defconfig
1091 post_defconfig_cmds
1092 set +x
1093 else # make menuconfig based on config with different gki standard
1094 set -x
1095 pre_defconfig_cmds
1096 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1097 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1098 cp ${out_config} ${orig_config}
1099 cp ${out_defconfig} ${orig_defconfig}
1100 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
1101 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1102 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
1103 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
1104 post_defconfig_cmds
1105 set +x
1106 echo
1107 echo "========================================================"
1108 echo "if the config follows GKI2.0, please add it to the file amlogic_gki.fragment manually"
1109 echo "if the config follows GKI1.0 optimize, please add it to the file amlogic_gki.10 manually"
1110 echo "if the config follows GKI1.0 debug, please add it to the file amlogic_gki.debug manually"
1111 echo "==================== .config diff ===================="
1112 cat ${changed_config}
1113 echo "==================== defconfig diff ===================="
1114 cat ${changed_defconfig}
1115 echo "========================================================"
1116 echo
1117 fi
1118 rm -f ${orig_config} ${changed_config} ${orig_defconfig} ${changed_defconfig}
1119 exit
1120 fi
1121}
1122export -f adjust_config_action
1123
1124# function build_part_of_kernel can only build part of kernel such as image modules or dtbs
1125# parameter:
1126# --image: only build image
1127# --modules: only build kernel modules
1128# --dtbs: only build dtbs
1129function build_part_of_kernel () {
1130 if [[ -n ${IMAGE} ]] || [[ -n ${MODULES} ]] || [[ -n ${DTB_BUILD} ]]; then
1131 old_path=${PATH}
1132 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
1133 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
1134
1135 if [[ ! -f ${OUT_DIR}/.config ]]; then
1136 pre_defconfig_cmds
1137 set -x
1138 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1139 set +x
1140 post_defconfig_cmds
1141 fi
1142
1143 if [[ -n ${IMAGE} ]]; then
1144 set -x
1145 if [ "${ARCH}" = "arm64" ]; then
1146 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) Image)
1147 elif [ "${ARCH}" = "arm" ]; then
1148 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) LOADADDR=0x108000 uImage)
1149 fi
1150 set +x
1151 fi
1152 mkdir -p ${DIST_DIR}
1153 if [[ -n ${DTB_BUILD} ]]; then
1154 set -x
1155 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) dtbs)
1156 set +x
1157 fi
1158 if [[ -n ${MODULES} ]]; then
1159 export MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
1160 rm -rf ${MODULES_STAGING_DIR}
1161 mkdir -p ${MODULES_STAGING_DIR}
1162 if [ "${DO_NOT_STRIP_MODULES}" != "1" ]; then
1163 MODULE_STRIP_FLAG="INSTALL_MOD_STRIP=1"
1164 fi
1165 if [[ `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
1166 set -x
1167 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) modules)
1168 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} "${MAKE_ARGS[@]}" modules_install)
1169 set +x
1170 fi
1171 echo EXT_MODULES=$EXT_MODULES
1172 prepare_module_build
1173 if [[ -z "${SKIP_EXT_MODULES}" ]] && [[ -n "${EXT_MODULES}" ]]; then
1174 echo "========================================================"
1175 echo " Building external modules and installing them into staging directory"
1176 KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
1177 for EXT_MOD in ${EXT_MODULES}; do
1178 EXT_MOD_REL=$(rel_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
1179 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
1180 set -x
1181 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1182 O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}"
1183 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1184 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
1185 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
1186 INSTALL_MOD_DIR="extra/${EXT_MOD}" \
1187 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" \
1188 "${MAKE_ARGS[@]}" modules_install
1189 set +x
1190 done
1191 fi
1192 export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
1193 set -x
1194 extra_cmds
1195 set +x
1196 MODULES=$(find ${MODULES_STAGING_DIR} -type f -name "*.ko")
1197 cp -p ${MODULES} ${DIST_DIR}
1198
1199 new_path=${PATH}
1200 PATH=${old_path}
1201 echo "========================================================"
1202 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
1203 echo "Rebuild rootfs in order to install modules!"
1204 rebuild_rootfs ${ARCH}
1205 else
1206 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
1207 fi
1208 PATH=${new_path}
1209 fi
1210 if [ -n "${DTS_EXT_DIR}" ]; then
1211 if [ -d "${ROOT_DIR}/${DTS_EXT_DIR}" ]; then
1212 DTS_EXT_DIR=$(rel_path ${ROOT_DIR}/${DTS_EXT_DIR} ${KERNEL_DIR})
1213 if [ -d ${OUT_DIR}/${DTS_EXT_DIR} ]; then
1214 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
1215 fi
1216 fi
1217 fi
1218 for FILE in ${FILES}; do
1219 if [ -f ${OUT_DIR}/${FILE} ]; then
1220 echo " $FILE"
1221 cp -p ${OUT_DIR}/${FILE} ${DIST_DIR}/
1222 elif [[ "${FILE}" =~ \.dtb|\.dtbo ]] && \
1223 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
1224 # DTS_EXT_DIR is recalculated before to be relative to KERNEL_DIR
1225 echo " $FILE"
1226 cp -p "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" "${DIST_DIR}/"
1227 else
1228 echo " $FILE is not a file, skipping"
1229 fi
1230 done
1231 exit
1232 fi
1233}
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001234export -f build_part_of_kernel
1235
1236function export_env_variable () {
1237 export ABI BUILD_CONFIG LTO KMI_SYMBOL_LIST_STRICT_MODE CHECK_DEFCONFIG MANUAL_INSMOD_MODULE ARCH
qinglin.libce54712023-05-08 13:56:31 +08001238 export KERNEL_DIR COMMON_DRIVERS_DIR BUILD_DIR ANDROID_PROJECT GKI_CONFIG UPGRADE_PROJECT ANDROID_VERSION FAST_BUILD CHECK_GKI_20 DEV_CONFIGS
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001239 export FULL_KERNEL_VERSION BAZEL
1240
1241 echo ROOT_DIR=$ROOT_DIR
1242 echo ABI=${ABI} BUILD_CONFIG=${BUILD_CONFIG} LTO=${LTO} KMI_SYMBOL_LIST_STRICT_MODE=${KMI_SYMBOL_LIST_STRICT_MODE} CHECK_DEFCONFIG=${CHECK_DEFCONFIG} MANUAL_INSMOD_MODULE=${MANUAL_INSMOD_MODULE}
qinglin.libce54712023-05-08 13:56:31 +08001243 echo KERNEL_DIR=${KERNEL_DIR} COMMON_DRIVERS_DIR=${COMMON_DRIVERS_DIR} BUILD_DIR=${BUILD_DIR} ANDROID_PROJECT=${ANDROID_PROJECT} GKI_CONFIG=${GKI_CONFIG} UPGRADE_PROJECT=${UPGRADE_PROJECT} ANDROID_VERSION=${ANDROID_VERSION} FAST_BUILD=${FAST_BUILD} CHECK_GKI_20=${CHECK_GKI_20}
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001244 echo FULL_KERNEL_VERSION=${FULL_KERNEL_VERSION} BAZEL=${BAZEL}
1245 echo MENUCONFIG=${MENUCONFIG} BASICCONFIG=${BASICCONFIG} IMAGE=${IMAGE} MODULES=${MODULES} DTB_BUILD=${DTB_BUILD}
1246}
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001247export -f export_env_variable
Dezhen Wang850c0d22023-05-31 19:26:20 +08001248
1249function handle_input_parameters () {
1250 VA=
1251 ARGS=()
1252 for i in "$@"
1253 do
1254 case $i in
1255 --arch)
1256 ARCH=$2
1257 VA=1
1258 shift
1259 ;;
1260 --abi)
1261 ABI=1
1262 shift
1263 ;;
1264 --build_config)
1265 BUILD_CONFIG=$2
1266 VA=1
1267 shift
1268 ;;
1269 --lto)
1270 LTO=$2
1271 VA=1
1272 shift
1273 ;;
1274 --symbol_strict)
1275 KMI_SYMBOL_LIST_STRICT_MODE=$2
1276 VA=1
1277 shift
1278 ;;
1279 --menuconfig)
1280 MENUCONFIG=1
1281 shift
1282 ;;
1283 --basicconfig)
1284 if [ "$2" = "m" ] || [ "$2" = "n" ]; then
1285 BASICCONFIG=$2
1286 else
1287 BASICCONFIG="m"
1288 fi
1289 VA=1
1290 shift
1291 ;;
1292 --image)
1293 IMAGE=1
1294 shift
1295 ;;
1296 --modules)
1297 MODULES=1
1298 shift
1299 break
1300 ;;
1301 --dtbs)
1302 DTB_BUILD=1
1303 shift
1304 ;;
1305 --build_dir)
1306 BUILD_DIR=$2
1307 VA=1
1308 shift
1309 ;;
1310 --check_defconfig)
1311 CHECK_DEFCONFIG=1
1312 shift
1313 ;;
1314 --modules_depend)
1315 MODULES_DEPEND=1
1316 shift
1317 ;;
1318 --android_project)
1319 ANDROID_PROJECT=$2
1320 VA=1
1321 shift
1322 ;;
1323 --gki_20)
1324 GKI_CONFIG=gki_20
1325 shift
1326 ;;
1327 --gki_10)
1328 GKI_CONFIG=gki_10
1329 shift
1330 ;;
1331 --gki_debug)
1332 GKI_CONFIG=gki_debug
1333 shift
1334 ;;
1335 --fast_build)
1336 FAST_BUILD=1
1337 shift
1338 ;;
1339 --upgrade)
1340 UPGRADE_PROJECT=1
1341 ANDROID_VERSION=$2
1342 VA=1
1343 shift
1344 ;;
1345 --manual_insmod_module)
1346 MANUAL_INSMOD_MODULE=1
1347 shift
1348 ;;
Dezhen Wang850c0d22023-05-31 19:26:20 +08001349 --check_gki_20)
1350 CHECK_GKI_20=1
1351 GKI_CONFIG=gki_20
1352 LTO=none
1353 shift
1354 ;;
1355 --dev_config)
1356 DEV_CONFIGS=$2
1357 VA=1
1358 shift
1359 ;;
1360 --bazel)
1361 BAZEL=1
1362 shift
1363 ;;
1364 -h|--help)
1365 show_help
1366 exit 0
1367 ;;
1368 *)
1369 if [[ -n $1 ]];
1370 then
1371 if [[ -z ${VA} ]];
1372 then
1373 ARGS+=("$1")
1374 fi
1375 fi
1376 VA=
1377 shift
1378 ;;
1379 esac
1380 done
1381}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001382export -f handle_input_parameters
1383
1384function set_default_parameters () {
1385 if [ "${ARCH}" = "arm" ]; then
1386 ARGS+=("LOADADDR=0x108000")
1387 else
1388 ARCH=arm64
1389 fi
1390
1391 if [[ -z "${ABI}" ]]; then
1392 ABI=0
1393 fi
1394 if [[ -z "${LTO}" ]]; then
1395 LTO=thin
1396 fi
1397 if [[ -n ${CHECK_GKI_20} && -z ${ANDROID_PROJECT} ]]; then
1398 ANDROID_PROJECT=ohm
1399 fi
1400
1401 if [[ -z "${BUILD_CONFIG}" ]]; then
1402 if [ "${ARCH}" = "arm64" ]; then
1403 BUILD_CONFIG=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/build.config.amlogic
1404 elif [ "${ARCH}" = "arm" ]; then
1405 BUILD_CONFIG=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/build.config.amlogic32
1406 fi
1407 fi
1408 if [[ -z "${BUILD_DIR}" ]]; then
1409 BUILD_DIR=build
1410 fi
1411
1412 version_message=$(grep -rn BRANCH= ${KERNEL_DIR}/build.config.constants)
1413 version_message="common${version_message##*android}"
1414 if [[ -n ${FULL_KERNEL_VERSION} ]]; then
1415 if [[ "${FULL_KERNEL_VERSION}" != "${version_message}" ]]; then
1416 echo "kernel version is not match!!"
1417 exit
1418 fi
1419 else
1420 FULL_KERNEL_VERSION=${version_message}
1421 fi
1422
1423 if [[ -z ${BAZEL} ]]; then
Dezhen Wang20069292023-06-20 14:51:21 +08001424 [[ "${FULL_KERNEL_VERSION}" != "common13-5.15" && "${ARCH}" == "arm64" && -z ${UPGRADE_PROJECT} ]] && BAZEL=1
Dezhen Wang850c0d22023-05-31 19:26:20 +08001425 fi
1426
1427 auto_patch_to_common_dir
1428
qinglin.lieafebcf2023-06-27 12:48:22 +08001429 if [[ ! -f ${BUILD_DIR}/build_abi.sh && ${BAZEL} == 0 ]]; then
Dezhen Wang850c0d22023-05-31 19:26:20 +08001430 echo "The directory of build does not exist";
1431 exit
1432 fi
1433
1434 ROOT_DIR=$(readlink -f $(dirname $0))
1435 if [[ ! -f ${ROOT_DIR}/${KERNEL_DIR}/init/main.c ]]; then
1436 ROOT_DIR=`pwd`
1437 if [[ ! -f ${ROOT_DIR}/${KERNEL_DIR}/init/main.c ]]; then
1438 echo "the file path of $0 is incorrect"
1439 exit
1440 fi
1441 fi
1442 export ROOT_DIR
1443
1444 CHECK_DEFCONFIG=${CHECK_DEFCONFIG:-0}
1445 MODULES_DEPEND=${MODULES_DEPEND:-0}
1446 if [[ ! -f ${KERNEL_BUILD_VAR_FILE} ]]; then
1447 export KERNEL_BUILD_VAR_FILE=`mktemp /tmp/kernel.XXXXXXXXXXXX`
1448 RM_KERNEL_BUILD_VAR_FILE=1
1449 fi
1450
1451 GKI_CONFIG=${GKI_CONFIG:-gki_debug}
1452
1453 export CROSS_COMPILE=
1454
1455 if [ "${ABI}" -eq "1" ]; then
1456 export OUT_DIR_SUFFIX="_abi"
1457 else
1458 OUT_DIR_SUFFIX=
1459 fi
1460}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001461export -f set_default_parameters
1462
1463function auto_patch_to_common_dir () {
1464 #first auto patch when param parse end
Dezhen Wang850c0d22023-05-31 19:26:20 +08001465
1466 if [[ -f ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/auto_patch/auto_patch.sh ]]; then
1467 export PATCH_PARM
1468 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/auto_patch/auto_patch.sh ${FULL_KERNEL_VERSION}
1469 fi
1470
1471 if [[ ${ONLY_PATCH} -eq "1" ]]; then
1472 cd ${CURRENT_DIR}
1473 exit
1474 fi
1475}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001476export -f auto_patch_to_common_dir
1477
Dezhen Wang850c0d22023-05-31 19:26:20 +08001478function handle_input_parameters_for_smarthome () {
1479 VA=
1480 ARGS=()
1481 for i in "$@"
1482 do
1483 case $i in
1484 --savedefconfig)
1485 SAVEDEFCONFIG=1
1486 shift
1487 ;;
1488 --menuconfig)
1489 MENUCONFIG=1
1490 shift
1491 ;;
1492 --dtb)
1493 DTB=1
1494 shift
1495 ;;
1496 --manual_insmod_module)
1497 MANUAL_INSMOD_MODULE=1
1498 shift
1499 ;;
1500 --patch)
1501 ONLY_PATCH=1
1502 shift
1503 ;;
1504 -h|--help)
1505 show_help
1506 exit 0
1507 ;;
1508 *)
1509 if [[ -n $1 ]];
1510 then
1511 if [[ -z ${VA} ]];
1512 then
1513 ARGS+=("$1")
1514 fi
1515 fi
1516 VA=
1517 shift
1518 ;;
1519 esac
1520 done
1521}
1522
1523export -f handle_input_parameters_for_smarthome
1524
1525function set_default_parameters_for_smarthome () {
1526 version_message=$(grep -rn BRANCH= ${KERNEL_DIR}/build.config.constants)
1527 version_message="common${version_message##*android}"
1528 if [[ -n ${FULL_KERNEL_VERSION} ]]; then
1529 if [[ "${FULL_KERNEL_VERSION}" != "${version_message}" ]]; then
1530 echo "kernel version is not match!!"
1531 exit
1532 fi
1533 else
1534 FULL_KERNEL_VERSION=${version_message}
1535 fi
1536
1537 tool_args=()
1538 prebuilts_paths=(
1539 CLANG_PREBUILT_BIN
1540 #BUILDTOOLS_PREBUILT_BIN
1541 )
1542 echo CC_CLANG=$CC_CLANG
1543 if [[ $CC_CLANG -eq "1" ]]; then
1544 source ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
1545 if [[ -n "${LLVM}" ]]; then
1546 tool_args+=("LLVM=1")
1547 fi
1548 #if [ -n "${DTC}" ]; then
1549 # tool_args+=("DTC=${DTC}")
1550 #fi
1551 for prebuilt_bin in "${prebuilts_paths[@]}"; do
1552 prebuilt_bin=\${${prebuilt_bin}}
1553 eval prebuilt_bin="${prebuilt_bin}"
1554 if [ -n "${prebuilt_bin}" ]; then
1555 PATH=${PATH//"${ROOT_DIR}\/${prebuilt_bin}:"}
1556 PATH=${ROOT_DIR}/${prebuilt_bin}:${PATH} # add the clang tool to env PATH
1557 fi
1558 done
1559 export PATH
1560 elif [[ -n $CROSS_COMPILE_TOOL ]]; then
1561 export CROSS_COMPILE=${CROSS_COMPILE_TOOL}
1562 fi
1563
1564 if [[ $ARCH == arm64 ]]; then
1565 OUTDIR=${ROOT_DIR}/out/kernel-5.15-64
1566 elif [[ $ARCH == arm ]]; then
1567 OUTDIR=${ROOT_DIR}/out/kernel-5.15-32
Dezhen Wang1176fad2023-06-09 11:22:17 +08001568 tool_args+=("LOADADDR=0x108000")
Dezhen Wang850c0d22023-05-31 19:26:20 +08001569 elif [[ $ARCH == riscv ]]; then
1570 OUTDIR=${ROOT_DIR}/out/riscv-kernel-5.15-64
1571 fi
1572 TOOL_ARGS="${tool_args[@]}"
1573
1574 OUT_DIR=${OUTDIR}/common
1575 mkdir -p ${OUT_DIR}
1576 if [ "${SKIP_RM_OUTDIR}" != "1" ] ; then
1577 rm -rf ${OUTDIR}
1578 fi
1579
1580 echo "========================================================"
1581 echo ""
1582 export DIST_DIR=$(readlink -m ${OUTDIR}/dist)
1583 export MODULES_STAGING_DIR=$(readlink -m ${OUTDIR}/staging)
1584 export OUT_AMLOGIC_DIR=$(readlink -m ${OUTDIR}/amlogic)
1585 echo OUTDIR=$OUTDIR DIST_DIR=$DIST_DIR MODULES_STAGING_DIR=$MODULES_STAGING_DIR KERNEL_DIR=$KERNEL_DIR
1586
1587
1588 source ${ROOT_DIR}/build/kernel/build_utils.sh
1589
1590 DTS_EXT_DIR=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/boot/dts/amlogic
1591 DTS_EXT_DIR=$(rel_path ${ROOT_DIR}/${DTS_EXT_DIR} ${KERNEL_DIR})
1592 export dtstree=${DTS_EXT_DIR}
1593 export DTC_INCLUDE=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/include
1594
1595 EXT_MODULES="
1596 ${EXT_MODULES}
1597 "
1598
1599 EXT_MODULES_CONFIG="
1600 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/ext_modules_config
1601 "
1602
1603 EXT_MODULES_PATH="
1604 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/ext_modules_path
1605 "
1606
1607 POST_KERNEL_BUILD_CMDS="prepare_module_build"
1608 EXTRA_CMDS="extra_cmds"
1609
1610 IN_KERNEL_MODULES=1
1611}
1612
1613export -f set_default_parameters_for_smarthome
1614
1615function savedefconfig_cmd_for_smarthome () {
1616 if [[ -n ${SAVEDEFCONFIG} ]]; then
1617 set -x
1618 make ARCH=${ARCH} -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${DEFCONFIG}
1619 make ARCH=${ARCH} -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} savedefconfig
Dezhen Wang1176fad2023-06-09 11:22:17 +08001620 rm ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/configs/${DEFCONFIG}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001621 cp -f ${OUT_DIR}/defconfig ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/configs/${DEFCONFIG}
1622 set +x
1623 exit
1624 fi
1625}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001626export -f savedefconfig_cmd_for_smarthome
1627
1628function only_build_dtb_for_smarthome () {
1629 if [[ -n ${DTB} ]]; then
1630 set -x
1631 make ARCH=${ARCH} -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} ${DEFCONFIG}
1632 make ARCH=${ARCH} -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} dtbs || exit
1633 set +x
1634 exit
1635 fi
1636}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001637export -f only_build_dtb_for_smarthome
1638
1639function make_menuconfig_cmd_for_smarthome () {
1640 if [[ -n ${MENUCONFIG} ]]; then
1641 set -x
1642 make ARCH=${ARCH} -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${DEFCONFIG}
1643 make ARCH=${ARCH} -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} menuconfig
1644 set +x
1645 exit
1646 fi
1647}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001648export -f make_menuconfig_cmd_for_smarthome
1649
1650function build_kernel_for_different_cpu_architecture () {
1651 set -x
1652 if [[ $ARCH == arm64 ]]; then
1653 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} ${DEFCONFIG}
1654 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} headers_install &&
1655 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} Image -j12 &&
1656 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} modules -j12 &&
1657 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} INSTALL_MOD_STRIP=1 modules_install -j12 &&
1658 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} dtbs -j12 || exit
Dezhen Wang850c0d22023-05-31 19:26:20 +08001659 elif [[ $ARCH == arm ]]; then
1660 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} ${DEFCONFIG}
1661 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} headers_install &&
1662 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} uImage -j12 &&
1663 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} modules -j12 &&
1664 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} INSTALL_MOD_STRIP=1 modules_install -j12 &&
1665 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} dtbs -j12 || exit
Dezhen Wang850c0d22023-05-31 19:26:20 +08001666 elif [[ $ARCH == riscv ]]; then
1667 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} ${DEFCONFIG}
1668 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} headers_install &&
1669 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} Image -j12 &&
1670 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} modules -j12 &&
1671 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} modules_install -j12 &&
1672 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} dtbs -j12 || exit
Dezhen Wang850c0d22023-05-31 19:26:20 +08001673 fi
1674 cp ${OUT_DIR}/arch/${ARCH}/boot/Image* ${DIST_DIR}
1675 cp ${OUT_DIR}/arch/${ARCH}/boot/uImage* ${DIST_DIR}
1676 cp ${OUT_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/boot/dts/amlogic/*.dtb ${DIST_DIR}
1677 cp ${OUT_DIR}/vmlinux ${DIST_DIR}
1678 set +x
1679}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001680export -f build_kernel_for_different_cpu_architecture
1681
1682function build_ext_modules() {
1683 for EXT_MOD in ${EXT_MODULES}; do
1684 EXT_MOD_REL=$(rel_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
1685 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
1686
1687 set -x
1688 make ARCH=${ARCH} -C ${ROOT_DIR}/${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1689 O=${OUT_DIR} ${TOOL_ARGS} -j12 || exit
1690 make ARCH=${ARCH} -C ${ROOT_DIR}/${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1691 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
1692 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
1693 INSTALL_MOD_DIR="extra/${EXT_MOD}" \
1694 INSTALL_MOD_STRIP=1 \
1695 modules_install -j12 || exit
1696 set +x
1697 done
1698}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001699export -f build_ext_modules
1700
1701function copy_modules_and_rebuild_rootfs_for_smarthome () {
Dezhen Wang1176fad2023-06-09 11:22:17 +08001702
1703 copy_modules_files_to_dist_dir
1704
1705 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
1706 echo "========================================================"
1707 echo "Rebuild rootfs in order to install modules!"
1708 rebuild_rootfs ${ARCH}
1709 echo "Build success!"
1710 else
1711 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
1712 fi
1713}
1714export -f copy_modules_and_rebuild_rootfs_for_smarthome
1715
1716function copy_modules_files_to_dist_dir () {
Dezhen Wang850c0d22023-05-31 19:26:20 +08001717 MODULES=$(find ${MODULES_STAGING_DIR} -type f -name "*.ko")
1718 if [ -n "${MODULES}" ]; then
1719 if [ -n "${IN_KERNEL_MODULES}" -o -n "${EXT_MODULES}" -o -n "${EXT_MODULES_MAKEFILE}" ]; then
1720 echo "========================================================"
1721 echo " Copying modules files"
1722 for module in ${MODULES}; do
1723 cp ${module} ${DIST_DIR}
1724 done
1725 if [ "${COMPRESS_MODULES}" = "1" ]; then
1726 echo " Archiving modules to ${MODULES_ARCHIVE}"
1727 tar --transform="s,.*/,," -czf ${DIST_DIR}/${MODULES_ARCHIVE} ${MODULES[@]}
1728 fi
1729 fi
Dezhen Wang850c0d22023-05-31 19:26:20 +08001730 fi
1731}
Dezhen Wang1176fad2023-06-09 11:22:17 +08001732export -f copy_modules_files_to_dist_dir
Dezhen Wang850c0d22023-05-31 19:26:20 +08001733
Dezhen Wang1176fad2023-06-09 11:22:17 +08001734function copy_files_to_dist_dir () {
1735 echo "========================================================"
1736 echo " Copying files"
1737 for FILE in ${FILES}; do
1738 if [ -f ${OUT_DIR}/${FILE} ]; then
1739 echo " $FILE"
1740 cp -p ${OUT_DIR}/${FILE} ${DIST_DIR}/
1741 elif [[ "${FILE}" =~ \.dtb|\.dtbo ]] && \
1742 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
1743 # DTS_EXT_DIR is recalculated before to be relative to KERNEL_DIR
1744 echo " $FILE"
1745 cp -p "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" "${DIST_DIR}/"
1746 else
1747 echo " $FILE is not a file, skipping"
1748 fi
1749 done
1750}
1751export -f copy_files_to_dist_dir
1752
1753function make_dtbo() {
1754 if [[ -n "${BUILD_DTBO_IMG}" ]]; then
1755 echo "========================================================"
1756 echo " Creating dtbo image at ${DIST_DIR}/dtbo.img"
1757 (
1758 cd ${OUT_DIR}
1759 mkdtimg create "${DIST_DIR}"/dtbo.img ${MKDTIMG_FLAGS} ${MKDTIMG_DTBOS}
1760 )
1761 fi
1762}
1763export -f make_dtbo
1764
1765function installing_UAPI_kernel_headers () {
1766 if [ -z "${SKIP_CP_KERNEL_HDR}" ]; then
1767 echo "========================================================"
1768 echo " Installing UAPI kernel headers:"
1769 mkdir -p "${KERNEL_UAPI_HEADERS_DIR}/usr"
1770 make -C ${OUT_DIR} O=${OUT_DIR} ${TOOL_ARGS} \
1771 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" "${MAKE_ARGS[@]}" \
1772 headers_install
1773 # The kernel makefiles create files named ..install.cmd and .install which
1774 # are only side products. We don't want those. Let's delete them.
1775 find ${KERNEL_UAPI_HEADERS_DIR} \( -name ..install.cmd -o -name .install \) -exec rm '{}' +
1776 KERNEL_UAPI_HEADERS_TAR=${DIST_DIR}/kernel-uapi-headers.tar.gz
1777 echo " Copying kernel UAPI headers to ${KERNEL_UAPI_HEADERS_TAR}"
1778 tar -czf ${KERNEL_UAPI_HEADERS_TAR} --directory=${KERNEL_UAPI_HEADERS_DIR} usr/
1779 fi
1780}
1781export -f installing_UAPI_kernel_headers
1782
1783function copy_kernel_headers_to_compress () {
1784 if [ -z "${SKIP_CP_KERNEL_HDR}" ] ; then
1785 echo "========================================================"
1786 KERNEL_HEADERS_TAR=${DIST_DIR}/kernel-headers.tar.gz
1787 echo " Copying kernel headers to ${KERNEL_HEADERS_TAR}"
1788 pushd $ROOT_DIR/$KERNEL_DIR
1789 find arch include $OUT_DIR -name *.h -print0 \
1790 | tar -czf $KERNEL_HEADERS_TAR \
1791 --absolute-names \
1792 --dereference \
1793 --transform "s,.*$OUT_DIR,," \
1794 --transform "s,^,kernel-headers/," \
1795 --null -T -
1796 popd
1797 fi
1798}
1799export -f copy_kernel_headers_to_compress
1800
1801function set_default_parameters_for_32bit () {
1802 tool_args=()
1803 prebuilts_paths=(
1804 CLANG_PREBUILT_BIN
1805 CLANGTOOLS_PREBUILT_BIN
1806 RUST_PREBUILT_BIN
1807 LZ4_PREBUILTS_BIN
1808 DTC_PREBUILTS_BIN
1809 LIBUFDT_PREBUILTS_BIN
1810 BUILDTOOLS_PREBUILT_BIN
1811 )
1812 echo CC_CLANG=$CC_CLANG
1813 if [[ $CC_CLANG -eq "1" ]]; then
1814 source ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
1815 if [[ -n "${LLVM}" ]]; then
1816 tool_args+=("LLVM=1")
1817 # Reset a bunch of variables that the kernel's top level Makefile does, just
1818 # in case someone tries to use these binaries in this script such as in
1819 # initramfs generation below.
1820 HOSTCC=clang
1821 HOSTCXX=clang++
1822 CC=clang
1823 LD=ld.lld
1824 AR=llvm-ar
1825 NM=llvm-nm
1826 OBJCOPY=llvm-objcopy
1827 OBJDUMP=llvm-objdump
1828 OBJSIZE=llvm-size
1829 READELF=llvm-readelf
1830 STRIP=llvm-strip
1831 else
1832 if [ -n "${HOSTCC}" ]; then
1833 tool_args+=("HOSTCC=${HOSTCC}")
1834 fi
1835
1836 if [ -n "${CC}" ]; then
1837 tool_args+=("CC=${CC}")
1838 if [ -z "${HOSTCC}" ]; then
1839 tool_args+=("HOSTCC=${CC}")
1840 fi
1841 fi
1842
1843 if [ -n "${LD}" ]; then
1844 tool_args+=("LD=${LD}" "HOSTLD=${LD}")
1845 fi
1846
1847 if [ -n "${NM}" ]; then
1848 tool_args+=("NM=${NM}")
1849 fi
1850
1851 if [ -n "${OBJCOPY}" ]; then
1852 tool_args+=("OBJCOPY=${OBJCOPY}")
1853 fi
1854 fi
1855
1856 if [ -n "${DTC}" ]; then
1857 tool_args+=("DTC=${DTC}")
1858 fi
1859 for prebuilt_bin in "${prebuilts_paths[@]}"; do
1860 prebuilt_bin=\${${prebuilt_bin}}
1861 eval prebuilt_bin="${prebuilt_bin}"
1862 if [ -n "${prebuilt_bin}" ]; then
1863 PATH=${PATH//"${ROOT_DIR}\/${prebuilt_bin}:"}
1864 PATH=${ROOT_DIR}/${prebuilt_bin}:${PATH} # add the clang tool to env PATH
1865 fi
1866 done
1867 export PATH
1868 elif [[ -n $CROSS_COMPILE_TOOL ]]; then
1869 export CROSS_COMPILE=${CROSS_COMPILE_TOOL}
1870 fi
1871
1872 # Have host compiler use LLD and compiler-rt.
1873 LLD_COMPILER_RT="-fuse-ld=lld --rtlib=compiler-rt"
1874 if [[ -n "${NDK_TRIPLE}" ]]; then
1875 NDK_DIR=${ROOT_DIR}/prebuilts/ndk-r23
1876
1877 if [[ ! -d "${NDK_DIR}" ]]; then
1878 # Kleaf/Bazel will checkout the ndk to a different directory than
1879 # build.sh.
1880 NDK_DIR=${ROOT_DIR}/external/prebuilt_ndk
1881 if [[ ! -d "${NDK_DIR}" ]]; then
1882 echo "ERROR: NDK_TRIPLE set, but unable to find prebuilts/ndk." 1>&2
1883 echo "Did you forget to checkout prebuilts/ndk?" 1>&2
1884 exit 1
1885 fi
1886 fi
1887 USERCFLAGS="--target=${NDK_TRIPLE} "
1888 USERCFLAGS+="--sysroot=${NDK_DIR}/toolchains/llvm/prebuilt/linux-x86_64/sysroot "
1889 # Some kernel headers trigger -Wunused-function for unused static functions
1890 # with clang; GCC does not warn about unused static inline functions. The
1891 # kernel sets __attribute__((maybe_unused)) on such functions when W=1 is
1892 # not set.
1893 USERCFLAGS+="-Wno-unused-function "
1894 # To help debug these flags, consider commenting back in the following, and
1895 # add `echo $@ > /tmp/log.txt` and `2>>/tmp/log.txt` to the invocation of $@
1896 # in scripts/cc-can-link.sh.
1897 #USERCFLAGS+=" -Wl,--verbose -v"
1898 # We need to set -fuse-ld=lld for Android's build env since AOSP LLVM's
1899 # clang is not configured to use LLD by default, and BFD has been
1900 # intentionally removed. This way CC_CAN_LINK can properly link the test in
1901 # scripts/cc-can-link.sh.
1902 USERLDFLAGS="${LLD_COMPILER_RT} "
1903 USERLDFLAGS+="--target=${NDK_TRIPLE} "
1904 else
1905 USERCFLAGS="--sysroot=/dev/null"
1906 fi
1907
1908 #setting_the_default_output_dir
1909 export COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}})
1910 export OUT_DIR=$(readlink -m ${COMMON_OUT_DIR}/${KERNEL_DIR})
1911 export DIST_DIR=$(readlink -m ${DIST_DIR:-${COMMON_OUT_DIR}/dist})
1912 export UNSTRIPPED_DIR=${DIST_DIR}/unstripped
1913 export UNSTRIPPED_MODULES_ARCHIVE=unstripped_modules.tar.gz
1914 export MODULES_ARCHIVE=modules.tar.gz
1915 export MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
1916 export MODULES_PRIVATE_DIR=$(readlink -m ${COMMON_OUT_DIR}/private)
1917 export KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
1918 export INITRAMFS_STAGING_DIR=${MODULES_STAGING_DIR}/initramfs_staging
1919 export SYSTEM_DLKM_STAGING_DIR=${MODULES_STAGING_DIR}/system_dlkm_staging
1920 export VENDOR_DLKM_STAGING_DIR=${MODULES_STAGING_DIR}/vendor_dlkm_staging
1921 export MKBOOTIMG_STAGING_DIR="${MODULES_STAGING_DIR}/mkbootimg_staging"
1922 export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
1923
1924 tool_args+=("LOADADDR=0x108000")
1925 tool_args+=("DEPMOD=depmod")
1926 TOOL_ARGS="${tool_args[@]}"
1927
1928 mkdir -p ${OUT_DIR}
1929 if [ "${SKIP_RM_OUTDIR}" != "1" ] ; then
1930 rm -rf ${COMMON_OUT_DIR}
1931 fi
1932
1933 source ${ROOT_DIR}/build/kernel/build_utils.sh
1934
1935 DTS_EXT_DIR=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/boot/dts/amlogic
1936 DTS_EXT_DIR=$(rel_path ${ROOT_DIR}/${DTS_EXT_DIR} ${KERNEL_DIR})
1937 export dtstree=${DTS_EXT_DIR}
1938 export DTC_INCLUDE=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/include
1939
1940 EXT_MODULES="
1941 ${EXT_MODULES}
1942 "
1943
1944 EXT_MODULES_CONFIG="
1945 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/ext_modules_config
1946 "
1947
1948 EXT_MODULES_PATH="
1949 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/ext_modules_path
1950 "
1951
1952 POST_KERNEL_BUILD_CMDS="prepare_module_build"
1953 EXTRA_CMDS="extra_cmds"
1954
1955 IN_KERNEL_MODULES=1
1956}
1957export -f set_default_parameters_for_32bit
1958
1959function generating_test_mappings_zip () {
1960 echo "========================================================"
1961 echo " Generating test_mappings.zip"
1962 TEST_MAPPING_FILES=${OUT_DIR}/test_mapping_files.txt
1963 find ${ROOT_DIR} -name TEST_MAPPING \
1964 -not -path "${ROOT_DIR}/\.git*" \
1965 -not -path "${ROOT_DIR}/\.repo*" \
1966 -not -path "${ROOT_DIR}/out*" \
1967 > ${TEST_MAPPING_FILES}
1968 soong_zip -o ${DIST_DIR}/test_mappings.zip -C ${ROOT_DIR} -l ${TEST_MAPPING_FILES}
1969}
1970export -f generating_test_mappings_zip
1971