blob: 17ebfcb00506a657a1b0f0b587a9f29ea7e6e916 [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}
Wanwei Jiange5426752023-07-03 00:56:39 +080018 else
Dezhen Wanga6806c52023-06-13 19:47:05 +080019 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}
20 fi
Wanwei Jiang51217812022-11-01 20:23:03 +080021 fi
22 rm ${temp_file}
23 else
Dezhen Wanga6806c52023-06-13 19:47:05 +080024 if [[ ${ARCH} == arm ]]; then
25 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}
26 else
27 if [[ ${GKI_CONFIG} == gki_20 ]]; then
28 if [[ -n ${CHECK_GKI_20} ]]; then
29 local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
30 echo "CONFIG_STMMAC_ETH=n" > ${temp_file}
31 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}
32 rm ${temp_file}
33 else
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}
35 fi
Wanwei Jiange5426752023-07-03 00:56:39 +080036 else
Dezhen Wanga6806c52023-06-13 19:47:05 +080037 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 +080038 fi
Wanwei Jiang51217812022-11-01 20:23:03 +080039 fi
wanwei.jiang6fdd3152022-08-01 20:35:05 +080040 fi
qinglin.li7a994a02022-12-05 15:04:40 +080041
qinglin.li62b23332023-06-25 10:37:41 +080042 if [[ ${UPGRADE_PROJECT} == r || ${UPGRADE_PROJECT} == R ]]; then
43 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_UPGRADE_R}
44 fi
45 if [[ ${UPGRADE_PROJECT} == p || ${UPGRADE_PROJECT} == P ]]; then
46 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${FRAGMENT_CONFIG_UPGRADE_P}
47 fi
48 if [[ ${UPGRADE_PROJECT} == s || ${UPGRADE_PROJECT} == S ]]; then
49 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}
50 fi
51 if [[ ${UPGRADE_PROJECT} == u || ${UPGRADE_PROJECT} == U ]]; then
52 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}
qinglin.li7a994a02022-12-05 15:04:40 +080053 fi
Dezhen Wangab7ba642023-03-15 14:10:44 +080054
Wanwei Jiangc65e4d32023-03-21 16:24:41 +080055 if [[ ${IN_BUILD_GKI_10} == 1 ]]; then
56 local temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
57 echo "CONFIG_MODULE_SIG_ALL=y" >> ${temp_file}
58 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${temp_file}
59 rm ${temp_file}
60 fi
Dezhen Wanga5f456a2023-05-05 17:40:31 +080061
62 if [[ -n ${DEV_CONFIGS} ]]; then
63 config_list=$(echo ${DEV_CONFIGS}|sed 's/+/ /g')
64 #verify the extra config is in the right path and merge the config
65 CONFIG_DIR=arch/${ARCH}/configs
66 for config_name in ${config_list[@]}
67 do
68 if [[ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/${CONFIG_DIR}/${config_name} ]]; then
69 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}
70 elif [[ -f ${config_name} ]]; then
71 KCONFIG_CONFIG=${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KCONFIG_DEFCONFIG} ${config_name}
72 else
73 echo "ERROR: config file ${config_name} is not in the right path!!"
74 exit
75 fi
76 done
77 fi
wanwei.jiang91776952021-11-19 13:10:32 +080078}
79export -f pre_defconfig_cmds
80
81function post_defconfig_cmds() {
Wanwei Jiang2d4f9742022-09-13 11:22:17 +080082 rm ${ROOT_DIR}/${KCONFIG_DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080083}
84export -f post_defconfig_cmds
85
86function read_ext_module_config() {
87 ALL_LINE=""
88 while read LINE
89 do
90 if [[ $LINE != \#* && $LINE != "" ]]; then
91 ALL_LINE="$ALL_LINE"" ""$LINE"
92 fi
93 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +080094
95 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080096}
97
pengzhao.liua923dea2023-06-25 09:58:20 +080098function autotest(){
99 if [[ -d ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/.git/hooks/ ]]; then
100 if [[ ! -f ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/.git/hooks/pre-commit ]]; then
101 cp ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/pre-commit ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/.git/hooks/pre-commit
102 cp ${KERNEL_DIR}/scripts/amlogic/pre-commit ${KERNEL_DIR}/.git/hooks/pre-commit
103 chmod +x ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/.git/hooks/pre-commit
104 chmod +x ${KERNEL_DIR}/.git/hooks/pre-commit
105 fi
106 fi
107}
108
wanwei.jiang91776952021-11-19 13:10:32 +0800109function read_ext_module_predefine() {
110 PRE_DEFINE=""
111
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800112 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +0800113 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
114 done
115
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800116 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +0800117 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
118 done
119
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800120 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +0800121}
122
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800123top_ext_drivers=top_ext_drivers
wanwei.jiang91776952021-11-19 13:10:32 +0800124function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800125 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800126 if [[ ! `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800127 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
128 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
129 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
130 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +0800131 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800132
133 for ext_module_config in ${EXT_MODULES_CONFIG}; do
134 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
135 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
136 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
137 done
138 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
139 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
140 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
141
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800142 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
143 if [[ -d ${top_ext_drivers} ]]; then
144 rm -rf ${top_ext_drivers}
145 fi
146 mkdir -p ${top_ext_drivers}
147 fi
148
149 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
150 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
151 fi
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800152 ext_modules=
153 for ext_module in ${EXT_MODULES}; do
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800154 module_abs_path=`readlink -e ${ext_module}`
155 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
156 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
157 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
158 cp -rf ${module_abs_path} ${top_ext_drivers}
159 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
160 fi
161 fi
162 ext_modules="${ext_modules} ${module_rel_path}"
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800163 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800164
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800165 for ext_module_path in ${EXT_MODULES_PATH}; do
166 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800167 while read LINE
168 do
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800169 module_abs_path=`readlink -e ${LINE}`
170 module_rel_path=$(rel_path ${module_abs_path} ${ROOT_DIR})
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800171 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
172 if [[ `echo ${module_rel_path} | grep "\.\.\/"` ]]; then
173 cp -rf ${module_abs_path} ${top_ext_drivers}
174 module_rel_path=${top_ext_drivers}/${module_abs_path##*/}
175 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800176 fi
177 ext_modules="${ext_modules} ${module_rel_path}"
178
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800179 done < ${temp_file}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800180 done
wanwei.jiangcb5c4c82022-04-25 16:47:24 +0800181 EXT_MODULES=${ext_modules}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800182
183 local flag=0
184 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
185 for ext_module in ${EXT_MODULES}; do
186 ext_mod_rel=$(rel_path ${ext_module} ${KERNEL_DIR})
187 if [[ ${flag} -eq "1" ]]; then
188 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
189 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${ext_module}/Makefile
190 sed -i "2 i ${extra_symbols}" ${ext_module}/Makefile
191 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${ext_module}/Makefile
192 echo "${ext_module}/Makefile add: ${extra_symbols}"
193 fi
194 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
195 flag=1
196 done
197 fi
198
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800199 export EXT_MODULES
200 echo EXT_MODULES=${EXT_MODULES}
201
202 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +0800203}
wanwei.jiang91776952021-11-19 13:10:32 +0800204export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +0800205
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800206function extra_cmds() {
Dezhen Wang1176fad2023-06-09 11:22:17 +0800207 echo "========================================================"
208 echo " Running extra build command(s):"
209
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800210 if [[ ${AUTO_ADD_EXT_SYMBOLS} -eq "1" ]]; then
211 for ext_module in ${EXT_MODULES}; do
212 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/,/# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ext_module}/Makefile
213 done
214 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800215
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800216 if [[ ${TOP_EXT_MODULE_COPY_BUILD} -eq "1" ]]; then
217 if [[ -d ${top_ext_drivers} ]]; then
218 rm -rf ${top_ext_drivers}
219 fi
wanwei.jiang8d4a5132022-04-28 16:43:54 +0800220 fi
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800221
222 for FILE in ${FILES}; do
223 if [[ "${FILE}" =~ \.dtbo ]] && \
224 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
225 MKDTIMG_DTBOS="${MKDTIMG_DTBOS} ${DIST_DIR}/${FILE}"
226 fi
227 done
228 export MKDTIMG_DTBOS
229
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800230 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800231 modules_install
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800232 set -x
233
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800234 local src_dir=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
235 pushd ${src_dir}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800236 cp modules.order modules_order.back
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800237 : > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800238 set +x
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800239 while read LINE
240 do
241 find -name ${LINE} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800242 done < ${OUT_AMLOGIC_DIR}/modules/modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800243 set -x
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800244 sed -i "s/^\.\///" modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800245 : > ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800246 ext_modules=
247 for ext_module in ${EXT_MODULES}; do
248 if [[ ${ext_module} =~ "../" ]]; then
249 ext_module_old=${ext_module}
250 ext_module=${ext_module//\.\.\//}
251 ext_dir=$(dirname ${ext_module})
252 [[ -d extra/${ext_module} ]] && rm -rf extra/${ext_dir}
253 mkdir -p extra/${ext_dir}
254 cp -rf extra/${ext_module_old} extra/${ext_dir}
255
256 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
257 ext_dir_top=${ext_module%/*}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800258 sed -i "s/\.\.\///g" ${ext_modules_order_file}
259 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800260 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800261 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800262 else
263 ext_modules_order_file=$(ls extra/${ext_module}/modules.order.*)
wanwei.jiangf73b2202022-07-23 16:00:44 +0800264 cat ${ext_modules_order_file} >> modules.order
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800265 cat ${ext_modules_order_file} | awk -F/ '{print $NF}' >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
wanwei.jiangf73b2202022-07-23 16:00:44 +0800266 : > ${ext_modules_order_file}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800267 fi
268 ext_modules="${ext_modules} ${ext_module}"
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800269 done
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800270 EXT_MODULES=${ext_modules}
271 echo EXT_MODULES=${EXT_MODULES}
272 export EXT_MODULES
wanwei.jiangf73b2202022-07-23 16:00:44 +0800273
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800274 head -n ${ramdisk_last_line} modules.order > vendor_boot_modules
wanwei.jiangf73b2202022-07-23 16:00:44 +0800275 file_last_line=`sed -n "$=" modules.order`
276 let line=${file_last_line}-${ramdisk_last_line}
277 tail -n ${line} modules.order > vendor_dlkm_modules
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800278 export MODULES_LIST=${src_dir}/vendor_boot_modules
279 if [[ "${ARCH}" = "arm64" && -z ${FAST_BUILD} ]]; then
Lei Zhang96efea62022-09-02 14:55:06 +0800280 export VENDOR_DLKM_MODULES_LIST=${src_dir}/vendor_dlkm_modules
281 fi
wanwei.jiangf73b2202022-07-23 16:00:44 +0800282
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800283 popd
wanwei.jiang1d154992022-05-30 14:56:26 +0800284
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800285 if [[ -z ${ANDROID_PROJECT} ]] && [[ -d ${OUT_DIR}/${DTS_EXT_DIR} ]]; then
wanwei.jiang1d154992022-05-30 14:56:26 +0800286 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
287 fi
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800288
289 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
290 : > ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangb2ed83c2022-09-09 14:01:20 +0800291 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800292 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
293 echo "OUT_DIR=${OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
294 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800295 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800296 echo "MODULES_STAGING_DIR=${MODULES_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
297 echo "MODULES_PRIVATE_DIR=${MODULES_PRIVATE_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
298 echo "INITRAMFS_STAGING_DIR=${INITRAMFS_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
299 echo "SYSTEM_DLKM_STAGING_DIR=${SYSTEM_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
300 echo "VENDOR_DLKM_STAGING_DIR=${VENDOR_DLKM_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
301 echo "MKBOOTIMG_STAGING_DIR=${MKBOOTIMG_STAGING_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800302 echo "DIST_GKI_DIR=${DIST_GKI_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
303 echo "FULL_KERNEL_VERSION=${FULL_KERNEL_VERSION}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8fe00342023-05-16 22:53:14 +0800304 echo "GKI_MODULES_LOAD_WHITE_LIST=\"${GKI_MODULES_LOAD_WHITE_LIST[*]}\"" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8042e472023-06-06 14:12:32 +0800305 echo "BAZEL=${BAZEL}" >> ${KERNEL_BUILD_VAR_FILE}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800306 fi
Wanwei Jianga07f9a52022-09-30 18:40:40 +0800307
308 for module_path in ${PREBUILT_MODULES_PATH}; do
309 find ${module_path} -type f -name "*.ko" -exec cp {} ${DIST_DIR} \;
310 done
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800311}
wanwei.jiang5c861ae2022-04-21 00:51:50 +0800312export -f extra_cmds
313
Wanwei Jiang2218b892023-03-17 17:31:21 +0800314function bazel_extra_cmds() {
315 modules_install
316
317 if [[ -f ${KERNEL_BUILD_VAR_FILE} ]]; then
318 : > ${KERNEL_BUILD_VAR_FILE}
319 echo "KERNEL_DIR=${KERNEL_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
320 echo "COMMON_OUT_DIR=${COMMON_OUT_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
321 echo "DIST_DIR=${DIST_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
322 echo "OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8fe00342023-05-16 22:53:14 +0800323 echo "GKI_MODULES_LOAD_WHITE_LIST=\"${GKI_MODULES_LOAD_WHITE_LIST[*]}\"" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang8042e472023-06-06 14:12:32 +0800324 echo "BAZEL=${BAZEL}" >> ${KERNEL_BUILD_VAR_FILE}
Wanwei Jiang2218b892023-03-17 17:31:21 +0800325 fi
326
327 if [[ ${GKI_CONFIG} != gki_20 ]]; then
328 [[ -f ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz ]] && rm -f ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
329 mv ${DIST_DIR}/system_dlkm_staging_archive.tar.gz ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
330 [[ -d ${DIST_DIR}/system_dlkm_gki10 ]] && rm -rf ${DIST_DIR}/system_dlkm_gki10
331 mkdir ${DIST_DIR}/system_dlkm_gki10
332 pushd ${DIST_DIR}/system_dlkm_gki10
333 tar zxf ${DIST_DIR}/system_dlkm_staging_archive_back.tar.gz
334 find -name "*.ko" | while read module; do
Wanwei Jiang475245b2023-05-10 21:06:52 +0800335 module_name=${module##*/}
Wanwei Jiang2218b892023-03-17 17:31:21 +0800336 if [[ ! `grep "/${module_name}" ${DIST_DIR}/system_dlkm.modules.load` ]]; then
337 rm -f ${module}
338 fi
339 done
340 tar czf ${DIST_DIR}/system_dlkm_staging_archive.tar.gz lib
341 popd
342 rm -rf ${DIST_DIR}/system_dlkm_gki10
343 fi
344}
345
346export -f bazel_extra_cmds
347
wanwei.jiang612a8882021-11-23 17:12:23 +0800348function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800349 local ko=$1
350 local loop
qinglin.lia284a932022-09-21 18:07:38 +0800351 for loop in `grep "^$ko:" modules.dep | sed 's/.*://'`; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800352 mod_probe $loop
353 echo insmod $loop >> __install.sh
354 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800355}
356
Wanwei Jiang571dde62022-11-17 14:37:41 +0800357function mod_probe_recovery() {
358 local ko=$1
359 local loop
360 for loop in `grep "^$ko:" modules_recovery.dep | sed 's/.*://'`; do
361 mod_probe_recovery $loop
362 echo insmod $loop >> __install_recovery.sh
363 done
364}
365
wanwei.jiangb12abc82021-12-25 22:17:10 +0800366function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800367 if [[ -n $1 ]]; then
368 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800369 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800370
371 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
372 cp modules.dep modules.dep.temp
373
374 soc_module=()
375 for chip in ${chips[@]}; do
376 chip_module=`ls amlogic-*-soc-${chip}.ko`
377 soc_module=(${soc_module[@]} ${chip_module[@]})
378 done
379 echo soc_module=${soc_module[*]}
380
381 delete_soc_module=()
382 if [[ ${#soc_module[@]} == 0 ]]; then
383 echo "Use all soc module"
384 else
385 for module in `ls amlogic-*-soc-*`; do
386 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
387 echo Delete soc module: ${module}
388 sed -n "/${module}:/p" modules.dep.temp
389 sed -i "/${module}:/d" modules.dep.temp
390 delete_soc_module=(${delete_soc_module[@]} ${module})
391 fi
392 done
393 echo delete_soc_module=${delete_soc_module[*]}
394 fi
395
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800396 if [[ -n ${CLK_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800397 delete_clk_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800398 for module in `ls amlogic-clk-soc-*`; do
399 if [[ "${CLK_SOC_MODULE}" != "${module}" ]] ; then
400 echo Delete clk soc module: ${module}
401 sed -n "/${module}:/p" modules.dep.temp
402 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800403 delete_clk_soc_modules=(${delete_clk_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800404 fi
405 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800406 echo delete_clk_soc_modules=${delete_clk_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800407 fi
408
409 if [[ -n ${PINCTRL_SOC_MODULE} ]]; then
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800410 delete_pinctrl_soc_modules=()
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800411 for module in `ls amlogic-pinctrl-soc-*`; do
412 if [[ "${PINCTRL_SOC_MODULE}" != "${module}" ]] ; then
413 echo Delete pinctrl soc module: ${module}
414 sed -n "/${module}:/p" modules.dep.temp
415 sed -i "/${module}:/d" modules.dep.temp
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800416 delete_pinctrl_soc_modules=(${delete_pinctrl_soc_modules[@]} ${module})
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800417 fi
418 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800419 echo delete_pinctrl_soc_modules=${delete_pinctrl_soc_modules[*]}
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800420 fi
421
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800422 in_line_i=a
423 delete_type_modules=()
424 echo "TYPE_MODULE_SELECT_MODULE=${TYPE_MODULE_SELECT_MODULE}"
425 mkdir temp_dir
426 cd temp_dir
427 in_temp_dir=y
428 for element in ${TYPE_MODULE_SELECT_MODULE}; do
429 if [[ ${in_temp_dir} = y ]]; then
430 cd ../
431 rm -r temp_dir
432 in_temp_dir=
433 fi
434 if [[ ${in_line_i} = a ]]; then
435 in_line_i=b
436 type_module=${element}
437 select_modules_i=0
438 select_modules_count=
439 select_modules=
440 elif [[ ${in_line_i} = b ]]; then
441 in_line_i=c
442 select_modules_count=${element}
443 else
444 let select_modules_i+=1
445 select_modules="${select_modules} ${element}"
446 if [[ ${select_modules_i} -eq ${select_modules_count} ]]; then
447 in_line_i=a
448 echo type_module=$type_module select_modules=$select_modules
449 for module in `ls ${type_module}`; do
450 dont_delete_module=0
451 for select_module in ${select_modules}; do
452 if [[ "${select_module}" == "${module}" ]] ; then
453 dont_delete_module=1
454 break;
455 fi
456 done
457 if [[ ${dont_delete_module} != 1 ]]; then
458 echo Delete module: ${module}
459 sed -n "/${module}:/p" modules.dep.temp
460 sed -i "/${module}:/d" modules.dep.temp
461 delete_type_modules=(${delete_type_modules[@]} ${module})
462 fi
463 done
464 echo delete_type_modules=${delete_type_modules[*]}
465 fi
466 fi
467 done
468 if [[ -n ${in_temp_dir} ]]; then
469 cd ../
470 rm -r temp_dir
471 fi
472
473 black_modules=()
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800474 mkdir service_module
475 echo MODULES_SERVICE_LOAD_LIST=${MODULES_SERVICE_LOAD_LIST[@]}
476 BLACK_AND_SERVICE_LIST=(${MODULES_LOAD_BLACK_LIST[@]} ${MODULES_SERVICE_LOAD_LIST[@]})
477 echo ${BLACK_AND_SERVICE_LIST[@]}
478 for module in ${BLACK_AND_SERVICE_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800479 modules=`ls ${module}*`
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800480 black_modules=(${black_modules[@]} ${modules[@]})
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800481 done
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800482 if [[ ${#black_modules[@]} == 0 ]]; then
483 echo "black_modules is null, don't delete modules, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800484 else
Wanwei Jiangba4a8f42022-12-18 18:05:38 +0800485 echo black_modules=${black_modules[*]}
486 for module in ${black_modules[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800487 echo Delete module: ${module}
488 sed -n "/${module}:/p" modules.dep.temp
489 sed -i "/${module}:/d" modules.dep.temp
490 done
491 fi
492
Wanwei Jiang475245b2023-05-10 21:06:52 +0800493 GKI_MODULES_LOAD_BLACK_LIST=()
494 if [[ "${FULL_KERNEL_VERSION}" != "common13-5.15" ]]; then
495 gki_modules_temp_file=`mktemp /tmp/config.XXXXXXXXXXXX`
qinglin.lieafebcf2023-06-27 12:48:22 +0800496 if [[ ${BAZEL} == "1" ]]; then
497 cp $DIST_DIR/system_dlkm.modules.load ${gki_modules_temp_file}
498 else
499 rm -f ${gki_modules_temp_file}
500 cat ${ROOT_DIR}/${KERNEL_DIR}/modules.bzl |grep ko | while read LINE
501 do
502 echo $LINE | sed 's/^[^"]*"//' | sed 's/".*$//' >> ${gki_modules_temp_file}
503 done
504 fi
Wanwei Jiang475245b2023-05-10 21:06:52 +0800505
506 for module in ${GKI_MODULES_LOAD_WHITE_LIST[@]}; do
507 sed -i "/\/${module}/d" ${gki_modules_temp_file}
508 done
509
510 for module in `cat ${gki_modules_temp_file}`; do
511 module=${module##*/}
512 GKI_MODULES_LOAD_BLACK_LIST[${#GKI_MODULES_LOAD_BLACK_LIST[*]}]=${module}
513 done
514 rm -f ${gki_modules_temp_file}
515
516 for module in ${GKI_MODULES_LOAD_BLACK_LIST[@]}; do
517 echo Delete module: ${module}
518 sed -n "/${module}:/p" modules.dep.temp
519 sed -i "/${module}:/d" modules.dep.temp
520 done
521 fi
522
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800523 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
Wanwei Jiang475245b2023-05-10 21:06:52 +0800524 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 +0800525 for module in ${delete_modules[@]}; do
Wanwei Jiang5b00e512022-11-05 16:53:13 +0800526 if [[ ! `ls $module` ]]; then
527 continue
528 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800529 match=`sed -n "/${module}/=" modules.dep.temp1`
530 for match in ${match[@]}; do
531 match_count=(${match_count[@]} $match)
532 done
533 if [[ ${#match_count[@]} != 0 ]]; then
534 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800535 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800536 exit
537 fi
Dezhen Wang45dfcb02023-02-13 17:41:44 +0800538 if [[ -n ${ANDROID_PROJECT} ]]; then
539 for service_module_temp in ${MODULES_SERVICE_LOAD_LIST[@]}; do
540 if [[ ${module} = ${service_module_temp} ]]; then
541 mv ${module} service_module
542 fi
543 done
544 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800545 rm -f ${module}
546 done
547 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800548 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800549
550 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
551 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800552 sed -n "/${module}:/p" modules.dep.temp
553 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
554 sed -i "/${module}:/d" modules.dep.temp
555 sed -n "/${module}.*\.ko:/p" modules.dep.temp
556 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
557 sed -i "/${module}.*\.ko:/d" modules.dep.temp
558 done
559
Wanwei Jiang571dde62022-11-17 14:37:41 +0800560 if [[ -n ${ANDROID_PROJECT} ]]; then
561 cp modules.dep.temp modules_recovery.dep.temp
562 cp modules.dep.temp1 modules_recovery.dep.temp1
563 fi
564
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800565 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
566 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
567 sed -n "/${module}:/p" modules.dep.temp
568 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
569 sed -i "/${module}:/d" modules.dep.temp
570 sed -n "/${module}.*\.ko:/p" modules.dep.temp
571 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
572 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800573 done
574
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800575 if [ -f modules.dep.temp2 ]; then
576 rm modules.dep.temp2
577 fi
578 touch modules.dep.temp2
579 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
580 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
581 sed -n "/${module}:/p" modules.dep.temp
582 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
583 sed -i "/${module}:/d" modules.dep.temp
584 sed -n "/${module}.*\.ko:/p" modules.dep.temp
585 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
586 sed -i "/${module}.*\.ko:/d" modules.dep.temp
587 done
588
589 cat modules.dep.temp >> modules.dep.temp1
590 cat modules.dep.temp2 >> modules.dep.temp1
591
wanwei.jiangb12abc82021-12-25 22:17:10 +0800592 cp modules.dep.temp1 modules.dep
593 rm modules.dep.temp
594 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800595 rm modules.dep.temp2
Wanwei Jiang571dde62022-11-17 14:37:41 +0800596
597 if [[ -n ${ANDROID_PROJECT} ]]; then
598 for module in ${RECOVERY_MODULES_LOAD_LIST[@]}; do
599 echo RECOVERY_MODULES_LOAD_LIST: $module
600 sed -n "/${module}:/p" modules_recovery.dep.temp
601 sed -n "/${module}:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
602 sed -i "/${module}:/d" modules_recovery.dep.temp
603 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp
604 sed -n "/${module}.*\.ko:/p" modules_recovery.dep.temp >> modules_recovery.dep.temp1
605 sed -i "/${module}.*\.ko:/d" modules_recovery.dep.temp
606 done
607
608 cat modules_recovery.dep.temp >> modules_recovery.dep.temp1
609
610 cp modules_recovery.dep.temp1 modules_recovery.dep
611 rm modules_recovery.dep.temp
612 rm modules_recovery.dep.temp1
613 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800614}
615
Wanwei Jiang571dde62022-11-17 14:37:41 +0800616create_ramdisk_vendor_recovery() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800617 install_temp=$1
Wanwei Jiang571dde62022-11-17 14:37:41 +0800618 if [[ -n ${ANDROID_PROJECT} ]]; then
619 recovery_install_temp=$2
620 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800621 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
Wanwei Jiang9173e462022-09-29 00:58:33 +0800622 ramdisk_module_i=${#RAMDISK_MODULES_LOAD_LIST[@]}
623 while [ ${ramdisk_module_i} -gt 0 ]; do
624 let ramdisk_module_i--
625 echo ramdisk_module_i=$ramdisk_module_i ${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
626 if [[ `grep "${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}" ${install_temp}` ]]; then
627 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${ramdisk_module_i}]}
628 break;
629 fi
630 done
631 # last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
qinglin.libce54712023-05-08 13:56:31 +0800632 if [[ -n ${last_ramdisk_module} ]]; then
633 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
634 for line in ${last_ramdisk_module_line}; do
635 ramdisk_last_line=${line}
636 done
637 else
638 ramdisk_last_line=1
639 fi
wanwei.jiangf73b2202022-07-23 16:00:44 +0800640 export ramdisk_last_line
Wanwei Jiang571dde62022-11-17 14:37:41 +0800641
642 if [[ -n ${ANDROID_PROJECT} ]]; then
643 recovery_module_i=${#RECOVERY_MODULES_LOAD_LIST[@]}
qinglin.lidba324f2023-03-02 19:56:21 +0800644 #when RECOVERY_MODULES_LOAD_LIST is NULL
645 if [ ${#RECOVERY_MODULES_LOAD_LIST[@]} -eq 0 ]; then
646 last_recovery_module=${last_ramdisk_module}
647 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800648 while [ ${recovery_module_i} -gt 0 ]; do
649 let recovery_module_i--
650 echo recovery_module_i=$recovery_module_i ${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}
651 if [[ `grep "${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}" ${recovery_install_temp}` ]]; then
652 last_recovery_module=${RECOVERY_MODULES_LOAD_LIST[${recovery_module_i}]}
653 break;
654 fi
655 done
656 # last_recovery_module=${RECOVERY_MODULES_LOAD_LIST[${#RECOVERY_MODULES_LOAD_LIST[@]}-1]}
qinglin.libce54712023-05-08 13:56:31 +0800657 if [[ -n ${last_recovery_module} ]]; then
658 last_recovery_module_line=`sed -n "/${last_recovery_module}/=" ${recovery_install_temp}`
659 for line in ${last_recovery_module_line}; do
660 recovery_last_line=${line}
661 done
662 else
663 recovery_last_line=1
664 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800665 sed -n "${ramdisk_last_line},${recovery_last_line}p" ${recovery_install_temp} > recovery_install.sh
qinglin.libce54712023-05-08 13:56:31 +0800666 if [[ -n ${last_ramdisk_module} ]]; then
667 sed -i "1d" recovery_install.sh
668 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800669 mkdir recovery
670 cat recovery_install.sh | cut -d ' ' -f 2 > recovery/recovery_modules.order
qinglin.lidba324f2023-03-02 19:56:21 +0800671 if [ ${#RECOVERY_MODULES_LOAD_LIST[@]} -ne 0 ]; then
672 cat recovery_install.sh | cut -d ' ' -f 2 | xargs cp -t recovery/
673 fi
Wanwei Jiang571dde62022-11-17 14:37:41 +0800674 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' recovery_install.sh
675 echo "echo Install recovery modules success!" >> recovery_install.sh
676 chmod 755 recovery_install.sh
677 mv recovery_install.sh recovery/
678 fi
679
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800680 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800681 mkdir ramdisk
wanwei.jiangf73b2202022-07-23 16:00:44 +0800682 cat ramdisk_install.sh | cut -d ' ' -f 2 > ramdisk/ramdisk_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800683 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800684
qinglin.lie5b951e2022-06-07 16:13:44 +0800685 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' ramdisk_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800686 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
687 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800688 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800689
690 file_last_line=`sed -n "$=" ${install_temp}`
691 let line=${file_last_line}-${ramdisk_last_line}
692 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800693 mkdir vendor
wanwei.jiangf73b2202022-07-23 16:00:44 +0800694 cat vendor_install.sh | cut -d ' ' -f 2 > vendor/vendor_modules.order
wanwei.jiang50759e12022-03-24 12:36:17 +0800695 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800696
qinglin.lie5b951e2022-06-07 16:13:44 +0800697 sed -i '1s/^/#!\/bin\/sh\n\nset -x\n/' vendor_install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800698 echo "echo Install vendor modules success!" >> vendor_install.sh
699 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800700 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800701}
702
wanwei.jiang612a8882021-11-23 17:12:23 +0800703function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800704 arg1=$1
705
Wanwei Jiang2218b892023-03-17 17:31:21 +0800706 export OUT_AMLOGIC_DIR=${OUT_AMLOGIC_DIR:-$(readlink -m ${COMMON_OUT_DIR}/amlogic)}
707 echo $OUT_AMLOGIC_DIR
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800708 rm -rf ${OUT_AMLOGIC_DIR}
709 mkdir -p ${OUT_AMLOGIC_DIR}
710 mkdir -p ${OUT_AMLOGIC_DIR}/modules
711 mkdir -p ${OUT_AMLOGIC_DIR}/ext_modules
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800712 mkdir -p ${OUT_AMLOGIC_DIR}/symbols
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800713
Wanwei Jiang2218b892023-03-17 17:31:21 +0800714 if [[ ${BAZEL} == "1" ]]; then
715 local output="out/bazel/output_user_root"
716 for dir in `ls ${output}`; do
717 if [[ ${dir} =~ ^[0-9A-Fa-f]*$ ]]; then
718 digit_output=${output}/${dir}
719 break
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800720 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800721 done
722
Wanwei Jiang0df84602023-05-05 14:40:42 +0800723 while read module
724 do
Wanwei Jiang475245b2023-05-10 21:06:52 +0800725 module_name=${module##*/}
Wanwei Jiang0df84602023-05-05 14:40:42 +0800726 if [[ `echo ${module} | grep "^kernel\/"` ]]; then
727 if [[ -f ${DIST_DIR}/${module_name} ]]; then
728 cp ${DIST_DIR}/${module_name} ${OUT_AMLOGIC_DIR}/modules
729 else
730 module=`find ${digit_output}/execroot/ -name ${module_name} | grep "amlogic"`
731 cp ${module} ${OUT_AMLOGIC_DIR}/modules
732 fi
733 elif [[ `echo ${module} | grep "^extra\/"` ]]; then
734 cp ${DIST_DIR}/${module_name} ${OUT_AMLOGIC_DIR}/ext_modules
Wanwei Jiang2218b892023-03-17 17:31:21 +0800735 else
Wanwei Jiang0df84602023-05-05 14:40:42 +0800736 echo "warning unrecognized module: ${module}"
Wanwei Jiang2218b892023-03-17 17:31:21 +0800737 fi
Wanwei Jiang0df84602023-05-05 14:40:42 +0800738 done < ${DIST_DIR}/modules.load
Wanwei Jiang2218b892023-03-17 17:31:21 +0800739
740 dep_file=`find ${digit_output}/execroot/ -name *.dep | grep "amlogic"`
741 cp ${dep_file} ${OUT_AMLOGIC_DIR}/modules/full_modules.dep
Wanwei Jiang0df84602023-05-05 14:40:42 +0800742 grep -E "^kernel\/" ${dep_file} > ${OUT_AMLOGIC_DIR}/modules/modules.dep
Wanwei Jiang2218b892023-03-17 17:31:21 +0800743 touch ${module} ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
744 for order_file in `find ${digit_output}/execroot/ -name "modules.order.*" | grep "amlogic"`; do
745 echo "# ${order_file}" >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
746 cat ${order_file} >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
747 echo >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
748 done
749 else
750 local MODULES_ROOT_DIR=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
751 pushd ${MODULES_ROOT_DIR}
752 local common_drivers=${COMMON_DRIVERS_DIR##*/}
753 local modules_list=$(find -type f -name "*.ko")
754 for module in ${modules_list}; do
755 if [[ -n ${ANDROID_PROJECT} ]]; then # copy internal build modules
756 if [[ `echo ${module} | grep -E "\.\/kernel\/|\/${common_drivers}\/"` ]]; then
757 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
758 else
759 cp ${module} ${OUT_AMLOGIC_DIR}/ext_modules/
760 fi
761 else # copy all modules, include external modules
762 cp ${module} ${OUT_AMLOGIC_DIR}/modules/
763 fi
764 done
765
766 if [[ -n ${ANDROID_PROJECT} ]]; then # internal build modules
767 grep -E "^kernel\/|^${common_drivers}\/" modules.dep > ${OUT_AMLOGIC_DIR}/modules/modules.dep
768 else # all modules, include external modules
769 cp modules.dep ${OUT_AMLOGIC_DIR}/modules
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800770 fi
Wanwei Jiang2218b892023-03-17 17:31:21 +0800771 popd
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800772 fi
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800773 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang612a8882021-11-23 17:12:23 +0800774 sed -i 's#[^ ]*/##g' modules.dep
775
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800776 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800777
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800778 touch __install.sh
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800779 touch modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800780 for loop in `cat modules.dep | sed 's/:.*//'`; do
781 mod_probe $loop
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800782 echo $loop >> modules.order
wanwei.jiang612a8882021-11-23 17:12:23 +0800783 echo insmod $loop >> __install.sh
784 done
785
786 cat __install.sh | awk ' {
787 if (!cnt[$2]) {
788 print $0;
789 cnt[$2]++;
790 }
791 }' > __install.sh.tmp
792
Wanwei Jiangbf119d22022-10-27 09:49:49 +0800793 cp modules.order modules.order.back
794 cut -d ' ' -f 2 __install.sh.tmp > modules.order
Wanwei Jiang571dde62022-11-17 14:37:41 +0800795
796 if [[ -n ${ANDROID_PROJECT} ]]; then
797 touch __install_recovery.sh
798 touch modules_recovery.order
799 for loop in `cat modules_recovery.dep | sed 's/:.*//'`; do
800 mod_probe_recovery $loop
801 echo $loop >> modules_recovery.order
802 echo insmod $loop >> __install_recovery.sh
803 done
804
805 cat __install_recovery.sh | awk ' {
806 if (!cnt[$2]) {
807 print $0;
808 cnt[$2]++;
809 }
810 }' > __install_recovery.sh.tmp
811
812 cut -d ' ' -f 2 __install_recovery.sh.tmp > modules_recovery.order
813 fi
814 create_ramdisk_vendor_recovery __install.sh.tmp __install_recovery.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800815
Dezhen Wang124ad7d2023-02-06 15:35:14 +0800816 if [[ -n ${MANUAL_INSMOD_MODULE} ]]; then
817 install_file=manual_install.sh
818 else
819 install_file=install.sh
820 fi
821 echo "#!/bin/sh" > ${install_file}
822 echo "cd ramdisk" >> ${install_file}
823 echo "./ramdisk_install.sh" >> ${install_file}
824 echo "cd ../vendor" >> ${install_file}
825 echo "./vendor_install.sh" >> ${install_file}
826 echo "cd ../" >> ${install_file}
827 chmod 755 ${install_file}
wanwei.jiang612a8882021-11-23 17:12:23 +0800828
829 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
Wanwei Jianga5977bd2022-08-24 22:43:40 +0800830 rm __install.sh __install.sh.tmp
wanwei.jiang612a8882021-11-23 17:12:23 +0800831
Wanwei Jiang571dde62022-11-17 14:37:41 +0800832 if [[ -n ${ANDROID_PROJECT} ]]; then
833 rm __install_recovery.sh __install_recovery.sh.tmp
834 fi
835
wanwei.jiang236e9a32021-12-07 16:34:14 +0800836 popd
Wanwei Jiangae4d7c12023-02-17 19:22:04 +0800837
Wanwei Jiang2218b892023-03-17 17:31:21 +0800838 if [[ ${BAZEL} == "1" ]]; then
839 cp ${DIST_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
840
841 find ${digit_output}/execroot -name *.ko | grep "unstripped" | while read module; do
842 cp ${module} ${OUT_AMLOGIC_DIR}/symbols
843 chmod +w ${OUT_AMLOGIC_DIR}/symbols/$(basename ${module})
844 done
845 chmod -w ${OUT_AMLOGIC_DIR}/symbols/*.ko
846 else
847 cp ${OUT_DIR}/vmlinux ${OUT_AMLOGIC_DIR}/symbols
848 find ${OUT_DIR} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
849 for ext_module in ${EXT_MODULES}; do
850 find ${COMMON_OUT_DIR}/${ext_module} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols \;
851 done
852 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800853}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800854export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800855
Wanwei Jiang2218b892023-03-17 17:31:21 +0800856function rename_external_module_name() {
857 local external_coppied
858 local vendor_coppied
Wanwei Jiang92c89432023-05-15 23:57:16 +0800859 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 +0800860 target_module_name=`echo ${module_line%%:*} | sed '/^#/d;/^$/d'`
861 modules_name=`echo ${module_line##:*} | sed '/^#/d;/^$/d'`
862 [[ -f ${OUT_AMLOGIC_DIR}/ext_modules/${target_module_name} ]] && external_coppied=1
863 [[ -f ${OUT_AMLOGIC_DIR}/modules/vendor/${target_module_name} ]] && vendor_coppied=1
864 echo target_module_name=$target_module_name modules_name=$modules_name external_coppied=$external_coppied vendor_coppied=$vendor_coppied
865 for module in ${modules_name}; do
866 echo module=$module
867 if [[ -f ${OUT_AMLOGIC_DIR}/ext_modules/${module} ]]; then
868 if [[ -z ${external_coppied} ]]; then
869 cp ${OUT_AMLOGIC_DIR}/ext_modules/${module} ${OUT_AMLOGIC_DIR}/ext_modules/${target_module_name}
870 external_coppied=1
871 fi
872 rm -f ${OUT_AMLOGIC_DIR}/ext_modules/${module}
873 fi
874 if [[ -f ${OUT_AMLOGIC_DIR}/modules/vendor/${module} ]]; then
875 if [[ -z ${vendor_coppied} ]]; then
876 cp ${OUT_AMLOGIC_DIR}/modules/vendor/${module} ${OUT_AMLOGIC_DIR}/modules/vendor/${target_module_name}
877 vendor_coppied=1
878 fi
879 rm -f ${OUT_AMLOGIC_DIR}/modules/vendor/${module}
880 fi
881 done
882 external_coppied=
883 vendor_coppied=
884 done
885}
886export -f rename_external_module_name
887
Dezhen Wang5ad119c2023-05-04 15:07:49 +0800888# function rebuild_rootfs can rebuild the rootfs if rootfs_base.cpio.gz.uboot exist
wanwei.jiang612a8882021-11-23 17:12:23 +0800889function rebuild_rootfs() {
Wanwei Jiang2218b892023-03-17 17:31:21 +0800890 echo
891 echo "========================================================"
892 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
893 echo "Rebuild rootfs in order to install modules!"
894 else
895 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
896 return
897 fi
898
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800899 pushd ${OUT_AMLOGIC_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800900
Lei Zhang475c17b2022-03-03 11:08:50 +0800901 local ARCH=arm64
902 if [[ -n $1 ]]; then
903 ARCH=$1
904 fi
905
wanwei.jiang612a8882021-11-23 17:12:23 +0800906 rm rootfs -rf
907 mkdir rootfs
Wanwei Jiang2218b892023-03-17 17:31:21 +0800908 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800909 cd rootfs
910 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
911 gunzip rootfs_base.cpio.gz
912 mkdir rootfs
913 cd rootfs
dongqing.li6fd83502023-06-15 09:59:40 +0800914 fakeroot cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800915 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
916 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800917 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800918 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800919
dongqing.li6fd83502023-06-15 09:59:40 +0800920 find . | fakeroot cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
wanwei.jiang612a8882021-11-23 17:12:23 +0800921 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800922 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 +0800923 mv rootfs_new.cpio.gz.uboot ../
924 cd ../
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800925 cp rootfs_new.cpio.gz.uboot ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800926
927 popd
928}
929export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800930
Dezhen Wang5ad119c2023-05-04 15:07:49 +0800931# function check_undefined_symbol can check the dependence among the modules
932# parameter:
933# --modules_depend
wanwei.jiang403c9942021-11-30 18:29:02 +0800934function check_undefined_symbol() {
Wanwei Jiang2218b892023-03-17 17:31:21 +0800935 if [[ ${MODULES_DEPEND} != "1" ]]; then
936 return
937 fi
938
939 echo "========================================================"
940 echo "print modules depend"
941
wanwei.jiangff4dccd2022-08-14 01:14:51 +0800942 pushd ${OUT_AMLOGIC_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800943 echo
944 echo "========================================================"
945 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800946 if [[ -n ${LLVM} ]]; then
947 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
948 elif [[ -n ${CROSS_COMPILE} ]]; then
949 compile_tool=${CROSS_COMPILE}
950 else
951 echo "can't find compile tool"
952 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800953 ${compile_tool}nm ${DIST_DIR}/vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800954 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
955 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
956 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
957 cp ramdisk/*.ko .
958 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800959 while read LINE
960 do
961 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800962 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 +0800963 do
964 #echo ${U}
965 U_v=`grep -w ${U} vmlinux_T.txt`
966 in_vmlinux=0
967 if [ -n "${U_v}" ];
968 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800969 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800970 in_vmlinux=1
971 continue
972 fi
973 in_module=0
974 MODULE=
975 while read LINE1
976 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800977 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 +0800978 if [ -n "${U_m}" ];
979 then
980 in_module=1
981 MODULE=${LINE1}
982 fi
983 done < module_list.txt
984 if [ ${in_module} -eq "1" ];
985 then
986 printf "\t%-50s <== %s\n" ${U} ${MODULE}
987 continue
988 else
989 printf "\t%-50s <== none\n" ${U}
990 fi
991 done
992 echo
993 echo
994 done < module_list.txt
995 rm vmlinux_T.txt
996 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800997 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +0800998 popd
999}
1000export -f check_undefined_symbol
Dezhen Wangd40fa552023-04-11 16:13:27 +08001001
1002function reorganized_abi_symbol_list_file() { # delete the extra information but symbol
1003 cat $@ | sed '/^$/d' >> ${symbol_tmp} # remove blank lines
1004 sed -i '/^\[/d' ${symbol_tmp} # remove the title
1005 sed -i '/^\#/d' ${symbol_tmp} # remove the comment
1006}
1007export -f reorganized_abi_symbol_list_file
1008
1009function abi_symbol_list_detect () { # detect symbol information that should be submitted or fix
Dezhen Wang3e94b292023-07-10 20:14:57 +08001010 if [[ "${FULL_KERNEL_VERSION}" = "common13-5.15" ]]; then
1011 symbol_file1=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic
1012 symbol_file2=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.10
1013 symbol_file3=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.debug
1014 symbol_file4=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/abi_gki_aarch64_amlogic.illegal
1015 else
1016 symbol_file1=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/${FULL_KERNEL_VERSION}_abi_gki_aarch64_amlogic
1017 symbol_file2=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/${FULL_KERNEL_VERSION}_abi_gki_aarch64_amlogic.10
1018 symbol_file3=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/${FULL_KERNEL_VERSION}_abi_gki_aarch64_amlogic.debug
1019 symbol_file4=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/android/${FULL_KERNEL_VERSION}_abi_gki_aarch64_amlogic.illegal
1020 fi
Dezhen Wangd40fa552023-04-11 16:13:27 +08001021
1022 file_list=("${symbol_file1} ${symbol_file2} ${symbol_file3} ${symbol_file4}")
1023 for file in ${file_list}
1024 do
1025 local symbol_tmp=`mktemp tmp.XXXXXXXXXXXX`
1026 reorganized_abi_symbol_list_file "${file}"
1027
1028 if [[ -s ${symbol_tmp} ]]; then
1029 if [[ ${file} =~ abi_gki_aarch64_amlogic.illegal ]]; then
1030 echo "WARNING: The symbols in ${file} are illegal, please deal with them as soon as possible!!!"
1031 else
1032 echo "WARNING: The symbols in ${file} should be submit to google!!!"
1033 fi
1034 cat ${symbol_tmp}
1035 echo -e "\n------------------------------------------------------------"
1036 fi
1037 rm ${symbol_tmp}
1038 done
1039}
1040export -f abi_symbol_list_detect
1041
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001042# adjust_config_action concerns three types of cmd:
1043# parameters:
1044# --menuconfig: make menuconfig manually based on different gki standard
1045# --basicconfig: only config kernel with google original gki_defconfig as base
1046# --check_defconfig: contrast the defconfig generated in out directory with gki_defconfig and show the difference
1047function adjust_config_action () {
1048 if [[ -n ${MENUCONFIG} ]] || [[ -n ${BASICCONFIG} ]] || [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
1049 # ${ROOT_DIR}/${BUILD_DIR}/config.sh menuconfig
1050 HERMETIC_TOOLCHAIN=0
Dezhen Wang2edb5232023-07-06 14:15:33 +08001051
1052 if [[ "${FULL_KERNEL_VERSION}" = "common13-5.15" ]]; then
1053 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
1054 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
1055 else
1056 source ${ROOT_DIR}/${BUILD_CONFIG}
1057 export COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}})
1058 export OUT_DIR=$(readlink -m ${COMMON_OUT_DIR}/${KERNEL_DIR})
1059 fi
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001060
1061 orig_config=$(mktemp)
1062 orig_defconfig=$(mktemp)
1063 out_config="${OUT_DIR}/.config"
1064 out_defconfig="${OUT_DIR}/defconfig"
1065 changed_config=$(mktemp)
1066 changed_defconfig=$(mktemp)
1067
1068 if [[ -n ${BASICCONFIG} ]]; then # config kernel with gki_defconfig or make menuconfig based on it
1069 set -x
1070 defconfig_name=`basename ${GKI_BASE_CONFIG}`
1071 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${defconfig_name})
1072 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1073 cp ${out_config} ${orig_config}
1074 cp ${out_defconfig} ${orig_defconfig}
1075 if [ "${BASICCONFIG}" = "m" ]; then # make menuconfig based on gki_defconfig
1076 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
1077 fi
1078 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1079 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
1080 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
1081 if [ "${ARCH}" = "arm" ]; then
1082 cp ${out_defconfig} ${GKI_BASE_CONFIG}
1083 fi
1084 set +x # show the difference between the gki_defconfig and the config after make menuconfig
1085 echo
1086 echo "========================================================"
1087 echo "==================== .config diff ===================="
1088 cat ${changed_config}
1089 echo "==================== defconfig diff ===================="
1090 cat ${changed_defconfig}
1091 echo "========================================================"
1092 echo
1093 elif [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then # compare the defconfig generated in out directory with gki_defconfig
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) # export the defconfig to out directory
1098 diff -u ${ROOT_DIR}/${GKI_BASE_CONFIG} ${OUT_DIR}/defconfig
1099 post_defconfig_cmds
1100 set +x
1101 else # make menuconfig based on config with different gki standard
1102 set -x
1103 pre_defconfig_cmds
1104 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1105 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1106 cp ${out_config} ${orig_config}
1107 cp ${out_defconfig} ${orig_defconfig}
1108 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
1109 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
1110 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
1111 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
1112 post_defconfig_cmds
1113 set +x
1114 echo
1115 echo "========================================================"
1116 echo "if the config follows GKI2.0, please add it to the file amlogic_gki.fragment manually"
1117 echo "if the config follows GKI1.0 optimize, please add it to the file amlogic_gki.10 manually"
1118 echo "if the config follows GKI1.0 debug, please add it to the file amlogic_gki.debug manually"
1119 echo "==================== .config diff ===================="
1120 cat ${changed_config}
1121 echo "==================== defconfig diff ===================="
1122 cat ${changed_defconfig}
1123 echo "========================================================"
1124 echo
1125 fi
1126 rm -f ${orig_config} ${changed_config} ${orig_defconfig} ${changed_defconfig}
1127 exit
1128 fi
1129}
1130export -f adjust_config_action
1131
Dezhen Wangc5c95c32023-07-09 23:14:12 +08001132if [[ "${FULL_KERNEL_VERSION}" != "common13-5.15" ]]; then
1133 function rel_path() {
1134 echo "WARNING: rel_path is deprecated. For Kleaf builds, use 'realpath $1 --relative-to $2' instead." >&2
1135 ${ROOT_DIR}/build/kernel/build-tools/path/linux-x86/realpath "$1" --relative-to="$2"
1136 }
1137fi
1138
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001139# function build_part_of_kernel can only build part of kernel such as image modules or dtbs
1140# parameter:
1141# --image: only build image
1142# --modules: only build kernel modules
1143# --dtbs: only build dtbs
1144function build_part_of_kernel () {
1145 if [[ -n ${IMAGE} ]] || [[ -n ${MODULES} ]] || [[ -n ${DTB_BUILD} ]]; then
1146 old_path=${PATH}
Dezhen Wangc5c95c32023-07-09 23:14:12 +08001147 if [[ "${FULL_KERNEL_VERSION}" = "common13-5.15" ]]; then
1148 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
1149 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
1150 else
1151 source ${ROOT_DIR}/${BUILD_CONFIG}
1152 export COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}})
1153 export OUT_DIR=$(readlink -m ${COMMON_OUT_DIR}/${KERNEL_DIR})
1154 export DIST_DIR=$(readlink -m ${DIST_DIR:-${COMMON_OUT_DIR}/dist})
1155 tool_args+=("LLVM=1")
1156 tool_args+=("DEPMOD=${DEPMOD}")
1157 fi
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001158
1159 if [[ ! -f ${OUT_DIR}/.config ]]; then
1160 pre_defconfig_cmds
1161 set -x
1162 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
1163 set +x
1164 post_defconfig_cmds
1165 fi
1166
1167 if [[ -n ${IMAGE} ]]; then
1168 set -x
1169 if [ "${ARCH}" = "arm64" ]; then
1170 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) Image)
1171 elif [ "${ARCH}" = "arm" ]; then
1172 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) LOADADDR=0x108000 uImage)
1173 fi
1174 set +x
1175 fi
1176 mkdir -p ${DIST_DIR}
1177 if [[ -n ${DTB_BUILD} ]]; then
1178 set -x
1179 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) dtbs)
1180 set +x
1181 fi
1182 if [[ -n ${MODULES} ]]; then
1183 export MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
1184 rm -rf ${MODULES_STAGING_DIR}
1185 mkdir -p ${MODULES_STAGING_DIR}
1186 if [ "${DO_NOT_STRIP_MODULES}" != "1" ]; then
1187 MODULE_STRIP_FLAG="INSTALL_MOD_STRIP=1"
1188 fi
1189 if [[ `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
1190 set -x
1191 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) modules)
1192 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} "${MAKE_ARGS[@]}" modules_install)
1193 set +x
1194 fi
1195 echo EXT_MODULES=$EXT_MODULES
1196 prepare_module_build
1197 if [[ -z "${SKIP_EXT_MODULES}" ]] && [[ -n "${EXT_MODULES}" ]]; then
1198 echo "========================================================"
1199 echo " Building external modules and installing them into staging directory"
1200 KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
1201 for EXT_MOD in ${EXT_MODULES}; do
1202 EXT_MOD_REL=$(rel_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
1203 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
1204 set -x
1205 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1206 O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}"
1207 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1208 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
1209 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
1210 INSTALL_MOD_DIR="extra/${EXT_MOD}" \
1211 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" \
1212 "${MAKE_ARGS[@]}" modules_install
1213 set +x
1214 done
1215 fi
1216 export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
1217 set -x
1218 extra_cmds
1219 set +x
1220 MODULES=$(find ${MODULES_STAGING_DIR} -type f -name "*.ko")
1221 cp -p ${MODULES} ${DIST_DIR}
1222
1223 new_path=${PATH}
1224 PATH=${old_path}
1225 echo "========================================================"
1226 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
1227 echo "Rebuild rootfs in order to install modules!"
1228 rebuild_rootfs ${ARCH}
1229 else
1230 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
1231 fi
1232 PATH=${new_path}
1233 fi
1234 if [ -n "${DTS_EXT_DIR}" ]; then
1235 if [ -d "${ROOT_DIR}/${DTS_EXT_DIR}" ]; then
1236 DTS_EXT_DIR=$(rel_path ${ROOT_DIR}/${DTS_EXT_DIR} ${KERNEL_DIR})
1237 if [ -d ${OUT_DIR}/${DTS_EXT_DIR} ]; then
1238 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
1239 fi
1240 fi
1241 fi
1242 for FILE in ${FILES}; do
1243 if [ -f ${OUT_DIR}/${FILE} ]; then
1244 echo " $FILE"
1245 cp -p ${OUT_DIR}/${FILE} ${DIST_DIR}/
1246 elif [[ "${FILE}" =~ \.dtb|\.dtbo ]] && \
1247 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
1248 # DTS_EXT_DIR is recalculated before to be relative to KERNEL_DIR
1249 echo " $FILE"
1250 cp -p "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" "${DIST_DIR}/"
1251 else
1252 echo " $FILE is not a file, skipping"
1253 fi
1254 done
1255 exit
1256 fi
1257}
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001258export -f build_part_of_kernel
1259
1260function export_env_variable () {
1261 export ABI BUILD_CONFIG LTO KMI_SYMBOL_LIST_STRICT_MODE CHECK_DEFCONFIG MANUAL_INSMOD_MODULE ARCH
qinglin.libce54712023-05-08 13:56:31 +08001262 export KERNEL_DIR COMMON_DRIVERS_DIR BUILD_DIR ANDROID_PROJECT GKI_CONFIG UPGRADE_PROJECT ANDROID_VERSION FAST_BUILD CHECK_GKI_20 DEV_CONFIGS
qinglin.li7cf37c02023-07-04 16:06:04 +08001263 export FULL_KERNEL_VERSION BAZEL PREBUILT_GKI KASAN
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001264
1265 echo ROOT_DIR=$ROOT_DIR
1266 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 +08001267 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}
qinglin.li7cf37c02023-07-04 16:06:04 +08001268 echo FULL_KERNEL_VERSION=${FULL_KERNEL_VERSION} BAZEL=${BAZEL} PREBUILT_GKI=${PREBUILT_GKI} KASAN=${KASAN}
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001269 echo MENUCONFIG=${MENUCONFIG} BASICCONFIG=${BASICCONFIG} IMAGE=${IMAGE} MODULES=${MODULES} DTB_BUILD=${DTB_BUILD}
1270}
Dezhen Wang5ad119c2023-05-04 15:07:49 +08001271export -f export_env_variable
Dezhen Wang850c0d22023-05-31 19:26:20 +08001272
1273function handle_input_parameters () {
1274 VA=
1275 ARGS=()
1276 for i in "$@"
1277 do
1278 case $i in
1279 --arch)
1280 ARCH=$2
1281 VA=1
1282 shift
1283 ;;
1284 --abi)
1285 ABI=1
1286 shift
1287 ;;
1288 --build_config)
1289 BUILD_CONFIG=$2
1290 VA=1
1291 shift
1292 ;;
1293 --lto)
1294 LTO=$2
1295 VA=1
1296 shift
1297 ;;
1298 --symbol_strict)
1299 KMI_SYMBOL_LIST_STRICT_MODE=$2
1300 VA=1
1301 shift
1302 ;;
1303 --menuconfig)
1304 MENUCONFIG=1
1305 shift
1306 ;;
1307 --basicconfig)
1308 if [ "$2" = "m" ] || [ "$2" = "n" ]; then
1309 BASICCONFIG=$2
1310 else
1311 BASICCONFIG="m"
1312 fi
1313 VA=1
1314 shift
1315 ;;
1316 --image)
1317 IMAGE=1
1318 shift
1319 ;;
1320 --modules)
1321 MODULES=1
1322 shift
1323 break
1324 ;;
1325 --dtbs)
1326 DTB_BUILD=1
1327 shift
1328 ;;
1329 --build_dir)
1330 BUILD_DIR=$2
1331 VA=1
1332 shift
1333 ;;
1334 --check_defconfig)
1335 CHECK_DEFCONFIG=1
1336 shift
1337 ;;
1338 --modules_depend)
1339 MODULES_DEPEND=1
1340 shift
1341 ;;
1342 --android_project)
1343 ANDROID_PROJECT=$2
1344 VA=1
1345 shift
1346 ;;
1347 --gki_20)
1348 GKI_CONFIG=gki_20
1349 shift
1350 ;;
1351 --gki_10)
1352 GKI_CONFIG=gki_10
1353 shift
1354 ;;
Dezhen Wang850c0d22023-05-31 19:26:20 +08001355 --fast_build)
1356 FAST_BUILD=1
1357 shift
1358 ;;
1359 --upgrade)
qinglin.li62b23332023-06-25 10:37:41 +08001360 UPGRADE_PROJECT=$2
Dezhen Wang850c0d22023-05-31 19:26:20 +08001361 ANDROID_VERSION=$2
qinglin.li62b23332023-06-25 10:37:41 +08001362 GKI_CONFIG=
Dezhen Wang850c0d22023-05-31 19:26:20 +08001363 VA=1
1364 shift
1365 ;;
1366 --manual_insmod_module)
1367 MANUAL_INSMOD_MODULE=1
1368 shift
1369 ;;
Dezhen Wang850c0d22023-05-31 19:26:20 +08001370 --check_gki_20)
1371 CHECK_GKI_20=1
1372 GKI_CONFIG=gki_20
1373 LTO=none
1374 shift
1375 ;;
1376 --dev_config)
1377 DEV_CONFIGS=$2
1378 VA=1
1379 shift
1380 ;;
Wanwei Jiang0a519f62023-06-30 16:56:28 +08001381 --use_prebuilt_gki)
1382 PREBUILT_GKI=$2
1383 VA=1
Dezhen Wang850c0d22023-05-31 19:26:20 +08001384 shift
1385 ;;
qinglin.li7cf37c02023-07-04 16:06:04 +08001386 --kasan)
1387 KASAN=1
1388 LTO=none
1389 shift
1390 ;;
Dezhen Wang850c0d22023-05-31 19:26:20 +08001391 -h|--help)
1392 show_help
1393 exit 0
1394 ;;
1395 *)
1396 if [[ -n $1 ]];
1397 then
1398 if [[ -z ${VA} ]];
1399 then
1400 ARGS+=("$1")
1401 fi
1402 fi
1403 VA=
1404 shift
1405 ;;
1406 esac
1407 done
1408}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001409export -f handle_input_parameters
1410
1411function set_default_parameters () {
1412 if [ "${ARCH}" = "arm" ]; then
1413 ARGS+=("LOADADDR=0x108000")
1414 else
1415 ARCH=arm64
1416 fi
1417
1418 if [[ -z "${ABI}" ]]; then
1419 ABI=0
1420 fi
1421 if [[ -z "${LTO}" ]]; then
1422 LTO=thin
1423 fi
1424 if [[ -n ${CHECK_GKI_20} && -z ${ANDROID_PROJECT} ]]; then
1425 ANDROID_PROJECT=ohm
1426 fi
1427
1428 if [[ -z "${BUILD_CONFIG}" ]]; then
1429 if [ "${ARCH}" = "arm64" ]; then
1430 BUILD_CONFIG=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/build.config.amlogic
1431 elif [ "${ARCH}" = "arm" ]; then
1432 BUILD_CONFIG=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/build.config.amlogic32
1433 fi
1434 fi
1435 if [[ -z "${BUILD_DIR}" ]]; then
1436 BUILD_DIR=build
1437 fi
1438
1439 version_message=$(grep -rn BRANCH= ${KERNEL_DIR}/build.config.constants)
1440 version_message="common${version_message##*android}"
1441 if [[ -n ${FULL_KERNEL_VERSION} ]]; then
1442 if [[ "${FULL_KERNEL_VERSION}" != "${version_message}" ]]; then
1443 echo "kernel version is not match!!"
1444 exit
1445 fi
1446 else
1447 FULL_KERNEL_VERSION=${version_message}
1448 fi
1449
1450 if [[ -z ${BAZEL} ]]; then
qinglin.li62b23332023-06-25 10:37:41 +08001451 [[ "${FULL_KERNEL_VERSION}" != "common13-5.15" && "${ARCH}" == "arm64" ]] && BAZEL=1
Dezhen Wang850c0d22023-05-31 19:26:20 +08001452 fi
1453
1454 auto_patch_to_common_dir
1455
qinglin.lieafebcf2023-06-27 12:48:22 +08001456 if [[ ! -f ${BUILD_DIR}/build_abi.sh && ${BAZEL} == 0 ]]; then
Dezhen Wang850c0d22023-05-31 19:26:20 +08001457 echo "The directory of build does not exist";
1458 exit
1459 fi
1460
1461 ROOT_DIR=$(readlink -f $(dirname $0))
1462 if [[ ! -f ${ROOT_DIR}/${KERNEL_DIR}/init/main.c ]]; then
1463 ROOT_DIR=`pwd`
1464 if [[ ! -f ${ROOT_DIR}/${KERNEL_DIR}/init/main.c ]]; then
1465 echo "the file path of $0 is incorrect"
1466 exit
1467 fi
1468 fi
1469 export ROOT_DIR
1470
1471 CHECK_DEFCONFIG=${CHECK_DEFCONFIG:-0}
1472 MODULES_DEPEND=${MODULES_DEPEND:-0}
1473 if [[ ! -f ${KERNEL_BUILD_VAR_FILE} ]]; then
1474 export KERNEL_BUILD_VAR_FILE=`mktemp /tmp/kernel.XXXXXXXXXXXX`
1475 RM_KERNEL_BUILD_VAR_FILE=1
1476 fi
1477
Dezhen Wang850c0d22023-05-31 19:26:20 +08001478 export CROSS_COMPILE=
1479
1480 if [ "${ABI}" -eq "1" ]; then
1481 export OUT_DIR_SUFFIX="_abi"
1482 else
1483 OUT_DIR_SUFFIX=
1484 fi
1485}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001486export -f set_default_parameters
1487
1488function auto_patch_to_common_dir () {
1489 #first auto patch when param parse end
Dezhen Wang850c0d22023-05-31 19:26:20 +08001490
1491 if [[ -f ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/auto_patch/auto_patch.sh ]]; then
1492 export PATCH_PARM
1493 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/auto_patch/auto_patch.sh ${FULL_KERNEL_VERSION}
Dezhen Wang4e608102023-07-05 18:55:30 +08001494 if [[ $? -ne 0 ]]; then
1495 echo "auto patch error!"
1496 exit 1
1497 fi
Dezhen Wang850c0d22023-05-31 19:26:20 +08001498 fi
1499
1500 if [[ ${ONLY_PATCH} -eq "1" ]]; then
1501 cd ${CURRENT_DIR}
1502 exit
1503 fi
1504}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001505export -f auto_patch_to_common_dir
1506
Dezhen Wang850c0d22023-05-31 19:26:20 +08001507function handle_input_parameters_for_smarthome () {
1508 VA=
1509 ARGS=()
1510 for i in "$@"
1511 do
1512 case $i in
1513 --savedefconfig)
1514 SAVEDEFCONFIG=1
1515 shift
1516 ;;
1517 --menuconfig)
1518 MENUCONFIG=1
1519 shift
1520 ;;
1521 --dtb)
1522 DTB=1
1523 shift
1524 ;;
1525 --manual_insmod_module)
1526 MANUAL_INSMOD_MODULE=1
1527 shift
1528 ;;
1529 --patch)
1530 ONLY_PATCH=1
1531 shift
1532 ;;
1533 -h|--help)
1534 show_help
1535 exit 0
1536 ;;
1537 *)
1538 if [[ -n $1 ]];
1539 then
1540 if [[ -z ${VA} ]];
1541 then
1542 ARGS+=("$1")
1543 fi
1544 fi
1545 VA=
1546 shift
1547 ;;
1548 esac
1549 done
1550}
1551
1552export -f handle_input_parameters_for_smarthome
1553
1554function set_default_parameters_for_smarthome () {
1555 version_message=$(grep -rn BRANCH= ${KERNEL_DIR}/build.config.constants)
1556 version_message="common${version_message##*android}"
1557 if [[ -n ${FULL_KERNEL_VERSION} ]]; then
1558 if [[ "${FULL_KERNEL_VERSION}" != "${version_message}" ]]; then
1559 echo "kernel version is not match!!"
1560 exit
1561 fi
1562 else
1563 FULL_KERNEL_VERSION=${version_message}
1564 fi
1565
1566 tool_args=()
1567 prebuilts_paths=(
1568 CLANG_PREBUILT_BIN
1569 #BUILDTOOLS_PREBUILT_BIN
1570 )
1571 echo CC_CLANG=$CC_CLANG
1572 if [[ $CC_CLANG -eq "1" ]]; then
1573 source ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
1574 if [[ -n "${LLVM}" ]]; then
1575 tool_args+=("LLVM=1")
1576 fi
1577 #if [ -n "${DTC}" ]; then
1578 # tool_args+=("DTC=${DTC}")
1579 #fi
1580 for prebuilt_bin in "${prebuilts_paths[@]}"; do
1581 prebuilt_bin=\${${prebuilt_bin}}
1582 eval prebuilt_bin="${prebuilt_bin}"
1583 if [ -n "${prebuilt_bin}" ]; then
1584 PATH=${PATH//"${ROOT_DIR}\/${prebuilt_bin}:"}
1585 PATH=${ROOT_DIR}/${prebuilt_bin}:${PATH} # add the clang tool to env PATH
1586 fi
1587 done
1588 export PATH
1589 elif [[ -n $CROSS_COMPILE_TOOL ]]; then
1590 export CROSS_COMPILE=${CROSS_COMPILE_TOOL}
1591 fi
1592
1593 if [[ $ARCH == arm64 ]]; then
1594 OUTDIR=${ROOT_DIR}/out/kernel-5.15-64
1595 elif [[ $ARCH == arm ]]; then
1596 OUTDIR=${ROOT_DIR}/out/kernel-5.15-32
Dezhen Wang1176fad2023-06-09 11:22:17 +08001597 tool_args+=("LOADADDR=0x108000")
Dezhen Wang850c0d22023-05-31 19:26:20 +08001598 elif [[ $ARCH == riscv ]]; then
1599 OUTDIR=${ROOT_DIR}/out/riscv-kernel-5.15-64
1600 fi
1601 TOOL_ARGS="${tool_args[@]}"
1602
1603 OUT_DIR=${OUTDIR}/common
1604 mkdir -p ${OUT_DIR}
1605 if [ "${SKIP_RM_OUTDIR}" != "1" ] ; then
1606 rm -rf ${OUTDIR}
1607 fi
1608
1609 echo "========================================================"
1610 echo ""
1611 export DIST_DIR=$(readlink -m ${OUTDIR}/dist)
1612 export MODULES_STAGING_DIR=$(readlink -m ${OUTDIR}/staging)
1613 export OUT_AMLOGIC_DIR=$(readlink -m ${OUTDIR}/amlogic)
1614 echo OUTDIR=$OUTDIR DIST_DIR=$DIST_DIR MODULES_STAGING_DIR=$MODULES_STAGING_DIR KERNEL_DIR=$KERNEL_DIR
1615
1616
1617 source ${ROOT_DIR}/build/kernel/build_utils.sh
1618
1619 DTS_EXT_DIR=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/boot/dts/amlogic
1620 DTS_EXT_DIR=$(rel_path ${ROOT_DIR}/${DTS_EXT_DIR} ${KERNEL_DIR})
1621 export dtstree=${DTS_EXT_DIR}
1622 export DTC_INCLUDE=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/include
1623
1624 EXT_MODULES="
1625 ${EXT_MODULES}
1626 "
1627
1628 EXT_MODULES_CONFIG="
1629 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/ext_modules_config
1630 "
1631
1632 EXT_MODULES_PATH="
1633 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/ext_modules_path
1634 "
1635
1636 POST_KERNEL_BUILD_CMDS="prepare_module_build"
1637 EXTRA_CMDS="extra_cmds"
1638
1639 IN_KERNEL_MODULES=1
1640}
1641
1642export -f set_default_parameters_for_smarthome
1643
1644function savedefconfig_cmd_for_smarthome () {
1645 if [[ -n ${SAVEDEFCONFIG} ]]; then
1646 set -x
1647 make ARCH=${ARCH} -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${DEFCONFIG}
1648 make ARCH=${ARCH} -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} savedefconfig
Dezhen Wang1176fad2023-06-09 11:22:17 +08001649 rm ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/configs/${DEFCONFIG}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001650 cp -f ${OUT_DIR}/defconfig ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/configs/${DEFCONFIG}
1651 set +x
1652 exit
1653 fi
1654}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001655export -f savedefconfig_cmd_for_smarthome
1656
1657function only_build_dtb_for_smarthome () {
1658 if [[ -n ${DTB} ]]; then
1659 set -x
1660 make ARCH=${ARCH} -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} ${DEFCONFIG}
1661 make ARCH=${ARCH} -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} dtbs || exit
1662 set +x
1663 exit
1664 fi
1665}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001666export -f only_build_dtb_for_smarthome
1667
1668function make_menuconfig_cmd_for_smarthome () {
1669 if [[ -n ${MENUCONFIG} ]]; then
1670 set -x
1671 make ARCH=${ARCH} -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${DEFCONFIG}
1672 make ARCH=${ARCH} -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} menuconfig
1673 set +x
1674 exit
1675 fi
1676}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001677export -f make_menuconfig_cmd_for_smarthome
1678
1679function build_kernel_for_different_cpu_architecture () {
1680 set -x
1681 if [[ $ARCH == arm64 ]]; then
1682 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} ${DEFCONFIG}
1683 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} headers_install &&
1684 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} Image -j12 &&
1685 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} modules -j12 &&
1686 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 &&
1687 make ARCH=arm64 -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} dtbs -j12 || exit
Dezhen Wang850c0d22023-05-31 19:26:20 +08001688 elif [[ $ARCH == arm ]]; then
1689 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} ${DEFCONFIG}
1690 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} headers_install &&
1691 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} uImage -j12 &&
1692 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} modules -j12 &&
1693 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 &&
1694 make ARCH=arm -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} dtbs -j12 || exit
Dezhen Wang850c0d22023-05-31 19:26:20 +08001695 elif [[ $ARCH == riscv ]]; then
1696 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} ${DEFCONFIG}
1697 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} headers_install &&
1698 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} Image -j12 &&
1699 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} modules -j12 &&
1700 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} modules_install -j12 &&
1701 make ARCH=riscv -C ${ROOT_DIR}/${KERNEL_DIR} O=${OUT_DIR} ${TOOL_ARGS} dtbs -j12 || exit
Dezhen Wang850c0d22023-05-31 19:26:20 +08001702 fi
1703 cp ${OUT_DIR}/arch/${ARCH}/boot/Image* ${DIST_DIR}
1704 cp ${OUT_DIR}/arch/${ARCH}/boot/uImage* ${DIST_DIR}
1705 cp ${OUT_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/boot/dts/amlogic/*.dtb ${DIST_DIR}
1706 cp ${OUT_DIR}/vmlinux ${DIST_DIR}
1707 set +x
1708}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001709export -f build_kernel_for_different_cpu_architecture
1710
1711function build_ext_modules() {
1712 for EXT_MOD in ${EXT_MODULES}; do
1713 EXT_MOD_REL=$(rel_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
1714 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
1715
1716 set -x
1717 make ARCH=${ARCH} -C ${ROOT_DIR}/${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1718 O=${OUT_DIR} ${TOOL_ARGS} -j12 || exit
1719 make ARCH=${ARCH} -C ${ROOT_DIR}/${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
1720 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
1721 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
1722 INSTALL_MOD_DIR="extra/${EXT_MOD}" \
1723 INSTALL_MOD_STRIP=1 \
1724 modules_install -j12 || exit
1725 set +x
1726 done
1727}
Dezhen Wang850c0d22023-05-31 19:26:20 +08001728export -f build_ext_modules
1729
1730function copy_modules_and_rebuild_rootfs_for_smarthome () {
Dezhen Wang1176fad2023-06-09 11:22:17 +08001731
1732 copy_modules_files_to_dist_dir
1733
1734 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
1735 echo "========================================================"
1736 echo "Rebuild rootfs in order to install modules!"
1737 rebuild_rootfs ${ARCH}
1738 echo "Build success!"
1739 else
1740 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
1741 fi
1742}
1743export -f copy_modules_and_rebuild_rootfs_for_smarthome
1744
1745function copy_modules_files_to_dist_dir () {
Dezhen Wang850c0d22023-05-31 19:26:20 +08001746 MODULES=$(find ${MODULES_STAGING_DIR} -type f -name "*.ko")
1747 if [ -n "${MODULES}" ]; then
1748 if [ -n "${IN_KERNEL_MODULES}" -o -n "${EXT_MODULES}" -o -n "${EXT_MODULES_MAKEFILE}" ]; then
1749 echo "========================================================"
1750 echo " Copying modules files"
1751 for module in ${MODULES}; do
1752 cp ${module} ${DIST_DIR}
1753 done
1754 if [ "${COMPRESS_MODULES}" = "1" ]; then
1755 echo " Archiving modules to ${MODULES_ARCHIVE}"
1756 tar --transform="s,.*/,," -czf ${DIST_DIR}/${MODULES_ARCHIVE} ${MODULES[@]}
1757 fi
1758 fi
Dezhen Wang850c0d22023-05-31 19:26:20 +08001759 fi
1760}
Dezhen Wang1176fad2023-06-09 11:22:17 +08001761export -f copy_modules_files_to_dist_dir
Dezhen Wang850c0d22023-05-31 19:26:20 +08001762
Dezhen Wang1176fad2023-06-09 11:22:17 +08001763function copy_files_to_dist_dir () {
1764 echo "========================================================"
1765 echo " Copying files"
1766 for FILE in ${FILES}; do
1767 if [ -f ${OUT_DIR}/${FILE} ]; then
1768 echo " $FILE"
1769 cp -p ${OUT_DIR}/${FILE} ${DIST_DIR}/
1770 elif [[ "${FILE}" =~ \.dtb|\.dtbo ]] && \
1771 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
1772 # DTS_EXT_DIR is recalculated before to be relative to KERNEL_DIR
1773 echo " $FILE"
1774 cp -p "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" "${DIST_DIR}/"
1775 else
1776 echo " $FILE is not a file, skipping"
1777 fi
1778 done
1779}
1780export -f copy_files_to_dist_dir
1781
1782function make_dtbo() {
1783 if [[ -n "${BUILD_DTBO_IMG}" ]]; then
1784 echo "========================================================"
1785 echo " Creating dtbo image at ${DIST_DIR}/dtbo.img"
1786 (
1787 cd ${OUT_DIR}
1788 mkdtimg create "${DIST_DIR}"/dtbo.img ${MKDTIMG_FLAGS} ${MKDTIMG_DTBOS}
1789 )
1790 fi
1791}
1792export -f make_dtbo
1793
1794function installing_UAPI_kernel_headers () {
1795 if [ -z "${SKIP_CP_KERNEL_HDR}" ]; then
1796 echo "========================================================"
1797 echo " Installing UAPI kernel headers:"
1798 mkdir -p "${KERNEL_UAPI_HEADERS_DIR}/usr"
1799 make -C ${OUT_DIR} O=${OUT_DIR} ${TOOL_ARGS} \
1800 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" "${MAKE_ARGS[@]}" \
1801 headers_install
1802 # The kernel makefiles create files named ..install.cmd and .install which
1803 # are only side products. We don't want those. Let's delete them.
1804 find ${KERNEL_UAPI_HEADERS_DIR} \( -name ..install.cmd -o -name .install \) -exec rm '{}' +
1805 KERNEL_UAPI_HEADERS_TAR=${DIST_DIR}/kernel-uapi-headers.tar.gz
1806 echo " Copying kernel UAPI headers to ${KERNEL_UAPI_HEADERS_TAR}"
1807 tar -czf ${KERNEL_UAPI_HEADERS_TAR} --directory=${KERNEL_UAPI_HEADERS_DIR} usr/
1808 fi
1809}
1810export -f installing_UAPI_kernel_headers
1811
1812function copy_kernel_headers_to_compress () {
1813 if [ -z "${SKIP_CP_KERNEL_HDR}" ] ; then
1814 echo "========================================================"
1815 KERNEL_HEADERS_TAR=${DIST_DIR}/kernel-headers.tar.gz
1816 echo " Copying kernel headers to ${KERNEL_HEADERS_TAR}"
1817 pushd $ROOT_DIR/$KERNEL_DIR
1818 find arch include $OUT_DIR -name *.h -print0 \
1819 | tar -czf $KERNEL_HEADERS_TAR \
1820 --absolute-names \
1821 --dereference \
1822 --transform "s,.*$OUT_DIR,," \
1823 --transform "s,^,kernel-headers/," \
1824 --null -T -
1825 popd
1826 fi
1827}
1828export -f copy_kernel_headers_to_compress
1829
1830function set_default_parameters_for_32bit () {
1831 tool_args=()
1832 prebuilts_paths=(
1833 CLANG_PREBUILT_BIN
1834 CLANGTOOLS_PREBUILT_BIN
1835 RUST_PREBUILT_BIN
1836 LZ4_PREBUILTS_BIN
1837 DTC_PREBUILTS_BIN
1838 LIBUFDT_PREBUILTS_BIN
1839 BUILDTOOLS_PREBUILT_BIN
1840 )
1841 echo CC_CLANG=$CC_CLANG
1842 if [[ $CC_CLANG -eq "1" ]]; then
1843 source ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
1844 if [[ -n "${LLVM}" ]]; then
1845 tool_args+=("LLVM=1")
1846 # Reset a bunch of variables that the kernel's top level Makefile does, just
1847 # in case someone tries to use these binaries in this script such as in
1848 # initramfs generation below.
1849 HOSTCC=clang
1850 HOSTCXX=clang++
1851 CC=clang
1852 LD=ld.lld
1853 AR=llvm-ar
1854 NM=llvm-nm
1855 OBJCOPY=llvm-objcopy
1856 OBJDUMP=llvm-objdump
1857 OBJSIZE=llvm-size
1858 READELF=llvm-readelf
1859 STRIP=llvm-strip
1860 else
1861 if [ -n "${HOSTCC}" ]; then
1862 tool_args+=("HOSTCC=${HOSTCC}")
1863 fi
1864
1865 if [ -n "${CC}" ]; then
1866 tool_args+=("CC=${CC}")
1867 if [ -z "${HOSTCC}" ]; then
1868 tool_args+=("HOSTCC=${CC}")
1869 fi
1870 fi
1871
1872 if [ -n "${LD}" ]; then
1873 tool_args+=("LD=${LD}" "HOSTLD=${LD}")
1874 fi
1875
1876 if [ -n "${NM}" ]; then
1877 tool_args+=("NM=${NM}")
1878 fi
1879
1880 if [ -n "${OBJCOPY}" ]; then
1881 tool_args+=("OBJCOPY=${OBJCOPY}")
1882 fi
1883 fi
1884
1885 if [ -n "${DTC}" ]; then
1886 tool_args+=("DTC=${DTC}")
1887 fi
1888 for prebuilt_bin in "${prebuilts_paths[@]}"; do
1889 prebuilt_bin=\${${prebuilt_bin}}
1890 eval prebuilt_bin="${prebuilt_bin}"
1891 if [ -n "${prebuilt_bin}" ]; then
1892 PATH=${PATH//"${ROOT_DIR}\/${prebuilt_bin}:"}
1893 PATH=${ROOT_DIR}/${prebuilt_bin}:${PATH} # add the clang tool to env PATH
1894 fi
1895 done
1896 export PATH
1897 elif [[ -n $CROSS_COMPILE_TOOL ]]; then
1898 export CROSS_COMPILE=${CROSS_COMPILE_TOOL}
1899 fi
1900
1901 # Have host compiler use LLD and compiler-rt.
1902 LLD_COMPILER_RT="-fuse-ld=lld --rtlib=compiler-rt"
1903 if [[ -n "${NDK_TRIPLE}" ]]; then
1904 NDK_DIR=${ROOT_DIR}/prebuilts/ndk-r23
1905
1906 if [[ ! -d "${NDK_DIR}" ]]; then
1907 # Kleaf/Bazel will checkout the ndk to a different directory than
1908 # build.sh.
1909 NDK_DIR=${ROOT_DIR}/external/prebuilt_ndk
1910 if [[ ! -d "${NDK_DIR}" ]]; then
1911 echo "ERROR: NDK_TRIPLE set, but unable to find prebuilts/ndk." 1>&2
1912 echo "Did you forget to checkout prebuilts/ndk?" 1>&2
1913 exit 1
1914 fi
1915 fi
1916 USERCFLAGS="--target=${NDK_TRIPLE} "
1917 USERCFLAGS+="--sysroot=${NDK_DIR}/toolchains/llvm/prebuilt/linux-x86_64/sysroot "
1918 # Some kernel headers trigger -Wunused-function for unused static functions
1919 # with clang; GCC does not warn about unused static inline functions. The
1920 # kernel sets __attribute__((maybe_unused)) on such functions when W=1 is
1921 # not set.
1922 USERCFLAGS+="-Wno-unused-function "
1923 # To help debug these flags, consider commenting back in the following, and
1924 # add `echo $@ > /tmp/log.txt` and `2>>/tmp/log.txt` to the invocation of $@
1925 # in scripts/cc-can-link.sh.
1926 #USERCFLAGS+=" -Wl,--verbose -v"
1927 # We need to set -fuse-ld=lld for Android's build env since AOSP LLVM's
1928 # clang is not configured to use LLD by default, and BFD has been
1929 # intentionally removed. This way CC_CAN_LINK can properly link the test in
1930 # scripts/cc-can-link.sh.
1931 USERLDFLAGS="${LLD_COMPILER_RT} "
1932 USERLDFLAGS+="--target=${NDK_TRIPLE} "
1933 else
1934 USERCFLAGS="--sysroot=/dev/null"
1935 fi
1936
1937 #setting_the_default_output_dir
1938 export COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}})
1939 export OUT_DIR=$(readlink -m ${COMMON_OUT_DIR}/${KERNEL_DIR})
1940 export DIST_DIR=$(readlink -m ${DIST_DIR:-${COMMON_OUT_DIR}/dist})
1941 export UNSTRIPPED_DIR=${DIST_DIR}/unstripped
1942 export UNSTRIPPED_MODULES_ARCHIVE=unstripped_modules.tar.gz
1943 export MODULES_ARCHIVE=modules.tar.gz
1944 export MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
1945 export MODULES_PRIVATE_DIR=$(readlink -m ${COMMON_OUT_DIR}/private)
1946 export KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
1947 export INITRAMFS_STAGING_DIR=${MODULES_STAGING_DIR}/initramfs_staging
1948 export SYSTEM_DLKM_STAGING_DIR=${MODULES_STAGING_DIR}/system_dlkm_staging
1949 export VENDOR_DLKM_STAGING_DIR=${MODULES_STAGING_DIR}/vendor_dlkm_staging
1950 export MKBOOTIMG_STAGING_DIR="${MODULES_STAGING_DIR}/mkbootimg_staging"
1951 export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
1952
1953 tool_args+=("LOADADDR=0x108000")
1954 tool_args+=("DEPMOD=depmod")
1955 TOOL_ARGS="${tool_args[@]}"
1956
1957 mkdir -p ${OUT_DIR}
1958 if [ "${SKIP_RM_OUTDIR}" != "1" ] ; then
1959 rm -rf ${COMMON_OUT_DIR}
1960 fi
1961
1962 source ${ROOT_DIR}/build/kernel/build_utils.sh
1963
1964 DTS_EXT_DIR=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/boot/dts/amlogic
1965 DTS_EXT_DIR=$(rel_path ${ROOT_DIR}/${DTS_EXT_DIR} ${KERNEL_DIR})
1966 export dtstree=${DTS_EXT_DIR}
1967 export DTC_INCLUDE=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/include
1968
1969 EXT_MODULES="
1970 ${EXT_MODULES}
1971 "
1972
1973 EXT_MODULES_CONFIG="
1974 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/ext_modules_config
1975 "
1976
1977 EXT_MODULES_PATH="
1978 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/ext_modules_path
1979 "
1980
1981 POST_KERNEL_BUILD_CMDS="prepare_module_build"
1982 EXTRA_CMDS="extra_cmds"
1983
1984 IN_KERNEL_MODULES=1
1985}
1986export -f set_default_parameters_for_32bit
1987
1988function generating_test_mappings_zip () {
1989 echo "========================================================"
1990 echo " Generating test_mappings.zip"
1991 TEST_MAPPING_FILES=${OUT_DIR}/test_mapping_files.txt
1992 find ${ROOT_DIR} -name TEST_MAPPING \
1993 -not -path "${ROOT_DIR}/\.git*" \
1994 -not -path "${ROOT_DIR}/\.repo*" \
1995 -not -path "${ROOT_DIR}/out*" \
1996 > ${TEST_MAPPING_FILES}
1997 soong_zip -o ${DIST_DIR}/test_mappings.zip -C ${ROOT_DIR} -l ${TEST_MAPPING_FILES}
1998}
1999export -f generating_test_mappings_zip
2000