#!/bin/bash
set -e
SCRIPT_DIR_ACC_DATA=$(cd "$(dirname "$0")"; pwd)
ACC_DATA_ROOT_DIR=$(cd "${SCRIPT_DIR_ACC_DATA}/.."; pwd)
ACC_DATA_NAME="acc_data"
ACC_DATA_REPO_DIR="${ACC_DATA_ROOT_DIR}/${ACC_DATA_NAME}"
ACC_DATA_BUILD_SCRIPT="${ACC_DATA_REPO_DIR}/build.sh"
ACC_DATA_BUILD_TYPE="release"
ACC_DATA_CLEAN_TYPE="clean"
print_build_start() {
echo "==============BUILDing ACC_DATA REPO=============="
}
print_build_success() {
echo "==============BUILD ACC_DATA REPO SUCCESS=============="
}
print_build_failure() {
echo "==============BUILD ACC_DATA REPO FAILED=============="
}
echo "[INFO] Starting build script for ACC_DATA repo: ${ACC_DATA_REPO_DIR}"
print_build_start
chmod +x "${SCRIPT_DIR_ACC_DATA}/fetch_acc_data_3rdparty.sh"
if ! bash "${SCRIPT_DIR_ACC_DATA}/fetch_acc_data_3rdparty.sh"; then
echo "[ERROR] Failed to fetch acc_data third-party dependencies." >&2
print_build_failure
exit 1
fi
if [ ! -d "${ACC_DATA_REPO_DIR}" ]; then
echo "[ERROR] ACC_DATA repo directory does not exist: ${ACC_DATA_REPO_DIR}" >&2
print_build_failure
exit 1
fi
echo "[INFO] Modifying CMakeLists.txt to set _accdata as STATIC library..."
ACC_DATA_CMAKE_FILE="${ACC_DATA_REPO_DIR}/src/cpp/CMakeLists.txt"
if [ ! -f "$ACC_DATA_CMAKE_FILE" ]; then
echo "[ERROR] CMakeLists.txt not found in B repo: $ACC_DATA_CMAKE_FILE" >&2
print_build_failure
exit 1
fi
cp "$ACC_DATA_CMAKE_FILE" "${ACC_DATA_CMAKE_FILE}.bak"
sed -i -E 's/add_library\(\s*_accdata\s+SHARED\s*\)/add_library(_accdata STATIC)/g' "$ACC_DATA_CMAKE_FILE"
sed -i -E '/install\s*\(\s*TARGETS\s+_accdata/,/\)/ s/LIBRARY DESTINATION/ARCHIVE DESTINATION/' "$ACC_DATA_CMAKE_FILE"
sed -i '/add_link_options($<$<COMPILE_LANGUAGE:C,CXX>:-O3>)/a add_link_options($<$<COMPILE_LANGUAGE:C,CXX>:-flto=8>)' "${ACC_DATA_REPO_DIR}/CMakeLists.txt"
echo "[INFO] Modification done."
cd - >/dev/null
echo "[INFO] Running clean step for ACCDATA repo..."
if ! bash "${ACC_DATA_BUILD_SCRIPT}" -t "${ACC_DATA_CLEAN_TYPE}"; then
echo "[ERROR] Clean step failed." >&2
print_build_failure
exit 1
fi
echo "[INFO] Running build step for ACCDATA repo with type: ${ACC_DATA_BUILD_TYPE}..."
if bash "${ACC_DATA_BUILD_SCRIPT}" "${ACC_DATA_BUILD_TYPE}"; then
echo "[INFO] Build succeeded."
print_build_success
return 0 2>/dev/null || exit 0
else
echo "[ERROR] Build failed." >&2
print_build_failure
exit 1
fi