module: build ext module without bazel [1/2]

PD#OTT-65725

Problem:
build ext module without bazel

Solution:
use bazel-common14-5.15 as kernel output source
add build_ext_module_without_bazel function

Verify:
local

Change-Id: I5ac02141b21ac7d9b223bfc7870a8b140bca6d46
Signed-off-by: qinglin.li <qinglin.li@amlogic.com>
diff --git a/amlogic_utils.sh b/amlogic_utils.sh
index 64afa97..4e03417 100644
--- a/amlogic_utils.sh
+++ b/amlogic_utils.sh
@@ -2034,3 +2034,42 @@
 	} &
 }
 export -f generate_lzma_format_image
+
+function build_ext_module_without_bazel {
+	if [ ${BAZEL} != 1 ];then
+		return
+	fi
+	echo "========================================================"
+	echo "build ext_modules without bazel"
+	if [ ! -f ${ROOT_DIR}/bazel-out/k8-fastbuild/bin/common/amlogic_modules_prepare/modules_prepare_outdir.tar.gz ];then
+		echo "WARNING ${ROOT_DIR}/bazel-out/k8-fastbuild/bin/common/amlogic_modules_prepare/modules_prepare_outdir.tar.gz not exit!"
+		return
+	fi
+
+	[ -d ${ROOT_DIR}/out/${BRANCH}/common/ ] && rm -rf ${ROOT_DIR}/out/${BRANCH}/common/
+	rsync -aL --include='scripts/***' --include='include/***' --include='*/' --include='*Makefile*' --exclude='*' ${ROOT_DIR}/common/ ${ROOT_DIR}/out/${BRANCH}/common/
+	local kernel_src=${ROOT_DIR}/out/${BRANCH}/common/
+
+	mkdir ${ROOT_DIR}/bazel-out/k8-fastbuild/bin/common/amlogic_modules_prepare/modules_prepare_outdir
+	tar -xzvf ${ROOT_DIR}/bazel-out/k8-fastbuild/bin/common/amlogic_modules_prepare/modules_prepare_outdir.tar.gz -C ${ROOT_DIR}/bazel-out/k8-fastbuild/bin/common/amlogic_modules_prepare/modules_prepare_outdir/ > /dev/null 2>&1
+	rsync -aL  --exclude='Makefile' --exclude='localversion' --chmod=F+w ${ROOT_DIR}/bazel-out/k8-fastbuild/bin/common/amlogic_modules_prepare/modules_prepare_outdir/ ${kernel_src}
+	rm -rf ${ROOT_DIR}/bazel-out/k8-fastbuild/bin/common/amlogic_modules_prepare/modules_prepare_outdir/
+
+	. ${ROOT_DIR}/${KERNEL_DIR}/build.config.constants
+	CROSS_COMPILE_PATH=${ROOT_DIR}/prebuilts/clang/host/linux-x86/clang-${CLANG_VERSION}/bin
+	local tool_args="CC=${CROSS_COMPILE_PATH}/clang LD=${CROSS_COMPILE_PATH}/ld.lld LLVM=1"
+	local ext_module
+	echo "# MODULE_BUILD_WITHOUT_BAZEL (ROOT_DIR=${ROOT_DIR})" >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
+	for ext_module in ${EXT_MODULES_ANDROID}; do
+		local ext_mod_rel=$(real_path ${ext_module} ${kernel_src})
+		make ARCH=${ARCH} ${tool_args} -C ${ext_module} M=${ext_mod_rel} KERNEL_SRC=${kernel_src} "$@"
+		find ${ext_module} -type f -name "*.ko" -exec cp {} ${OUT_AMLOGIC_DIR}/symbols/ \;
+		find ${ext_module} -type f -name "*.ko" \
+			-exec ${CROSS_COMPILE_PATH}/llvm-objcopy  --strip-debug {} \; \
+			-exec cp {} ${OUT_AMLOGIC_DIR}/ext_modules/ \;
+
+		[ -f ${ext_module}/modules.order ] && cat ${ext_module}/modules.order >> ${OUT_AMLOGIC_DIR}/ext_modules/ext_modules.order
+	done
+	echo "========================================================"
+}
+export -f build_ext_module_without_bazel