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