Files
wind_power_cal/third_party/ensure_third_party.sh
T
2026-07-14 15:43:18 +08:00

78 lines
2.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# ===================== 第三方库自动编译(Drogon =====================
# 检查 Drogon + Trantor 编译产物,缺失时自动从 drogon_repo 源码编译。
# 仅在编译产物不存在时触发,日常开发零开销。
#
# 参考: edge_collector/collector/ensure_third_party.sh
# 用法:
# source ensure_third_party.sh # 被 build.sh / run.sh 引用
# bash ensure_third_party.sh # 也可独立运行
set -euo pipefail
# 如果变量已由调用方设置则复用,否则自行推导
SCRIPT_DIR="${SCRIPT_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)}"
THIRD_PARTY="${THIRD_PARTY:-${SCRIPT_DIR}}"
# ---- 架构检测 ----
if [ -z "${TARGET_ARCH:-}" ]; then
ARCH=$(uname -m)
case "${ARCH}" in
x86_64) TARGET_ARCH="x64" ;;
aarch64|arm64) TARGET_ARCH="arm64" ;;
armv7*|arm) TARGET_ARCH="arm32" ;;
*) TARGET_ARCH="x64" ;;
esac
fi
export TARGET_ARCH
export DROGON_INSTALL="${THIRD_PARTY}/drogon/install/${TARGET_ARCH}"
# --- Drogon + Trantor (本地安装) ---
# Drogon 使用 find_package(CONFIG) 模式,需要完整 cmake install 树。
# 编译后安装到 third_party/drogon/install/${TARGET_ARCH}/
# 由顶层 CMakeLists.txt 通过 CMAKE_PREFIX_PATH 注入查找路径。
DROGON_REPO="${THIRD_PARTY}/drogon_repo"
DROGON_CONFIG="${DROGON_INSTALL}/libs/cmake/Drogon/DrogonConfig.cmake"
if [ -f "${DROGON_CONFIG}" ]; then
echo "[third_party] Drogon 已编译,跳过 (${DROGON_INSTALL})"
else
if [ ! -f "${DROGON_REPO}/CMakeLists.txt" ]; then
echo "[third_party] ⚠️ 源码目录不存在: drogon_repo,跳过 Drogon"
echo "[third_party] (后续 cmake find_package(Drogon) 将报错)"
return 0 2>/dev/null || exit 0
elif [ ! -f "${DROGON_REPO}/trantor/CMakeLists.txt" ]; then
echo "[third_party] ⚠️ Trantor 源码未就位: drogon_repo/trantor/,跳过 Drogon"
echo "[third_party] (后续 cmake find_package(Drogon) 将报错)"
return 0 2>/dev/null || exit 0
else
echo "[third_party] 编译 Drogon + Trantor (产物缺失) → ${DROGON_INSTALL}"
DROGON_BUILD="${DROGON_REPO}/build"
rm -rf "${DROGON_BUILD}"
mkdir -p "${DROGON_BUILD}"
cmake -S "${DROGON_REPO}" -B "${DROGON_BUILD}" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="${DROGON_INSTALL}" \
-DCMAKE_INSTALL_LIBDIR=libs \
-DBUILD_SHARED_LIBS=ON \
-DUSE_SUBMODULE=ON \
-DBUILD_CTL=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_ORM=OFF \
-DBUILD_TESTING=OFF \
-DBUILD_BROTLI=ON \
-DBUILD_YAML_CONFIG=OFF
cmake --build "${DROGON_BUILD}" -j"$(nproc)"
cmake --install "${DROGON_BUILD}"
rm -rf "${DROGON_BUILD}"
echo "[third_party] ✅ Drogon + Trantor → ${DROGON_INSTALL}"
fi
fi
echo "[third_party] 第三方库检查完成 ✅"