blob: de60f9694dcede9deaa422d21222a81145caca2c [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 " --abi for ABI, call build_abi.sh not build.sh, 1|0[default], not require parameter value"
7 echo " --build_config for BUILD_CONFIG, common_drivers/build.config.amlogic[default]|common/build.config.gki.aarch64, require parameter value"
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +08008 echo " --break_gki for AMLOGIC_BREAK_GKI, 1[default]|0, 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.jiang5c8d2b62021-11-26 20:36:33 +080011 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
wanwei.jiang612a8882021-11-23 17:12:23 +080017if [[ -z "${ABI}" ]]; then
18 ABI=0
19fi
20if [[ -z "${BUILD_CONFIG}" ]]; then
21 BUILD_CONFIG=common_drivers/build.config.amlogic
22fi
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +080023if [[ -z "${AMLOGIC_BREAK_GKI}" ]]; then
24 AMLOGIC_BREAK_GKI=1
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080025fi
wanwei.jiangd7b29ef2021-12-01 19:59:41 +080026if [[ -z "${LTO}" ]]; then
27 LTO=thin
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
wanwei.jiang612a8882021-11-23 17:12:23 +080035 --abi)
36 ABI=1
37 shift
38 ;;
39 --build_config)
40 BUILD_CONFIG=$2
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080041 VA=1
wanwei.jiang612a8882021-11-23 17:12:23 +080042 shift
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080043 ;;
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +080044 --break_gki)
45 AMLOGIC_BREAK_GKI=$2
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080046 VA=1
47 shift
48 ;;
wanwei.jiangd7b29ef2021-12-01 19:59:41 +080049 --lto)
50 LTO=$2
51 VA=1
52 shift
53 ;;
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080054 --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.jiang236e9a32021-12-07 16:34:14 +080095set -e
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +080096export ABI BUILD_CONFIG AMLOGIC_BREAK_GKI LTO KMI_SYMBOL_LIST_STRICT_MODE
97echo ABI=${ABI} BUILD_CONFIG=${BUILD_CONFIG} AMLOGIC_BREAK_GKI=${AMLOGIC_BREAK_GKI} LTO=${LTO} KMI_SYMBOL_LIST_STRICT_MODE=${KMI_SYMBOL_LIST_STRICT_MODE}
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080098
99export KERNEL_DIR=common
wanwei.jiangdab2fce2021-12-02 10:28:36 +0800100export ROOT_DIR=$(readlink -f $(dirname $0))
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800101source ${ROOT_DIR}/common_drivers/build.config.amlogic
wanwei.jiang612a8882021-11-23 17:12:23 +0800102
103if [ "${ABI}" -eq "1" ]; then
104 export OUT_DIR_SUFFIX="_abi"
105else
106 OUT_DIR_SUFFIX=
107fi
108
109echo MENUCONFIG=${MENUCONFIG} IMAGE=${IMAGE} MODULES=${MODULES} DTB_BUILD=${DTB_BUILD}
110if [[ -n ${MENUCONFIG} ]] || [[ -n ${IMAGE} ]] || [[ -n ${MODULES} ]] || [[ -n ${DTB_BUILD} ]]; then
111
112 source "${ROOT_DIR}/build/_setup_env.sh"
113 source "${ROOT_DIR}/build/build_utils.sh"
114
115 if [[ -n ${MENUCONFIG} ]]; then
116 set -x
117 pre_defconfig_cmds
118 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
119 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
120 post_defconfig_cmds
121 set +x
122 fi
123 if [[ -n ${IMAGE} ]]; then
124 set -x
125 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) Image)
126 set +x
127 fi
128 if [[ -n ${MODULES} ]]; then
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +0800129 if [[ ${IN_KERNEL_MODULES} -eq "1" ]];
wanwei.jiang612a8882021-11-23 17:12:23 +0800130 then
131 set -x
132 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) modules)
133 set +x
134 else
135 echo EXT_MODULES=$EXT_MODULES
136 set -x
137 prepare_module_build
138 if [[ -z "${SKIP_EXT_MODULES}" ]] && [[ -n "${EXT_MODULES}" ]]; then
139 echo "========================================================"
140 echo " Building external modules and installing them into staging directory"
141
142 MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
143 KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
144 for EXT_MOD in ${EXT_MODULES}; do
145 EXT_MOD_REL=$(rel_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
146 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
147 set -x
148 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
149 O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}"
150 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
151 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
152 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
153 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" \
154 "${MAKE_ARGS[@]}" modules_install
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800155 set +x
wanwei.jiang612a8882021-11-23 17:12:23 +0800156 done
157 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800158 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
wanwei.jiang236e9a32021-12-07 16:34:14 +0800170 ${ROOT_DIR}/build/build_abi.sh "$@"
wanwei.jiang612a8882021-11-23 17:12:23 +0800171else
wanwei.jiang236e9a32021-12-07 16:34:14 +0800172 ${ROOT_DIR}/build/build.sh "$@"
wanwei.jiang612a8882021-11-23 17:12:23 +0800173fi
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
wanwei.jiang236e9a32021-12-07 16:34:14 +0800184echo "========================================================"
185echo "prepare modules"
186modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800187if [ -f ${ROOT_DIR}/common_drivers/rootfs_base.cpio.gz.uboot ]; then
wanwei.jiang612a8882021-11-23 17:12:23 +0800188 echo "Rebuild rootfs in order to install modules!"
189 rebuild_rootfs
190else
wanwei.jiang612a8882021-11-23 17:12:23 +0800191 echo "There's no file ${ROOT_DIR}/common_drivers/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
192fi
wanwei.jiang236e9a32021-12-07 16:34:14 +0800193set +e
wanwei.jiang403c9942021-11-30 18:29:02 +0800194check_undefined_symbol