blob: 80a5657a7a99c1fed4a69c6bd26840a101e7ceb7 [file] [log] [blame]
wanwei.jiang612a8882021-11-23 17:12:23 +08001#!/bin/bash
2
wanwei.jiang612a8882021-11-23 17:12:23 +08003function show_help {
4 echo "USAGE: $0 [--nongki] [--abi]"
5 echo
Lei Zhang2853aa52022-08-23 09:40:06 +08006 echo " --arch for ARCH, build 64 or 32 bit kernel, arm|arm64[default], require parameter value"
wanwei.jiang5c8d2b62021-11-26 20:36:33 +08007 echo " --abi for ABI, call build_abi.sh not build.sh, 1|0[default], not require parameter value"
8 echo " --build_config for BUILD_CONFIG, common_drivers/build.config.amlogic[default]|common/build.config.gki.aarch64, require parameter value"
wanwei.jiang5c8d2b62021-11-26 20:36:33 +08009 echo " --symbol_strict for KMI_SYMBOL_LIST_STRICT_MODE, 1[default]|0, require parameter value"
wanwei.jiangd7b29ef2021-12-01 19:59:41 +080010 echo " --lto for LTO, full|thin[default]|none, require parameter value"
Wanwei Jiang0a74fb12022-12-09 16:27:40 +080011 echo " --menuconfig for only menuconfig, not require parameter value"
12 echo " --basicconfig for basicconfig, m(menuconfig)[default]|n"
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080013 echo " --image for only build kernel, not require parameter value"
14 echo " --modules for only build modules, not require parameter value"
15 echo " --dtbs for only build dtbs, not require parameter value"
wanwei.jiang7ef5fd42022-02-18 16:36:19 +080016 echo " --kernel_dir for KERNEL_DIR, common[default]|other dir, require parameter value"
17 echo " --common_drivers_dir for COMMON_DRIVERS_DIR, common[default]|other dir, require parameter value"
18 echo " --build_dir for BUILD_DIR, build[default]|other dir, require parameter value"
wanwei.jiang1482c872022-05-13 20:33:51 +080019 echo " --check_defconfig for check defconfig"
20 echo " --modules_depend for check modules depend"
wanwei.jiang3eab75f2022-05-25 00:39:52 +080021 echo " --android_project for android project build"
Wanwei Jiang0a74fb12022-12-09 16:27:40 +080022 echo " --gki_20 for build gki 2.0 kernel: gki_defconfig + amlogic_gki.fragment"
23 echo " --gki_10 for build gki 1.0 kernel: gki_defconfig + amlogic_gki.fragment + amlogic_gki.10"
24 echo " --gki_debug for build gki debug kernel: gki_defconfig + amlogic_gki.fragment + amlogic_gki.10 + amlogic_gki.debug"
25 echo " for note: current can't use --gki_10, amlogic_gki.10 for optimize, amlogic_gki.debug for debug, and follow GKI1.0"
26 echo " so build GKI1.0 Image need with --gki_debug, default parameter --gki_debug"
27 echo " --fast_build for fast build"
28 echo " --upgrade for android upgrade builtin module optimize vendor_boot size"
Dezhen Wang124ad7d2023-02-06 15:35:14 +080029 echo " --manual_insmod_module for insmod ko manually when kernel is booting.It's usually used in debug test"
Wanwei Jiange9412ec2023-02-11 20:07:38 +080030 echo " --patch for only am patches"
Wanwei Jiang0c2b2002023-02-17 19:09:50 +080031 echo " -v for kernel version: common13-5.15 common14-5.15"
qinglin.li8d41aaf2023-02-07 19:49:44 +080032 echo " --check_gki_20 for gki 2.0 check kernel build"
Dezhen Wangab7ba642023-03-15 14:10:44 +080033 echo " --dev_config for use the config specified by oem instead of amlogic like ./mk.sh --dev_config a_config+b_config+c_config"
Wanwei Jiang2218b892023-03-17 17:31:21 +080034 echo " --bazel for choose bazel tool to build"
wanwei.jiang612a8882021-11-23 17:12:23 +080035}
wanwei.jiang612a8882021-11-23 17:12:23 +080036
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080037VA=
wanwei.jiang612a8882021-11-23 17:12:23 +080038ARGS=()
39for i in "$@"
40do
41 case $i in
Lei Zhang2853aa52022-08-23 09:40:06 +080042 --arch)
43 ARCH=$2
44 VA=1
45 shift
46 ;;
wanwei.jiang612a8882021-11-23 17:12:23 +080047 --abi)
48 ABI=1
49 shift
50 ;;
51 --build_config)
52 BUILD_CONFIG=$2
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080053 VA=1
wanwei.jiang612a8882021-11-23 17:12:23 +080054 shift
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080055 ;;
wanwei.jiangd7b29ef2021-12-01 19:59:41 +080056 --lto)
57 LTO=$2
58 VA=1
59 shift
60 ;;
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080061 --symbol_strict)
62 KMI_SYMBOL_LIST_STRICT_MODE=$2
63 VA=1
64 shift
wanwei.jiang612a8882021-11-23 17:12:23 +080065 ;;
Wanwei Jiang0a74fb12022-12-09 16:27:40 +080066 --menuconfig)
67 MENUCONFIG=1
68 shift
69 ;;
70 --basicconfig)
71 if [ "$2" = "m" ] || [ "$2" = "n" ]; then
72 BASICCONFIG=$2
73 else
74 BASICCONFIG="m"
75 fi
76 VA=1
wanwei.jiang612a8882021-11-23 17:12:23 +080077 shift
78 ;;
79 --image)
80 IMAGE=1
81 shift
82 ;;
83 --modules)
84 MODULES=1
85 shift
86 break
87 ;;
88 --dtbs)
89 DTB_BUILD=1
90 shift
91 ;;
wanwei.jiang7ef5fd42022-02-18 16:36:19 +080092 --kernel_dir)
93 KERNEL_DIR=$2
94 VA=1
95 shift
96 ;;
97 --common_drivers_dir)
98 COMMON_DRIVERS_DIR=$2
99 VA=1
100 shift
101 ;;
102 --build_dir)
103 BUILD_DIR=$2
104 VA=1
105 shift
106 ;;
wanwei.jiang1482c872022-05-13 20:33:51 +0800107 --check_defconfig)
108 CHECK_DEFCONFIG=1
109 shift
110 ;;
111 --modules_depend)
112 MODULES_DEPEND=1
113 shift
114 ;;
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800115 --android_project)
116 ANDROID_PROJECT=$2
117 VA=1
118 shift
119 ;;
Wanwei Jiang2d4f9742022-09-13 11:22:17 +0800120 --gki_20)
121 GKI_CONFIG=gki_20
wanwei.jiang6fdd3152022-08-01 20:35:05 +0800122 shift
123 ;;
Wanwei Jiang2d4f9742022-09-13 11:22:17 +0800124 --gki_10)
125 GKI_CONFIG=gki_10
wanwei.jiang6fdd3152022-08-01 20:35:05 +0800126 shift
127 ;;
Wanwei Jiang2d4f9742022-09-13 11:22:17 +0800128 --gki_debug)
129 GKI_CONFIG=gki_debug
wanwei.jiang6fdd3152022-08-01 20:35:05 +0800130 shift
131 ;;
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800132 --fast_build)
Wanwei Jianga5edc532022-12-18 17:25:59 +0800133 FAST_BUILD=1
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800134 shift
135 ;;
qinglin.li7a994a02022-12-05 15:04:40 +0800136 --upgrade)
137 UPGRADE_PROJECT=1
138 shift
139 ;;
Dezhen Wang124ad7d2023-02-06 15:35:14 +0800140 --manual_insmod_module)
141 MANUAL_INSMOD_MODULE=1
142 shift
143 ;;
Wanwei Jiange9412ec2023-02-11 20:07:38 +0800144 --patch)
145 ONLY_PATCH=1
146 shift
147 ;;
Wanwei Jiang0c2b2002023-02-17 19:09:50 +0800148 -v)
149 if [[ "$2" == "common13-5.15" ]] ||
150 [[ "$2" == "common14-5.15" ]]; then
151 FULL_KERNEL_VERSION=$2
152 else
153 echo "The kernel version is not available"
154 exit
155 fi
156 VA=1
157 shift
158 ;;
qinglin.li8d41aaf2023-02-07 19:49:44 +0800159 --check_gki_20)
160 CHECK_GKI_20=1
161 GKI_CONFIG=gki_20
162 LTO=none
163 shift
164 ;;
Dezhen Wangab7ba642023-03-15 14:10:44 +0800165 --dev_config)
166 DEV_CONFIG=1
167 CONFIG_GROUP=$2
168 VA=1
169 shift
170 ;;
Wanwei Jiang2218b892023-03-17 17:31:21 +0800171 --bazel)
172 BAZEL=1
173 shift
174 ;;
wanwei.jiang612a8882021-11-23 17:12:23 +0800175 -h|--help)
176 show_help
177 exit 0
178 ;;
179 *)
180 if [[ -n $1 ]];
181 then
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800182 if [[ -z ${VA} ]];
183 then
184 ARGS+=("$1")
185 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800186 fi
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800187 VA=
wanwei.jiang612a8882021-11-23 17:12:23 +0800188 shift
189 ;;
190 esac
191done
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800192
Lei Zhang2853aa52022-08-23 09:40:06 +0800193if [ "${ARCH}" = "arm" ]; then
194 ARGS+=("LOADADDR=0x108000")
195else
196 ARCH=arm64
197fi
198
199set -- "${ARGS[@]}" # other parameters are used as script parameters of build_abi.sh or build.sh
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800200 # amlogic parameters default value
Wanwei Jiang0c2b2002023-02-17 19:09:50 +0800201if [[ ${ONLY_PATCH} -eq "1" ]]; then
202 if [[ -z ${FULL_KERNEL_VERSION} ]]; then
203 if [[ "$(basename $(dirname $0))" == "common-5.15" ]]; then
204 FULL_KERNEL_VERSION="common13-5.15"
205 elif [[ "$(basename $(dirname $0))" == "common14-5.15" ]]; then
206 FULL_KERNEL_VERSION="common14-5.15"
207 fi
208 fi
209 CURRENT_DIR=`pwd`
210 cd $(dirname $0)
211fi
212if [[ -z ${FULL_KERNEL_VERSION} ]]; then
213 FULL_KERNEL_VERSION="common13-5.15"
214fi
215
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800216if [[ -z "${ABI}" ]]; then
217 ABI=0
218fi
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800219if [[ -z "${LTO}" ]]; then
220 LTO=thin
221fi
qinglin.li8d41aaf2023-02-07 19:49:44 +0800222if [[ -n ${CHECK_GKI_20} && -z ${ANDROID_PROJECT} ]]; then
223 ANDROID_PROJECT=ohm
224fi
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800225if [[ -z "${KERNEL_DIR}" ]]; then
226 KERNEL_DIR=common
227fi
228if [[ ! -f ${KERNEL_DIR}/init/main.c ]]; then
229 echo "The directory of kernel does not exist";
230 exit
231fi
232if [[ -z "${COMMON_DRIVERS_DIR}" ]]; then
233 if [[ -d ${KERNEL_DIR}/../common_drivers ]]; then
234 COMMON_DRIVERS_DIR=../common_drivers
235 elif [[ -d "${KERNEL_DIR}/common_drivers" ]]; then
236 COMMON_DRIVERS_DIR=common_drivers
237 fi
238fi
239if [[ ! -f ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/amlogic_utils.sh ]]; then
240 echo "The directory of common_drivers does not exist";
241 exit
242fi
243if [[ -z "${BUILD_CONFIG}" ]]; then
Lei Zhang2853aa52022-08-23 09:40:06 +0800244 if [ "${ARCH}" = "arm64" ]; then
245 BUILD_CONFIG=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/build.config.amlogic
246 elif [ "${ARCH}" = "arm" ]; then
247 BUILD_CONFIG=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/build.config.amlogic32
248 fi
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800249fi
250if [[ -z "${BUILD_DIR}" ]]; then
251 BUILD_DIR=build
252fi
qinglin.lid2edad52023-04-21 10:44:35 +0800253
254#first auto patch when param parse end
255if [[ -f ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/auto_patch/auto_patch.sh ]]; then
256 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/auto_patch/auto_patch.sh ${FULL_KERNEL_VERSION}
257fi
258if [[ ${ONLY_PATCH} -eq "1" ]]; then
259 cd ${CURRENT_DIR}
260 exit
261fi
262
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800263if [[ ! -f ${BUILD_DIR}/build_abi.sh ]]; then
264 echo "The directory of build does not exist";
Wanwei Jiange9412ec2023-02-11 20:07:38 +0800265 exit
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800266fi
267
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800268ROOT_DIR=$(readlink -f $(dirname $0))
269if [[ ! -f ${ROOT_DIR}/${KERNEL_DIR}/init/main.c ]]; then
270 ROOT_DIR=`pwd`
271 if [[ ! -f ${ROOT_DIR}/${KERNEL_DIR}/init/main.c ]]; then
272 echo "the file path of $0 is incorrect"
273 exit
274 fi
275fi
276export ROOT_DIR
277
wanwei.jiang1482c872022-05-13 20:33:51 +0800278CHECK_DEFCONFIG=${CHECK_DEFCONFIG:-0}
279MODULES_DEPEND=${MODULES_DEPEND:-0}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800280if [[ ! -f ${KERNEL_BUILD_VAR_FILE} ]]; then
281 export KERNEL_BUILD_VAR_FILE=`mktemp /tmp/kernel.XXXXXXXXXXXX`
282 RM_KERNEL_BUILD_VAR_FILE=1
283fi
wanwei.jiang1482c872022-05-13 20:33:51 +0800284
Wanwei Jiang2d4f9742022-09-13 11:22:17 +0800285GKI_CONFIG=${GKI_CONFIG:-gki_debug}
wanwei.jiang6fdd3152022-08-01 20:35:05 +0800286
Wanwei Jiang2218b892023-03-17 17:31:21 +0800287export CROSS_COMPILE=
288
289if [ "${ABI}" -eq "1" ]; then
290 export OUT_DIR_SUFFIX="_abi"
291else
292 OUT_DIR_SUFFIX=
293fi
294
wanwei.jiang236e9a32021-12-07 16:34:14 +0800295set -e
Dezhen Wangab7ba642023-03-15 14:10:44 +0800296export ABI BUILD_CONFIG LTO KMI_SYMBOL_LIST_STRICT_MODE CHECK_DEFCONFIG MANUAL_INSMOD_MODULE ARCH
297export KERNEL_DIR COMMON_DRIVERS_DIR BUILD_DIR ANDROID_PROJECT GKI_CONFIG UPGRADE_PROJECT FAST_BUILD CHECK_GKI_20 DEV_CONFIG CONFIG_GROUP
Wanwei Jiang2218b892023-03-17 17:31:21 +0800298export FULL_KERNEL_VERSION BAZEL
299
300echo ROOT_DIR=$ROOT_DIR
301echo 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}
302echo KERNEL_DIR=${KERNEL_DIR} COMMON_DRIVERS_DIR=${COMMON_DRIVERS_DIR} BUILD_DIR=${BUILD_DIR} ANDROID_PROJECT=${ANDROID_PROJECT} GKI_CONFIG=${GKI_CONFIG} UPGRADE_PROJECT=${UPGRADE_PROJECT} FAST_BUILD=${FAST_BUILD} CHECK_GKI_20=${CHECK_GKI_20}
303echo FULL_KERNEL_VERSION=${FULL_KERNEL_VERSION} BAZEL=${BAZEL}
Wanwei Jiange9412ec2023-02-11 20:07:38 +0800304
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800305echo MENUCONFIG=${MENUCONFIG} BASICCONFIG=${BASICCONFIG} IMAGE=${IMAGE} MODULES=${MODULES} DTB_BUILD=${DTB_BUILD}
Wanwei Jiang9bf78402023-02-28 11:17:46 +0800306if [[ -n ${MENUCONFIG} ]] || [[ -n ${BASICCONFIG} ]] || [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800307 # ${ROOT_DIR}/${BUILD_DIR}/config.sh menuconfig
308 HERMETIC_TOOLCHAIN=0
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800309 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800310 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
wanwei.jiang612a8882021-11-23 17:12:23 +0800311
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800312 orig_config=$(mktemp)
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800313 orig_defconfig=$(mktemp)
314 out_config="${OUT_DIR}/.config"
315 out_defconfig="${OUT_DIR}/defconfig"
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800316 changed_config=$(mktemp)
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800317 changed_defconfig=$(mktemp)
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800318
319 if [[ -n ${BASICCONFIG} ]]; then
320 set -x
321 defconfig_name=`basename ${GKI_BASE_CONFIG}`
322 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${defconfig_name})
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800323 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
324 cp ${out_config} ${orig_config}
325 cp ${out_defconfig} ${orig_defconfig}
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800326 if [ "${BASICCONFIG}" = "m" ]; then
327 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
328 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800329 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800330 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
331 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800332 if [ "${ARCH}" = "arm" ]; then
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800333 cp ${out_defconfig} ${GKI_BASE_CONFIG}
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800334 fi
335 set +x
336 echo
337 echo "========================================================"
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800338 echo "==================== .config diff ===================="
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800339 cat ${changed_config}
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800340 echo "==================== defconfig diff ===================="
341 cat ${changed_defconfig}
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800342 echo "========================================================"
343 echo
Wanwei Jiang9bf78402023-02-28 11:17:46 +0800344 elif [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
345 set -x
346 pre_defconfig_cmds
347 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
348 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
349 diff -u ${ROOT_DIR}/${GKI_BASE_CONFIG} ${OUT_DIR}/defconfig
350 post_defconfig_cmds
351 set +x
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800352 else
wanwei.jiang612a8882021-11-23 17:12:23 +0800353 set -x
354 pre_defconfig_cmds
355 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
wanwei.jiang5d97ab12022-07-25 21:30:39 +0800356 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800357 cp ${out_config} ${orig_config}
358 cp ${out_defconfig} ${orig_defconfig}
359 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
360 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
361 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
362 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
wanwei.jiang612a8882021-11-23 17:12:23 +0800363 post_defconfig_cmds
364 set +x
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800365 echo
366 echo "========================================================"
367 echo "if the config follows GKI2.0, please add it to the file amlogic_gki.fragment manually"
368 echo "if the config follows GKI1.0 optimize, please add it to the file amlogic_gki.10 manually"
369 echo "if the config follows GKI1.0 debug, please add it to the file amlogic_gki.debug manually"
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800370 echo "==================== .config diff ===================="
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800371 cat ${changed_config}
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800372 echo "==================== defconfig diff ===================="
373 cat ${changed_defconfig}
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800374 echo "========================================================"
375 echo
wanwei.jiang612a8882021-11-23 17:12:23 +0800376 fi
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800377 rm -f ${orig_config} ${changed_config} ${orig_defconfig} ${changed_defconfig}
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800378 exit
379fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800380
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800381if [[ -n ${IMAGE} ]] || [[ -n ${MODULES} ]] || [[ -n ${DTB_BUILD} ]]; then
382 old_path=${PATH}
383 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
384 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
385
Wanwei Jiangc4e11e12022-12-16 12:50:33 +0800386 if [[ ! -f ${OUT_DIR}/.config ]]; then
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800387 pre_defconfig_cmds
388 set -x
389 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
390 set +x
391 post_defconfig_cmds
Wanwei Jiangc4e11e12022-12-16 12:50:33 +0800392 fi
393
394 if [[ -n ${IMAGE} ]]; then
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800395 set -x
396 if [ "${ARCH}" = "arm64" ]; then
397 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) Image)
398 elif [ "${ARCH}" = "arm" ]; then
399 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) LOADADDR=0x108000 uImage)
wanwei.jiang612a8882021-11-23 17:12:23 +0800400 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800401 set +x
wanwei.jiang612a8882021-11-23 17:12:23 +0800402 fi
Wanwei Jiangc4e11e12022-12-16 12:50:33 +0800403 mkdir -p ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800404 if [[ -n ${DTB_BUILD} ]]; then
405 set -x
406 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) dtbs)
407 set +x
408 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800409 if [[ -n ${MODULES} ]]; then
410 export MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
411 rm -rf ${MODULES_STAGING_DIR}
412 mkdir -p ${MODULES_STAGING_DIR}
413 if [ "${DO_NOT_STRIP_MODULES}" != "1" ]; then
414 MODULE_STRIP_FLAG="INSTALL_MOD_STRIP=1"
415 fi
416 if [[ `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
417 set -x
418 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) modules)
419 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} "${MAKE_ARGS[@]}" modules_install)
420 set +x
421 fi
422 echo EXT_MODULES=$EXT_MODULES
423 prepare_module_build
424 if [[ -z "${SKIP_EXT_MODULES}" ]] && [[ -n "${EXT_MODULES}" ]]; then
425 echo "========================================================"
426 echo " Building external modules and installing them into staging directory"
427 KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
428 for EXT_MOD in ${EXT_MODULES}; do
429 EXT_MOD_REL=$(rel_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
430 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
431 set -x
432 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
433 O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}"
434 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
435 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
436 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
437 INSTALL_MOD_DIR="extra/${EXT_MOD}" \
438 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" \
439 "${MAKE_ARGS[@]}" modules_install
440 set +x
441 done
442 fi
443 export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
444 set -x
445 extra_cmds
446 set +x
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800447 MODULES=$(find ${MODULES_STAGING_DIR} -type f -name "*.ko")
448 cp -p ${MODULES} ${DIST_DIR}
449
450 new_path=${PATH}
451 PATH=${old_path}
452 echo "========================================================"
453 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
454 echo "Rebuild rootfs in order to install modules!"
455 rebuild_rootfs ${ARCH}
456 else
457 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
458 fi
459 PATH=${new_path}
460 fi
461 if [ -n "${DTS_EXT_DIR}" ]; then
462 if [ -d "${ROOT_DIR}/${DTS_EXT_DIR}" ]; then
463 DTS_EXT_DIR=$(rel_path ${ROOT_DIR}/${DTS_EXT_DIR} ${KERNEL_DIR})
464 if [ -d ${OUT_DIR}/${DTS_EXT_DIR} ]; then
465 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
466 fi
467 fi
468 fi
469 for FILE in ${FILES}; do
470 if [ -f ${OUT_DIR}/${FILE} ]; then
471 echo " $FILE"
472 cp -p ${OUT_DIR}/${FILE} ${DIST_DIR}/
473 elif [[ "${FILE}" =~ \.dtb|\.dtbo ]] && \
474 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
475 # DTS_EXT_DIR is recalculated before to be relative to KERNEL_DIR
476 echo " $FILE"
477 cp -p "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" "${DIST_DIR}/"
478 else
479 echo " $FILE is not a file, skipping"
480 fi
481 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800482 exit
483fi
484
485if [ "${ABI}" -eq "1" ]; then
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800486 ${ROOT_DIR}/${BUILD_DIR}/build_abi.sh "$@"
wanwei.jiang612a8882021-11-23 17:12:23 +0800487else
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800488 if [[ "${FULL_KERNEL_VERSION}" != "common13-5.15" ]]; then
Wanwei Jiang2218b892023-03-17 17:31:21 +0800489 if [[ ${BAZEL} == 1 ]]; then
490 args="$@ --lto=${LTO}"
491 PROJECT_DIR=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/project
492 [[ -d ${PROJECT_DIR} ]] || mkdir -p ${PROJECT_DIR}
493
494 if [[ ! -f ${PROJECT_DIR}/build.config.project ]]; then
495 touch ${PROJECT_DIR}/build.config.project
496 echo "# SPDX-License-Identifier: GPL-2.0" > ${PROJECT_DIR}/build.config.project
497 echo >> ${PROJECT_DIR}/build.config.project
498 fi
499
500 [[ -f ${PROJECT_DIR}/build.config.gki10 ]] || touch ${PROJECT_DIR}/build.config.gki10
501 echo "# SPDX-License-Identifier: GPL-2.0" > ${PROJECT_DIR}/build.config.gki10
502 echo >> ${PROJECT_DIR}/build.config.gki10
503 echo "GKI_CONFIG=${GKI_CONFIG}" >> ${PROJECT_DIR}/build.config.gki10
504 echo "ANDROID_PROJECT=${ANDROID_PROJECT}" >> ${PROJECT_DIR}/build.config.gki10
505 echo "GKI_BUILD_CONFIG_FRAGMENT=${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/build.config.amlogic.fragment.bazel" >> ${PROJECT_DIR}/build.config.gki10
506 echo "COMMON_DRIVERS_DIR=${COMMON_DRIVERS_DIR}" >> ${PROJECT_DIR}/build.config.gki10
507
508 if [[ ${GKI_CONFIG} == gki_20 ]]; then
509 [[ -n ${ANDROID_PROJECT} ]] && sed -i "/GKI_BUILD_CONFIG_FRAGMENT/d" ${PROJECT_DIR}/build.config.gki10
510 else
511 args="${args} --allow_undeclared_modules"
512 fi
513
514 if [[ ! -f ${PROJECT_DIR}/project.bzl ]]; then
515 touch ${PROJECT_DIR}/project.bzl
516 echo "# SPDX-License-Identifier: GPL-2.0" > ${PROJECT_DIR}/project.bzl
517 echo >> ${PROJECT_DIR}/project.bzl
518
519 echo "AMLOGIC_MODULES_ANDROID = [" >> ${PROJECT_DIR}/project.bzl
520 echo " \"common_drivers/drivers/tty/serial/amlogic-uart.ko\"," >> ${PROJECT_DIR}/project.bzl
521 echo "]" >> ${PROJECT_DIR}/project.bzl
522
523 echo >> ${PROJECT_DIR}/project.bzl
524 echo "EXT_MODULES_ANDROID = [" >> ${PROJECT_DIR}/project.bzl
525 echo "]" >> ${PROJECT_DIR}/project.bzl
526 fi
527
528 if [[ -z ${ANDROID_PROJECT} ]]; then
529 sed -i "/amlogic-uart.ko/d" ${PROJECT_DIR}/project.bzl
530 else
531 echo >> ${PROJECT_DIR}/project.bzl
532 echo "ANDROID_PROJECT = \"${ANDROID_PROJECT}\"" >> ${PROJECT_DIR}/project.bzl
533 fi
534
535 [[ -f ${PROJECT_DIR}/dtb.bzl ]] || touch ${PROJECT_DIR}/dtb.bzl
536 echo "# SPDX-License-Identifier: GPL-2.0" > ${PROJECT_DIR}/dtb.bzl
537 echo >> ${PROJECT_DIR}/dtb.bzl
538
539 echo "AMLOGIC_DTBS = [" >> ${PROJECT_DIR}/dtb.bzl
540 cat ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/arch/${ARCH}/boot/dts/amlogic/Makefile | grep -n "dtb" | cut -d "=" -f 2 | sed 's/[[:space:]][[:space:]]*/ /g' | sed 's/^[ ]*//' | sed 's/[ ]*$//' | sed '/^#/d;/^$/d' | sed 's/^/ "/' | sed 's/$/",/' >> ${PROJECT_DIR}/dtb.bzl
541 echo "]" >> ${PROJECT_DIR}/dtb.bzl
542
543 echo args=${args}
544 tools/bazel run //common:amlogic_dist --sandbox_debug --verbose_failures ${args}
545
546 sed -i "/GKI_BUILD_CONFIG_FRAGMENT/d" ${PROJECT_DIR}/build.config.gki10
547
548 source ${KERNEL_DIR}/build.config.constants
549 export COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}})
550 export DIST_DIR=$(readlink -m ${DIST_DIR:-${COMMON_OUT_DIR}/dist})
551 source ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/amlogic_utils.sh
552
553 bazel_extra_cmds
554 else
555 if [[ -z ${EXT_MODULES} ]]; then
556 echo
557 echo
558 echo "========================================================"
559 echo " Build GKI boot image and GKI modules"
560 echo
561 source ${KERNEL_DIR}/build.config.constants
562 export OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}_gki})
563 COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}})
564 export DIST_GKI_DIR=$(readlink -m ${DIST_DIR:-${COMMON_OUT_DIR}/dist})
565
566 if [[ "${GKI_CONFIG}" == "gki_20" ]]; then
567 BUILD_CONFIG=${KERNEL_DIR}/build.config.gki.aarch64 ${ROOT_DIR}/${BUILD_DIR}/build.sh
568 else
569 export IN_BUILD_GKI_10=1
570 ${ROOT_DIR}/${BUILD_DIR}/build.sh
571 unset IN_BUILD_GKI_10
572 fi
573 unset OUT_DIR
574 fi
575
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800576 echo
577 echo
578 echo "========================================================"
Wanwei Jiang2218b892023-03-17 17:31:21 +0800579 echo " Build Vendor modules"
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800580 echo
Wanwei Jiang2218b892023-03-17 17:31:21 +0800581 ${ROOT_DIR}/${BUILD_DIR}/build.sh "$@"
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800582 fi
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800583 else
584 ${ROOT_DIR}/${BUILD_DIR}/build.sh "$@"
585 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800586fi
587
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800588source ${ROOT_DIR}/${BUILD_CONFIG}
589
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800590source ${KERNEL_BUILD_VAR_FILE}
591if [[ -n ${RM_KERNEL_BUILD_VAR_FILE} ]]; then
592 rm -f ${KERNEL_BUILD_VAR_FILE}
593fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800594
Wanwei Jiang2218b892023-03-17 17:31:21 +0800595rename_external_module_name
596
wanwei.jiang236e9a32021-12-07 16:34:14 +0800597echo "========================================================"
wanwei.jiangf73b2202022-07-23 16:00:44 +0800598if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
599 echo "Rebuild rootfs in order to install modules!"
Lei Zhang2853aa52022-08-23 09:40:06 +0800600 rebuild_rootfs ${ARCH}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800601else
602 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
wanwei.jiang612a8882021-11-23 17:12:23 +0800603fi
wanwei.jiang236e9a32021-12-07 16:34:14 +0800604set +e
wanwei.jiang1482c872022-05-13 20:33:51 +0800605
606if [[ ${MODULES_DEPEND} -eq "1" ]]; then
607 echo "========================================================"
608 echo "print modules depend"
609 check_undefined_symbol
610fi
Dezhen Wangd40fa552023-04-11 16:13:27 +0800611
612abi_symbol_list_detect # detect symbol information that should be submitted