blob: 360429ef7a5f815916afed9278f063648ad7ae3f [file] [log] [blame]
wanwei.jiang612a8882021-11-23 17:12:23 +08001#!/bin/bash
2
3export KERNEL_DIR=common
4export ROOT_DIR=$(readlink -f $(dirname $0)/..)
5source ${ROOT_DIR}/common_drivers/build.config.amlogic
6
7function show_help {
8 echo "USAGE: $0 [--nongki] [--abi]"
9 echo
10 echo " --nongki for AMLOGIC_NONGKI, build in modules, not build out modules, 1|0[default]"
11 echo " --abi for ABI, call build_abi.sh not build.sh, 1|0[default]"
12 echo " --build_config for BUILD_CONFIG, common_drivers/build.config.amlogic[default]|common/build.config.gki.aarch64"
13 echo " --menuconfig for only menuconfig"
14 echo " --image for only build kernel"
15 echo " --modules for only build modules"
16 echo " --dtbs for only build dtbs"
17}
18 # amlogic parameters default value
19if [[ -z "${AMLOGIC_NONGKI}" ]]; then
20 AMLOGIC_NONGKI=0
21fi
22if [[ -z "${ABI}" ]]; then
23 ABI=0
24fi
25if [[ -z "${BUILD_CONFIG}" ]]; then
26 BUILD_CONFIG=common_drivers/build.config.amlogic
27fi
28
29ARGS=()
30for i in "$@"
31do
32 case $i in
33 --nongki)
34 AMLOGIC_NONGKI=1
35 shift
36 ;;
37 --abi)
38 ABI=1
39 shift
40 ;;
41 --build_config)
42 BUILD_CONFIG=$2
43 shift
44 shift
45 ;;
46 --menuconfig)
47 MENUCONFIG=1
48 shift
49 ;;
50 --image)
51 IMAGE=1
52 shift
53 ;;
54 --modules)
55 MODULES=1
56 shift
57 break
58 ;;
59 --dtbs)
60 DTB_BUILD=1
61 shift
62 ;;
63 -h|--help)
64 show_help
65 exit 0
66 ;;
67 *)
68 if [[ -n $1 ]];
69 then
70 ARGS+=("$1")
71 fi
72 shift
73 ;;
74 esac
75done
76
77set -- "${ARGS[@]}" # other parameters are used as script parameters of build_abi.sh or build.sh
78export AMLOGIC_NONGKI ABI BUILD_CONFIG
79
80if [ "${ABI}" -eq "1" ]; then
81 export OUT_DIR_SUFFIX="_abi"
82else
83 OUT_DIR_SUFFIX=
84fi
85
86echo MENUCONFIG=${MENUCONFIG} IMAGE=${IMAGE} MODULES=${MODULES} DTB_BUILD=${DTB_BUILD}
87if [[ -n ${MENUCONFIG} ]] || [[ -n ${IMAGE} ]] || [[ -n ${MODULES} ]] || [[ -n ${DTB_BUILD} ]]; then
88
89 source "${ROOT_DIR}/build/_setup_env.sh"
90 source "${ROOT_DIR}/build/build_utils.sh"
91
92 if [[ -n ${MENUCONFIG} ]]; then
93 set -x
94 pre_defconfig_cmds
95 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" ${DEFCONFIG})
96 (cd ${KERNEL_DIR} && make ${TOOL_ARGS} O=${OUT_DIR} "${MAKE_ARGS[@]}" menuconfig)
97 post_defconfig_cmds
98 set +x
99 fi
100 if [[ -n ${IMAGE} ]]; then
101 set -x
102 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) Image)
103 set +x
104 fi
105 if [[ -n ${MODULES} ]]; then
106 if [[ ${AMLOGIC_NONGKI} -eq "1" ]];
107 then
108 set -x
109 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) modules)
110 set +x
111 else
112 echo EXT_MODULES=$EXT_MODULES
113 set -x
114 prepare_module_build
115 if [[ -z "${SKIP_EXT_MODULES}" ]] && [[ -n "${EXT_MODULES}" ]]; then
116 echo "========================================================"
117 echo " Building external modules and installing them into staging directory"
118
119 MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
120 KERNEL_UAPI_HEADERS_DIR=$(readlink -m ${COMMON_OUT_DIR}/kernel_uapi_headers)
121 for EXT_MOD in ${EXT_MODULES}; do
122 EXT_MOD_REL=$(rel_path ${ROOT_DIR}/${EXT_MOD} ${KERNEL_DIR})
123 mkdir -p ${OUT_DIR}/${EXT_MOD_REL}
124 set -x
125 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
126 O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}"
127 make -C ${EXT_MOD} M=${EXT_MOD_REL} KERNEL_SRC=${ROOT_DIR}/${KERNEL_DIR} \
128 O=${OUT_DIR} ${TOOL_ARGS} ${MODULE_STRIP_FLAG} \
129 INSTALL_MOD_PATH=${MODULES_STAGING_DIR} \
130 INSTALL_HDR_PATH="${KERNEL_UAPI_HEADERS_DIR}/usr" \
131 "${MAKE_ARGS[@]}" modules_install
132 set +x
133 done
134 fi
135
136 set +x
137 fi
138 fi
139 if [[ -n ${DTB_BUILD} ]]; then
140 set -x
141 (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) dtbs)
142 set +x
143 fi
144 exit
145fi
146
147if [ "${ABI}" -eq "1" ]; then
148 source build/build_abi.sh "$@" 2>&1 | tee abi_amlogic_out-log.txt
149else
150 source build/build.sh "$@" 2>&1 | tee amlogic_out-log.txt
151fi
152
153echo "========================================================"
154echo ""
155export COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out${OUT_DIR_SUFFIX}/${BRANCH}})
156export OUT_DIR=$(readlink -m ${COMMON_OUT_DIR}/${KERNEL_DIR})
157export DIST_DIR=$(readlink -m ${DIST_DIR:-${COMMON_OUT_DIR}/dist})
158export MODULES_STAGING_DIR=$(readlink -m ${COMMON_OUT_DIR}/staging)
159echo COMMON_OUT_DIR=$COMMON_OUT_DIR OUT_DIR=$OUT_DIR DIST_DIR=$DIST_DIR MODULES_STAGING_DIR=$MODULES_STAGING_DIR KERNEL_DIR=$KERNEL_DIR
160# source ${ROOT_DIR}/common_drivers/amlogic_utils.sh
161
162if [ -f ${ROOT_DIR}/common_drivers/rootfs_base.cpio.gz.uboot ]; then
163 echo "========================================================"
164 echo "Rebuild rootfs in order to install modules!"
165 rebuild_rootfs
166else
167 echo "========================================================"
168 echo "There's no file ${ROOT_DIR}/common_drivers/rootfs_base.cpio.gz.uboot, so don't rebuild rootfs!"
169fi