blob: 730078a97e5ced8c66531cb05f526418c25eb253 [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
wanwei.jiang5c8d2b62021-11-26 20:36:33 +08006 echo " --nongki for AMLOGIC_NONGKI, build in modules, not build out modules, 1[default]|0, require parameter value"
7 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"
9 echo " --userdebug for AMLOGIC_USERDEBUG, 1[default]|0, require parameter value"
10 echo " --symbol_strict for KMI_SYMBOL_LIST_STRICT_MODE, 1[default]|0, require parameter value"
wanwei.jiangd7b29ef2021-12-01 19:59:41 +080011 echo " --lto for LTO, full|thin[default]|none, require parameter value"
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080012 echo " --menuconfig for only menuconfig, not require parameter value"
13 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.jiang612a8882021-11-23 17:12:23 +080016}
17 # amlogic parameters default value
18if [[ -z "${AMLOGIC_NONGKI}" ]]; then
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080019 AMLOGIC_NONGKI=1
wanwei.jiang612a8882021-11-23 17:12:23 +080020fi
21if [[ -z "${ABI}" ]]; then
22 ABI=0
23fi
24if [[ -z "${BUILD_CONFIG}" ]]; then
25 BUILD_CONFIG=common_drivers/build.config.amlogic
26fi
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080027if [[ -z "${AMLOGIC_USERDEBUG}" ]]; then
28 AMLOGIC_USERDEBUG=1
29fi
wanwei.jiangd7b29ef2021-12-01 19:59:41 +080030if [[ -z "${LTO}" ]]; then
31 LTO=thin
32fi
wanwei.jiang612a8882021-11-23 17:12:23 +080033
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080034VA=
wanwei.jiang612a8882021-11-23 17:12:23 +080035ARGS=()
36for i in "$@"
37do
38 case $i in
39 --nongki)
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080040 AMLOGIC_NONGKI=$2
41 VA=1
wanwei.jiang612a8882021-11-23 17:12:23 +080042 shift
43 ;;
44 --abi)
45 ABI=1
46 shift
47 ;;
48 --build_config)
49 BUILD_CONFIG=$2
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080050 VA=1
wanwei.jiang612a8882021-11-23 17:12:23 +080051 shift
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080052 ;;
53 --userdebug)
54 AMLOGIC_USERDEBUG=$2
55 VA=1
56 shift
57 ;;
wanwei.jiangd7b29ef2021-12-01 19:59:41 +080058 --lto)
59 LTO=$2
60 VA=1
61 shift
62 ;;
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080063 --symbol_strict)
64 KMI_SYMBOL_LIST_STRICT_MODE=$2
65 VA=1
66 shift
wanwei.jiang612a8882021-11-23 17:12:23 +080067 ;;
68 --menuconfig)
69 MENUCONFIG=1
70 shift
71 ;;
72 --image)
73 IMAGE=1
74 shift
75 ;;
76 --modules)
77 MODULES=1
78 shift
79 break
80 ;;
81 --dtbs)
82 DTB_BUILD=1
83 shift
84 ;;
85 -h|--help)
86 show_help
87 exit 0
88 ;;
89 *)
90 if [[ -n $1 ]];
91 then
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080092 if [[ -z ${VA} ]];
93 then
94 ARGS+=("$1")
95 fi
wanwei.jiang612a8882021-11-23 17:12:23 +080096 fi
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080097 VA=
wanwei.jiang612a8882021-11-23 17:12:23 +080098 shift
99 ;;
100 esac
101done
102
103set -- "${ARGS[@]}" # other parameters are used as script parameters of build_abi.sh or build.sh
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800104export AMLOGIC_NONGKI ABI BUILD_CONFIG AMLOGIC_USERDEBUG LTO KMI_SYMBOL_LIST_STRICT_MODE
105echo AMLOGIC_NONGKI=${AMLOGIC_NONGKI} ABI=${ABI} BUILD_CONFIG=${BUILD_CONFIG} AMLOGIC_USERDEBUG=${AMLOGIC_USERDEBUG} LTO=${LTO} KMI_SYMBOL_LIST_STRICT_MODE=${KMI_SYMBOL_LIST_STRICT_MODE}
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800106
107export KERNEL_DIR=common
108export ROOT_DIR=$(readlink -f $(dirname $0)/..)
109source ${ROOT_DIR}/common_drivers/build.config.amlogic
wanwei.jiang612a8882021-11-23 17:12:23 +0800110
111if [ "${ABI}" -eq "1" ]; then
112 export OUT_DIR_SUFFIX="_abi"
113else
114 OUT_DIR_SUFFIX=
115fi
116
117echo MENUCONFIG=${MENUCONFIG} IMAGE=${IMAGE} MODULES=${MODULES} DTB_BUILD=${DTB_BUILD}
118if [[ -n ${MENUCONFIG} ]] || [[ -n ${IMAGE} ]] || [[ -n ${MODULES} ]] || [[ -n ${DTB_BUILD} ]]; then
119
120 source "${ROOT_DIR}/build/_setup_env.sh"
121 source "${ROOT_DIR}/build/build_utils.sh"
122
123 if [[ -n ${MENUCONFIG} ]]; then
124 set -x
125 pre_defconfig_cmds
126 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
127 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
128 post_defconfig_cmds
129 set +x
130 fi
131 if [[ -n ${IMAGE} ]]; then
132 set -x
133 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) Image)
134 set +x
135 fi
136 if [[ -n ${MODULES} ]]; then
137 if [[ ${AMLOGIC_NONGKI} -eq "1" ]];
138 then
139 set -x
140 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) modules)
141 set +x
142 else
143 echo EXT_MODULES=$EXT_MODULES
144 set -x
145 prepare_module_build
146 if [[ -z "${SKIP_EXT_MODULES}" ]] && [[ -n "${EXT_MODULES}" ]]; then
147 echo "========================================================"
148 echo " Building external modules and installing them into staging directory"
149
150 MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
151 KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
152 for EXT_MOD in ${EXT_MODULES}; do
153 EXT_MOD_REL=$(rel_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
154 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
155 set -x
156 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
157 O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}"
158 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
159 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
160 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
161 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" \
162 "${MAKE_ARGS[@]}" modules_install
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800163 set +x
wanwei.jiang612a8882021-11-23 17:12:23 +0800164 done
165 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800166 set +x
167 fi
168 fi
169 if [[ -n ${DTB_BUILD} ]]; then
170 set -x
171 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) dtbs)
172 set +x
173 fi
174 exit
175fi
176
177if [ "${ABI}" -eq "1" ]; then
178 source build/build_abi.sh "$@" 2>&1 | tee abi_amlogic_out-log.txt
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800179 build_result=`cat abi_amlogic_out-log.txt | grep "make" | grep "Error" `
180 if [ -n "${build_result}" ];
181 then
182 echo "build_abi error, exit!"
183 exit
184 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800185else
186 source build/build.sh "$@" 2>&1 | tee amlogic_out-log.txt
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800187 build_result=`cat amlogic_out-log.txt | grep "make" | grep "Error" `
188 if [ -n "${build_result}" ];
189 then
190 echo "build error, exit!"
191 exit
192 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800193fi
194
195echo "========================================================"
196echo ""
197export COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}})
198export OUT_DIR=$(readlink -m ${COMMON_OUT_DIR}/${KERNEL_DIR})
199export DIST_DIR=$(readlink -m ${DIST_DIR:-${COMMON_OUT_DIR}/dist})
200export MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
201echo COMMON_OUT_DIR=$COMMON_OUT_DIR OUT_DIR=$OUT_DIR DIST_DIR=$DIST_DIR MODULES_STAGING_DIR=$MODULES_STAGING_DIR KERNEL_DIR=$KERNEL_DIR
202# source ${ROOT_DIR}/common_drivers/amlogic_utils.sh
203
204if [ -f ${ROOT_DIR}/common_drivers/rootfs_base.cpio.gz.uboot ]; then
205 echo "========================================================"
206 echo "Rebuild rootfs in order to install modules!"
207 rebuild_rootfs
208else
209 echo "========================================================"
210 echo "There's no file ${ROOT_DIR}/common_drivers/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
211fi
wanwei.jiang403c9942021-11-30 18:29:02 +0800212
213check_undefined_symbol