blob: 6f88edb3496318ec7493229806411934bb460c0b [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"
11 echo " --menuconfig for only menuconfig, not require parameter value"
12 echo " --image for only build kernel, not require parameter value"
13 echo " --modules for only build modules, not require parameter value"
14 echo " --dtbs for only build dtbs, not require parameter value"
wanwei.jiang612a8882021-11-23 17:12:23 +080015}
16 # amlogic parameters default value
17if [[ -z "${AMLOGIC_NONGKI}" ]]; then
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080018 AMLOGIC_NONGKI=1
wanwei.jiang612a8882021-11-23 17:12:23 +080019fi
20if [[ -z "${ABI}" ]]; then
21 ABI=0
22fi
23if [[ -z "${BUILD_CONFIG}" ]]; then
24 BUILD_CONFIG=common_drivers/build.config.amlogic
25fi
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080026if [[ -z "${AMLOGIC_USERDEBUG}" ]]; then
27 AMLOGIC_USERDEBUG=1
28fi
wanwei.jiang612a8882021-11-23 17:12:23 +080029
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080030VA=
wanwei.jiang612a8882021-11-23 17:12:23 +080031ARGS=()
32for i in "$@"
33do
34 case $i in
35 --nongki)
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080036 AMLOGIC_NONGKI=$2
37 VA=1
wanwei.jiang612a8882021-11-23 17:12:23 +080038 shift
39 ;;
40 --abi)
41 ABI=1
42 shift
43 ;;
44 --build_config)
45 BUILD_CONFIG=$2
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080046 VA=1
wanwei.jiang612a8882021-11-23 17:12:23 +080047 shift
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080048 ;;
49 --userdebug)
50 AMLOGIC_USERDEBUG=$2
51 VA=1
52 shift
53 ;;
54 --symbol_strict)
55 KMI_SYMBOL_LIST_STRICT_MODE=$2
56 VA=1
57 shift
wanwei.jiang612a8882021-11-23 17:12:23 +080058 ;;
59 --menuconfig)
60 MENUCONFIG=1
61 shift
62 ;;
63 --image)
64 IMAGE=1
65 shift
66 ;;
67 --modules)
68 MODULES=1
69 shift
70 break
71 ;;
72 --dtbs)
73 DTB_BUILD=1
74 shift
75 ;;
76 -h|--help)
77 show_help
78 exit 0
79 ;;
80 *)
81 if [[ -n $1 ]];
82 then
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080083 if [[ -z ${VA} ]];
84 then
85 ARGS+=("$1")
86 fi
wanwei.jiang612a8882021-11-23 17:12:23 +080087 fi
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080088 VA=
wanwei.jiang612a8882021-11-23 17:12:23 +080089 shift
90 ;;
91 esac
92done
93
94set -- "${ARGS[@]}" # other parameters are used as script parameters of build_abi.sh or build.sh
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080095export AMLOGIC_NONGKI ABI BUILD_CONFIG AMLOGIC_USERDEBUG KMI_SYMBOL_LIST_STRICT_MODE
96echo AMLOGIC_NONGKI=${AMLOGIC_NONGKI} ABI=${ABI} BUILD_CONFIG=${BUILD_CONFIG} AMLOGIC_USERDEBUG=${AMLOGIC_USERDEBUG} KMI_SYMBOL_LIST_STRICT_MODE=${KMI_SYMBOL_LIST_STRICT_MODE}
97
98export KERNEL_DIR=common
99export ROOT_DIR=$(readlink -f $(dirname $0)/..)
100source ${ROOT_DIR}/common_drivers/build.config.amlogic
wanwei.jiang612a8882021-11-23 17:12:23 +0800101
102if [ "${ABI}" -eq "1" ]; then
103 export OUT_DIR_SUFFIX="_abi"
104else
105 OUT_DIR_SUFFIX=
106fi
107
108echo MENUCONFIG=${MENUCONFIG} IMAGE=${IMAGE} MODULES=${MODULES} DTB_BUILD=${DTB_BUILD}
109if [[ -n ${MENUCONFIG} ]] || [[ -n ${IMAGE} ]] || [[ -n ${MODULES} ]] || [[ -n ${DTB_BUILD} ]]; then
110
111 source "${ROOT_DIR}/build/_setup_env.sh"
112 source "${ROOT_DIR}/build/build_utils.sh"
113
114 if [[ -n ${MENUCONFIG} ]]; then
115 set -x
116 pre_defconfig_cmds
117 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
118 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
119 post_defconfig_cmds
120 set +x
121 fi
122 if [[ -n ${IMAGE} ]]; then
123 set -x
124 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) Image)
125 set +x
126 fi
127 if [[ -n ${MODULES} ]]; then
128 if [[ ${AMLOGIC_NONGKI} -eq "1" ]];
129 then
130 set -x
131 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) modules)
132 set +x
133 else
134 echo EXT_MODULES=$EXT_MODULES
135 set -x
136 prepare_module_build
137 if [[ -z "${SKIP_EXT_MODULES}" ]] && [[ -n "${EXT_MODULES}" ]]; then
138 echo "========================================================"
139 echo " Building external modules and installing them into staging directory"
140
141 MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
142 KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
143 for EXT_MOD in ${EXT_MODULES}; do
144 EXT_MOD_REL=$(rel_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
145 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
146 set -x
147 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
148 O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}"
149 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
150 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
151 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
152 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" \
153 "${MAKE_ARGS[@]}" modules_install
154 set +x
155 done
156 fi
157
158 set +x
159 fi
160 fi
161 if [[ -n ${DTB_BUILD} ]]; then
162 set -x
163 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) dtbs)
164 set +x
165 fi
166 exit
167fi
168
169if [ "${ABI}" -eq "1" ]; then
170 source build/build_abi.sh "$@" 2>&1 | tee abi_amlogic_out-log.txt
171else
172 source build/build.sh "$@" 2>&1 | tee amlogic_out-log.txt
173fi
174
175echo "========================================================"
176echo ""
177export COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}})
178export OUT_DIR=$(readlink -m ${COMMON_OUT_DIR}/${KERNEL_DIR})
179export DIST_DIR=$(readlink -m ${DIST_DIR:-${COMMON_OUT_DIR}/dist})
180export MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
181echo COMMON_OUT_DIR=$COMMON_OUT_DIR OUT_DIR=$OUT_DIR DIST_DIR=$DIST_DIR MODULES_STAGING_DIR=$MODULES_STAGING_DIR KERNEL_DIR=$KERNEL_DIR
182# source ${ROOT_DIR}/common_drivers/amlogic_utils.sh
183
184if [ -f ${ROOT_DIR}/common_drivers/rootfs_base.cpio.gz.uboot ]; then
185 echo "========================================================"
186 echo "Rebuild rootfs in order to install modules!"
187 rebuild_rootfs
188else
189 echo "========================================================"
190 echo "There's no file ${ROOT_DIR}/common_drivers/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
191fi
wanwei.jiang403c9942021-11-30 18:29:02 +0800192
193check_undefined_symbol