#!/bin/bash
set -e
(set -o pipefail) 2>/dev/null && set -o pipefail
readonly HCOM_ROOT_DIR=$(cd $(dirname ${0}) && pwd)
readonly HCOM_BUILD_DIR="${HCOM_ROOT_DIR}/tmp_build_dir"
readonly HCOM_LOG_TAG="[$(basename ${0})]"
readonly HCOM_INSTALL_DIR="${HCOM_ROOT_DIR}/dist/hcom"
echo "HCOM ROOT: ${HCOM_ROOT_DIR}"
echo "HCOM BUILD DIR: ${HCOM_BUILD_DIR}"
echo "HCOM INSTALL DIR: ${HCOM_INSTALL_DIR}"
HCOM_COMPONENT_VERSION="1.0.0"
function show_help() {
echo "Usage: $0 [COMMAND] [OPTION]"
echo "Build the project with specified options."
echo "Commands: clean"
echo "Options:"
echo " -t, --type TYPE Set build type. debug/release"
}
function clean_dir() {
[[ -n "${HCOM_BUILD_DIR}" ]] && rm -rf "${HCOM_BUILD_DIR}"
[[ -n "${HCOM_INSTALL_DIR}" ]] && rm -rf "${HCOM_INSTALL_DIR}"
echo "Cleanup: ${HCOM_BUILD_DIR}, ${HCOM_INSTALL_DIR}"
}
HCOM_BUILD_TYPE="${HCOM_BUILD_TYPE,,}"
HCOM_BUILD_TYPE="${HCOM_BUILD_TYPE:-release}"
while [[ "$#" -gt 0 ]]; do
case "$1" in
-t|--type) HCOM_BUILD_TYPE="${2,,}"; shift ;;
clean) clean_dir; exit 0 ;;
*) echo "Unknown parameter passed: $1"; show_help; exit 1 ;;
esac
shift
done
echo "HCOM BUILD TYPE: ${HCOM_BUILD_TYPE}"
HCOM_BUILD_HW_CRC="${HCOM_BUILD_HW_CRC:-off}"
echo "${HCOM_LOG_TAG} hcom build hw crc: ${HCOM_BUILD_HW_CRC}"
HCOM_BUILD_UB="${HCOM_BUILD_UB:-off}"
echo "${HCOM_LOG_TAG} hcom build ub: ${HCOM_BUILD_UB}"
HCOM_BUILD_SERVICE="${HCOM_BUILD_SERVICE:-on}"
echo "${HCOM_LOG_TAG} hcom build service: ${HCOM_BUILD_SERVICE}"
HCOM_BUILD_RDMA="${HCOM_BUILD_RDMA:-on}"
echo "${HCOM_LOG_TAG} hcom build rdma: ${HCOM_BUILD_RDMA}"
HCOM_BUILD_SOCK="${HCOM_BUILD_SOCK:-on}"
echo "${HCOM_LOG_TAG} hcom build sock: ${HCOM_BUILD_SOCK}"
HCOM_BUILD_SHM="${HCOM_BUILD_SHM:-on}"
echo "${HCOM_LOG_TAG} hcom build shm: ${HCOM_BUILD_SHM}"
HCOM_BUILD_MULTICAST="${HCOM_BUILD_MULTICAST:-off}"
echo "${HCOM_LOG_TAG} hcom build multicast: ${HCOM_BUILD_MULTICAST}"
HCOM_ENABLE_ARM_KP="${HCOM_ENABLE_ARM_KP:-off}"
echo "${HCOM_LOG_TAG} hcom enable arm kunpeng check: ${HCOM_ENABLE_ARM_KP}"
HCOM_BUILD_JAVA_SDK="${HCOM_BUILD_JAVA_SDK:-off}"
echo "${HCOM_LOG_TAG} hcom build java sdk: ${HCOM_BUILD_JAVA_SDK}"
HCOM_BUILD_TESTS="${HCOM_BUILD_TESTS:-off}"
echo "${HCOM_LOG_TAG} hcom build tests: ${HCOM_BUILD_TESTS}"
BUILD_HCOM="${BUILD_HCOM:-ON}"
echo "${HCOM_LOG_TAG} build hcom: ${BUILD_HCOM}"
HCOM_BUILD_RPM="${HCOM_BUILD_RPM:-off}"
echo "${HCOM_LOG_TAG} build rpm: ${HCOM_BUILD_RPM}"
if [[ "${HCOM_BUILD_TESTS,,}" == "on" ]]; then
[[ -z "${HCOM_TEST_TOOL_PATH}" ]] && HCOM_TEST_TOOL_PATH="${HCOM_ROOT_DIR}/dist/hcom_test_tools"
echo "${HCOM_LOG_TAG} hcom test tools path: ${HCOM_TEST_TOOL_PATH}"
if [[ ! -d "${HCOM_TEST_TOOL_PATH}" ]]; then
echo "${HCOM_LOG_TAG} hcom test tools are not installed, installing..."
bash "${HCOM_ROOT_DIR}/build/install_test_tools.sh"
fi
fi
[[ -n "${HCOM_BUILD_DIR}" ]] && rm -rf "${HCOM_BUILD_DIR}"
[[ -n "${HCOM_INSTALL_DIR}" ]] && rm -rf "${HCOM_INSTALL_DIR}"
cmake -S"${HCOM_ROOT_DIR}" -B"${HCOM_BUILD_DIR}" \
-DBUILD_HCOM=${BUILD_HCOM} \
-DCMAKE_INSTALL_PREFIX="${HCOM_INSTALL_DIR}" \
-DCMAKE_BUILD_TYPE=${HCOM_BUILD_TYPE} \
-DBUILD_TESTS=${HCOM_BUILD_TESTS} \
-DTEST_TOOL_INSTALL_PATH="${HCOM_TEST_TOOL_PATH}" \
-DBUILD_JAVA_SDK=${HCOM_BUILD_JAVA_SDK} \
-DBUILD_WITH_HW_CRC=${HCOM_BUILD_HW_CRC} \
-DBUILD_WITH_UB=${HCOM_BUILD_UB} \
-DBUILD_WITH_RDMA=${HCOM_BUILD_RDMA} \
-DBUILD_WITH_SOCK=${HCOM_BUILD_SOCK} \
-DBUILD_WITH_SHM=${HCOM_BUILD_SHM} \
-DBUILD_WITH_MULTICAST=${HCOM_BUILD_MULTICAST} \
-DENABLE_ARM_KP=${HCOM_ENABLE_ARM_KP} \
-DHCOM_COMPONENT_VERSION="${HCOM_COMPONENT_VERSION}"
cmake --build "${HCOM_BUILD_DIR}" -j $(nproc)
cmake --build "${HCOM_BUILD_DIR}" --target install
output=$(HCOM_COMPONENT_VERSION=${HCOM_COMPONENT_VERSION} bash "${HCOM_ROOT_DIR}/build/make_software_package.sh" -t "${HCOM_BUILD_TYPE}")
[[ "${HCOM_BUILD_EXAMPLE,,}" == "on" ]] && bash "${HCOM_ROOT_DIR}/build/build_example_perf.sh"
bash "${HCOM_ROOT_DIR}/build/build_umq_and_ubsocket.sh"
echo "${HCOM_LOG_TAG} $0 succeeds"