blob: 98aa79dafce6aef03f1883b15e21f275c3e8ddbf [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.jiang612a8882021-11-23 17:12:23 +080034}
wanwei.jiang612a8882021-11-23 17:12:23 +080035
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080036VA=
wanwei.jiang612a8882021-11-23 17:12:23 +080037ARGS=()
38for i in "$@"
39do
40 case $i in
Lei Zhang2853aa52022-08-23 09:40:06 +080041 --arch)
42 ARCH=$2
43 VA=1
44 shift
45 ;;
wanwei.jiang612a8882021-11-23 17:12:23 +080046 --abi)
47 ABI=1
48 shift
49 ;;
50 --build_config)
51 BUILD_CONFIG=$2
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080052 VA=1
wanwei.jiang612a8882021-11-23 17:12:23 +080053 shift
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080054 ;;
wanwei.jiangd7b29ef2021-12-01 19:59:41 +080055 --lto)
56 LTO=$2
57 VA=1
58 shift
59 ;;
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080060 --symbol_strict)
61 KMI_SYMBOL_LIST_STRICT_MODE=$2
62 VA=1
63 shift
wanwei.jiang612a8882021-11-23 17:12:23 +080064 ;;
Wanwei Jiang0a74fb12022-12-09 16:27:40 +080065 --menuconfig)
66 MENUCONFIG=1
67 shift
68 ;;
69 --basicconfig)
70 if [ "$2" = "m" ] || [ "$2" = "n" ]; then
71 BASICCONFIG=$2
72 else
73 BASICCONFIG="m"
74 fi
75 VA=1
wanwei.jiang612a8882021-11-23 17:12:23 +080076 shift
77 ;;
78 --image)
79 IMAGE=1
80 shift
81 ;;
82 --modules)
83 MODULES=1
84 shift
85 break
86 ;;
87 --dtbs)
88 DTB_BUILD=1
89 shift
90 ;;
wanwei.jiang7ef5fd42022-02-18 16:36:19 +080091 --kernel_dir)
92 KERNEL_DIR=$2
93 VA=1
94 shift
95 ;;
96 --common_drivers_dir)
97 COMMON_DRIVERS_DIR=$2
98 VA=1
99 shift
100 ;;
101 --build_dir)
102 BUILD_DIR=$2
103 VA=1
104 shift
105 ;;
wanwei.jiang1482c872022-05-13 20:33:51 +0800106 --check_defconfig)
107 CHECK_DEFCONFIG=1
108 shift
109 ;;
110 --modules_depend)
111 MODULES_DEPEND=1
112 shift
113 ;;
wanwei.jiang3eab75f2022-05-25 00:39:52 +0800114 --android_project)
115 ANDROID_PROJECT=$2
116 VA=1
117 shift
118 ;;
Wanwei Jiang2d4f9742022-09-13 11:22:17 +0800119 --gki_20)
120 GKI_CONFIG=gki_20
wanwei.jiang6fdd3152022-08-01 20:35:05 +0800121 shift
122 ;;
Wanwei Jiang2d4f9742022-09-13 11:22:17 +0800123 --gki_10)
124 GKI_CONFIG=gki_10
wanwei.jiang6fdd3152022-08-01 20:35:05 +0800125 shift
126 ;;
Wanwei Jiang2d4f9742022-09-13 11:22:17 +0800127 --gki_debug)
128 GKI_CONFIG=gki_debug
wanwei.jiang6fdd3152022-08-01 20:35:05 +0800129 shift
130 ;;
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800131 --fast_build)
Wanwei Jianga5edc532022-12-18 17:25:59 +0800132 FAST_BUILD=1
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800133 shift
134 ;;
qinglin.li7a994a02022-12-05 15:04:40 +0800135 --upgrade)
136 UPGRADE_PROJECT=1
137 shift
138 ;;
Dezhen Wang124ad7d2023-02-06 15:35:14 +0800139 --manual_insmod_module)
140 MANUAL_INSMOD_MODULE=1
141 shift
142 ;;
Wanwei Jiange9412ec2023-02-11 20:07:38 +0800143 --patch)
144 ONLY_PATCH=1
145 shift
146 ;;
Wanwei Jiang0c2b2002023-02-17 19:09:50 +0800147 -v)
148 if [[ "$2" == "common13-5.15" ]] ||
149 [[ "$2" == "common14-5.15" ]]; then
150 FULL_KERNEL_VERSION=$2
151 else
152 echo "The kernel version is not available"
153 exit
154 fi
155 VA=1
156 shift
157 ;;
qinglin.li8d41aaf2023-02-07 19:49:44 +0800158 --check_gki_20)
159 CHECK_GKI_20=1
160 GKI_CONFIG=gki_20
161 LTO=none
162 shift
163 ;;
Dezhen Wangab7ba642023-03-15 14:10:44 +0800164 --dev_config)
165 DEV_CONFIG=1
166 CONFIG_GROUP=$2
167 VA=1
168 shift
169 ;;
wanwei.jiang612a8882021-11-23 17:12:23 +0800170 -h|--help)
171 show_help
172 exit 0
173 ;;
174 *)
175 if [[ -n $1 ]];
176 then
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800177 if [[ -z ${VA} ]];
178 then
179 ARGS+=("$1")
180 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800181 fi
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800182 VA=
wanwei.jiang612a8882021-11-23 17:12:23 +0800183 shift
184 ;;
185 esac
186done
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800187
Lei Zhang2853aa52022-08-23 09:40:06 +0800188if [ "${ARCH}" = "arm" ]; then
189 ARGS+=("LOADADDR=0x108000")
190else
191 ARCH=arm64
192fi
193
194set -- "${ARGS[@]}" # other parameters are used as script parameters of build_abi.sh or build.sh
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800195 # amlogic parameters default value
Wanwei Jiang0c2b2002023-02-17 19:09:50 +0800196if [[ ${ONLY_PATCH} -eq "1" ]]; then
197 if [[ -z ${FULL_KERNEL_VERSION} ]]; then
198 if [[ "$(basename $(dirname $0))" == "common-5.15" ]]; then
199 FULL_KERNEL_VERSION="common13-5.15"
200 elif [[ "$(basename $(dirname $0))" == "common14-5.15" ]]; then
201 FULL_KERNEL_VERSION="common14-5.15"
202 fi
203 fi
204 CURRENT_DIR=`pwd`
205 cd $(dirname $0)
206fi
207if [[ -z ${FULL_KERNEL_VERSION} ]]; then
208 FULL_KERNEL_VERSION="common13-5.15"
209fi
210
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800211if [[ -z "${ABI}" ]]; then
212 ABI=0
213fi
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800214if [[ -z "${LTO}" ]]; then
215 LTO=thin
216fi
qinglin.li8d41aaf2023-02-07 19:49:44 +0800217if [[ -n ${CHECK_GKI_20} && -z ${ANDROID_PROJECT} ]]; then
218 ANDROID_PROJECT=ohm
219fi
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800220if [[ -z "${KERNEL_DIR}" ]]; then
221 KERNEL_DIR=common
222fi
223if [[ ! -f ${KERNEL_DIR}/init/main.c ]]; then
224 echo "The directory of kernel does not exist";
225 exit
226fi
227if [[ -z "${COMMON_DRIVERS_DIR}" ]]; then
228 if [[ -d ${KERNEL_DIR}/../common_drivers ]]; then
229 COMMON_DRIVERS_DIR=../common_drivers
230 elif [[ -d "${KERNEL_DIR}/common_drivers" ]]; then
231 COMMON_DRIVERS_DIR=common_drivers
232 fi
233fi
234if [[ ! -f ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/amlogic_utils.sh ]]; then
235 echo "The directory of common_drivers does not exist";
236 exit
237fi
238if [[ -z "${BUILD_CONFIG}" ]]; then
Lei Zhang2853aa52022-08-23 09:40:06 +0800239 if [ "${ARCH}" = "arm64" ]; then
240 BUILD_CONFIG=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/build.config.amlogic
241 elif [ "${ARCH}" = "arm" ]; then
242 BUILD_CONFIG=${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/build.config.amlogic32
243 fi
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800244fi
245if [[ -z "${BUILD_DIR}" ]]; then
246 BUILD_DIR=build
247fi
248if [[ ! -f ${BUILD_DIR}/build_abi.sh ]]; then
249 echo "The directory of build does not exist";
Wanwei Jiange9412ec2023-02-11 20:07:38 +0800250 exit
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800251fi
252
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800253ROOT_DIR=$(readlink -f $(dirname $0))
254if [[ ! -f ${ROOT_DIR}/${KERNEL_DIR}/init/main.c ]]; then
255 ROOT_DIR=`pwd`
256 if [[ ! -f ${ROOT_DIR}/${KERNEL_DIR}/init/main.c ]]; then
257 echo "the file path of $0 is incorrect"
258 exit
259 fi
260fi
261export ROOT_DIR
262
wanwei.jiang1482c872022-05-13 20:33:51 +0800263CHECK_DEFCONFIG=${CHECK_DEFCONFIG:-0}
264MODULES_DEPEND=${MODULES_DEPEND:-0}
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800265if [[ ! -f ${KERNEL_BUILD_VAR_FILE} ]]; then
266 export KERNEL_BUILD_VAR_FILE=`mktemp /tmp/kernel.XXXXXXXXXXXX`
267 RM_KERNEL_BUILD_VAR_FILE=1
268fi
wanwei.jiang1482c872022-05-13 20:33:51 +0800269
Wanwei Jiang2d4f9742022-09-13 11:22:17 +0800270GKI_CONFIG=${GKI_CONFIG:-gki_debug}
wanwei.jiang6fdd3152022-08-01 20:35:05 +0800271
wanwei.jiang236e9a32021-12-07 16:34:14 +0800272set -e
Dezhen Wangab7ba642023-03-15 14:10:44 +0800273export ABI BUILD_CONFIG LTO KMI_SYMBOL_LIST_STRICT_MODE CHECK_DEFCONFIG MANUAL_INSMOD_MODULE ARCH
274export KERNEL_DIR COMMON_DRIVERS_DIR BUILD_DIR ANDROID_PROJECT GKI_CONFIG UPGRADE_PROJECT FAST_BUILD CHECK_GKI_20 DEV_CONFIG CONFIG_GROUP
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800275export FULL_KERNEL_VERSION
Wanwei Jiange9412ec2023-02-11 20:07:38 +0800276
Wanwei Jiang19d6cc02023-03-02 22:42:40 +0800277if [[ -f ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/auto_patch/auto_patch.sh ]]; then
278 ${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/auto_patch/auto_patch.sh ${FULL_KERNEL_VERSION}
Wanwei Jiange9412ec2023-02-11 20:07:38 +0800279fi
280if [[ ${ONLY_PATCH} -eq "1" ]]; then
281 cd ${CURRENT_DIR}
282 exit
283fi
284
285echo ROOT_DIR=$ROOT_DIR
286echo 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.li8d41aaf2023-02-07 19:49:44 +0800287echo 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}
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800288echo FULL_KERNEL_VERSION=${FULL_KERNEL_VERSION}
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800289
Wanwei Jiangac25a172022-11-03 16:49:32 +0800290export CROSS_COMPILE=
291
wanwei.jiang612a8882021-11-23 17:12:23 +0800292if [ "${ABI}" -eq "1" ]; then
293 export OUT_DIR_SUFFIX="_abi"
294else
295 OUT_DIR_SUFFIX=
296fi
297
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800298echo MENUCONFIG=${MENUCONFIG} BASICCONFIG=${BASICCONFIG} IMAGE=${IMAGE} MODULES=${MODULES} DTB_BUILD=${DTB_BUILD}
Wanwei Jiang9bf78402023-02-28 11:17:46 +0800299if [[ -n ${MENUCONFIG} ]] || [[ -n ${BASICCONFIG} ]] || [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800300 # ${ROOT_DIR}/${BUILD_DIR}/config.sh menuconfig
301 HERMETIC_TOOLCHAIN=0
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800302 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800303 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
wanwei.jiang612a8882021-11-23 17:12:23 +0800304
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800305 orig_config=$(mktemp)
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800306 orig_defconfig=$(mktemp)
307 out_config="${OUT_DIR}/.config"
308 out_defconfig="${OUT_DIR}/defconfig"
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800309 changed_config=$(mktemp)
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800310 changed_defconfig=$(mktemp)
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800311
312 if [[ -n ${BASICCONFIG} ]]; then
313 set -x
314 defconfig_name=`basename ${GKI_BASE_CONFIG}`
315 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${defconfig_name})
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800316 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
317 cp ${out_config} ${orig_config}
318 cp ${out_defconfig} ${orig_defconfig}
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800319 if [ "${BASICCONFIG}" = "m" ]; then
320 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
321 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800322 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800323 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
324 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800325 if [ "${ARCH}" = "arm" ]; then
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800326 cp ${out_defconfig} ${GKI_BASE_CONFIG}
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800327 fi
328 set +x
329 echo
330 echo "========================================================"
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800331 echo "==================== .config diff ===================="
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800332 cat ${changed_config}
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800333 echo "==================== defconfig diff ===================="
334 cat ${changed_defconfig}
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800335 echo "========================================================"
336 echo
Wanwei Jiang9bf78402023-02-28 11:17:46 +0800337 elif [[ ${CHECK_DEFCONFIG} -eq "1" ]]; then
338 set -x
339 pre_defconfig_cmds
340 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
341 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
342 diff -u ${ROOT_DIR}/${GKI_BASE_CONFIG} ${OUT_DIR}/defconfig
343 post_defconfig_cmds
344 set +x
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800345 else
wanwei.jiang612a8882021-11-23 17:12:23 +0800346 set -x
347 pre_defconfig_cmds
348 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
wanwei.jiang5d97ab12022-07-25 21:30:39 +0800349 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800350 cp ${out_config} ${orig_config}
351 cp ${out_defconfig} ${orig_defconfig}
352 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
353 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" savedefconfig)
354 ${KERNEL_DIR}/scripts/diffconfig ${orig_config} ${out_config} > ${changed_config}
355 ${KERNEL_DIR}/scripts/diffconfig ${orig_defconfig} ${out_defconfig} > ${changed_defconfig}
wanwei.jiang612a8882021-11-23 17:12:23 +0800356 post_defconfig_cmds
357 set +x
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800358 echo
359 echo "========================================================"
360 echo "if the config follows GKI2.0, please add it to the file amlogic_gki.fragment manually"
361 echo "if the config follows GKI1.0 optimize, please add it to the file amlogic_gki.10 manually"
362 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 +0800363 echo "==================== .config diff ===================="
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800364 cat ${changed_config}
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800365 echo "==================== defconfig diff ===================="
366 cat ${changed_defconfig}
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800367 echo "========================================================"
368 echo
wanwei.jiang612a8882021-11-23 17:12:23 +0800369 fi
Wanwei Jiangb3b3ca02022-12-29 18:03:05 +0800370 rm -f ${orig_config} ${changed_config} ${orig_defconfig} ${changed_defconfig}
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800371 exit
372fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800373
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800374if [[ -n ${IMAGE} ]] || [[ -n ${MODULES} ]] || [[ -n ${DTB_BUILD} ]]; then
375 old_path=${PATH}
376 source "${ROOT_DIR}/${BUILD_DIR}/build_utils.sh"
377 source "${ROOT_DIR}/${BUILD_DIR}/_setup_env.sh"
378
Wanwei Jiangc4e11e12022-12-16 12:50:33 +0800379 if [[ ! -f ${OUT_DIR}/.config ]]; then
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800380 pre_defconfig_cmds
381 set -x
382 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
383 set +x
384 post_defconfig_cmds
Wanwei Jiangc4e11e12022-12-16 12:50:33 +0800385 fi
386
387 if [[ -n ${IMAGE} ]]; then
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800388 set -x
389 if [ "${ARCH}" = "arm64" ]; then
390 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) Image)
391 elif [ "${ARCH}" = "arm" ]; then
392 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) LOADADDR=0x108000 uImage)
wanwei.jiang612a8882021-11-23 17:12:23 +0800393 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800394 set +x
wanwei.jiang612a8882021-11-23 17:12:23 +0800395 fi
Wanwei Jiangc4e11e12022-12-16 12:50:33 +0800396 mkdir -p ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800397 if [[ -n ${DTB_BUILD} ]]; then
398 set -x
399 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) dtbs)
400 set +x
401 fi
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800402 if [[ -n ${MODULES} ]]; then
403 export MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
404 rm -rf ${MODULES_STAGING_DIR}
405 mkdir -p ${MODULES_STAGING_DIR}
406 if [ "${DO_NOT_STRIP_MODULES}" != "1" ]; then
407 MODULE_STRIP_FLAG="INSTALL_MOD_STRIP=1"
408 fi
409 if [[ `grep "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" ${ROOT_DIR}/${FRAGMENT_CONFIG}` ]]; then
410 set -x
411 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) modules)
412 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} INSTALL_MOD_PATH=${MODULES_STAGING_DIR} "${MAKE_ARGS[@]}" modules_install)
413 set +x
414 fi
415 echo EXT_MODULES=$EXT_MODULES
416 prepare_module_build
417 if [[ -z "${SKIP_EXT_MODULES}" ]] && [[ -n "${EXT_MODULES}" ]]; then
418 echo "========================================================"
419 echo " Building external modules and installing them into staging directory"
420 KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
421 for EXT_MOD in ${EXT_MODULES}; do
422 EXT_MOD_REL=$(rel_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
423 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
424 set -x
425 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
426 O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}"
427 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
428 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
429 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
430 INSTALL_MOD_DIR="extra/${EXT_MOD}" \
431 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" \
432 "${MAKE_ARGS[@]}" modules_install
433 set +x
434 done
435 fi
436 export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
437 set -x
438 extra_cmds
439 set +x
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800440 MODULES=$(find ${MODULES_STAGING_DIR} -type f -name "*.ko")
441 cp -p ${MODULES} ${DIST_DIR}
442
443 new_path=${PATH}
444 PATH=${old_path}
445 echo "========================================================"
446 if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
447 echo "Rebuild rootfs in order to install modules!"
448 rebuild_rootfs ${ARCH}
449 else
450 echo "There's no file ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
451 fi
452 PATH=${new_path}
453 fi
454 if [ -n "${DTS_EXT_DIR}" ]; then
455 if [ -d "${ROOT_DIR}/${DTS_EXT_DIR}" ]; then
456 DTS_EXT_DIR=$(rel_path ${ROOT_DIR}/${DTS_EXT_DIR} ${KERNEL_DIR})
457 if [ -d ${OUT_DIR}/${DTS_EXT_DIR} ]; then
458 FILES="$FILES `ls ${OUT_DIR}/${DTS_EXT_DIR}`"
459 fi
460 fi
461 fi
462 for FILE in ${FILES}; do
463 if [ -f ${OUT_DIR}/${FILE} ]; then
464 echo " $FILE"
465 cp -p ${OUT_DIR}/${FILE} ${DIST_DIR}/
466 elif [[ "${FILE}" =~ \.dtb|\.dtbo ]] && \
467 [ -n "${DTS_EXT_DIR}" ] && [ -f "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" ] ; then
468 # DTS_EXT_DIR is recalculated before to be relative to KERNEL_DIR
469 echo " $FILE"
470 cp -p "${OUT_DIR}/${DTS_EXT_DIR}/${FILE}" "${DIST_DIR}/"
471 else
472 echo " $FILE is not a file, skipping"
473 fi
474 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800475 exit
476fi
477
478if [ "${ABI}" -eq "1" ]; then
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800479 ${ROOT_DIR}/${BUILD_DIR}/build_abi.sh "$@"
wanwei.jiang612a8882021-11-23 17:12:23 +0800480else
Wanwei Jiangc65e4d32023-03-21 16:24:41 +0800481 if [[ "${FULL_KERNEL_VERSION}" != "common13-5.15" ]]; then
482 if [[ -z ${EXT_MODULES} ]]; then
483 echo
484 echo
485 echo "========================================================"
486 echo " Build GKI boot image and GKI modules"
487 echo
488 source ${KERNEL_DIR}/build.config.constants
489 export OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}_gki})
490 COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}})
491 export DIST_GKI_DIR=$(readlink -m ${DIST_DIR:-${COMMON_OUT_DIR}/dist})
492
493 if [[ "${GKI_CONFIG}" == "gki_20" ]]; then
494 BUILD_CONFIG=${KERNEL_DIR}/build.config.gki.aarch64 ${ROOT_DIR}/${BUILD_DIR}/build.sh
495 else
496 export IN_BUILD_GKI_10=1
497 ${ROOT_DIR}/${BUILD_DIR}/build.sh
498 unset IN_BUILD_GKI_10
499 fi
500 unset OUT_DIR
501 fi
502
503 echo
504 echo
505 echo "========================================================"
506 echo " Build Vendor modules"
507 echo
508 ${ROOT_DIR}/${BUILD_DIR}/build.sh "$@"
509 else
510 ${ROOT_DIR}/${BUILD_DIR}/build.sh "$@"
511 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800512fi
513
Wanwei Jiang0a74fb12022-12-09 16:27:40 +0800514source ${ROOT_DIR}/${BUILD_CONFIG}
515
wanwei.jiangc663c4c2022-06-16 14:41:23 +0800516source ${KERNEL_BUILD_VAR_FILE}
517if [[ -n ${RM_KERNEL_BUILD_VAR_FILE} ]]; then
518 rm -f ${KERNEL_BUILD_VAR_FILE}
519fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800520
wanwei.jiang236e9a32021-12-07 16:34:14 +0800521echo "========================================================"
wanwei.jiangf73b2202022-07-23 16:00:44 +0800522if [ -f ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot ]; then
523 echo "Rebuild rootfs in order to install modules!"
Lei Zhang2853aa52022-08-23 09:40:06 +0800524 rebuild_rootfs ${ARCH}
wanwei.jiangf73b2202022-07-23 16:00:44 +0800525else
526 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 +0800527fi
wanwei.jiang236e9a32021-12-07 16:34:14 +0800528set +e
wanwei.jiang1482c872022-05-13 20:33:51 +0800529
530if [[ ${MODULES_DEPEND} -eq "1" ]]; then
531 echo "========================================================"
532 echo "print modules depend"
533 check_undefined_symbol
534fi
Dezhen Wangd40fa552023-04-11 16:13:27 +0800535
536abi_symbol_list_detect # detect symbol information that should be submitted