Files

121 lines
5.2 KiB
Bash
Raw Permalink Normal View History

2026-07-09 02:59:53 +03:00
#!/bin/bash
# ═══════════════════════════════════════════════════════════════════════════════
# HCIE Qt6 Build Script
# Builds the Rust engine as a static library, then builds the Qt6 GUI.
# ═══════════════════════════════════════════════════════════════════════════════
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$SCRIPT_DIR"
echo "═══════════════════════════════════════════════════════════════"
echo " HCIE Qt6 Build"
echo "═══════════════════════════════════════════════════════════════"
# ── Step 1: Build Rust engine as static library ──────────────────────────────
echo ""
echo "▶ Step 1: Building Rust engine (hcie-engine-api)..."
cargo build -p hcie-engine-api --release 2>&1
# Verify the static library exists
ENGINE_LIB="target/release/libhcie_engine_api.a"
if [ ! -f "$ENGINE_LIB" ]; then
# Try debug build
ENGINE_LIB="target/debug/libhcie_engine_api.a"
cargo build -p hcie-engine-api 2>&1
fi
if [ ! -f "$ENGINE_LIB" ]; then
echo "ERROR: Could not find libhcie_engine_api.a"
echo "Expected at: target/release/libhcie_engine_api.a"
exit 1
fi
echo "✓ Engine library: $ENGINE_LIB ($(du -h "$ENGINE_LIB" | cut -f1))"
# ── Step 2: Check Qt6 is available ───────────────────────────────────────────
echo ""
echo "▶ Step 2: Checking Qt6..."
if ! command -v cmake &> /dev/null; then
echo "ERROR: cmake not found. Install it:"
echo " Ubuntu/Debian: sudo apt install cmake"
echo " Fedora: sudo dnf install cmake"
echo " Arch: sudo pacman -S cmake"
exit 1
fi
# Check for Qt6 cmake config
QT6_FOUND=$(find /usr -name "Qt6Config.cmake" 2>/dev/null | head -1)
if [ -z "$QT6_FOUND" ]; then
echo "ERROR: Qt6 development packages not found."
echo ""
echo "Install Qt6 dev packages:"
echo ""
echo " Ubuntu/Debian (apt):"
echo " sudo apt install qt6-base-dev libqt6opengl6-dev qt6-tools-dev"
echo ""
echo " Fedora (dnf):"
echo " sudo dnf install qt6-qtbase-devel qt6-qtopengl-devel"
echo ""
echo " Arch (pacman):"
echo " sudo pacman -S qt6-base qt6-tools qt6-declarative"
echo ""
echo " openSUSE (zypper):"
echo " sudo zypper install qt6-base-devel libqt6-qtdeclarative-devel"
echo ""
echo " macOS (brew):"
echo " brew install qt@6"
echo " export CMAKE_PREFIX_PATH=$(brew --prefix qt@6)"
echo ""
exit 1
fi
echo "✓ Qt6 found: $QT6_FOUND"
# ── Step 3: Copy engine lib to expected location ─────────────────────────────
echo ""
echo "▶ Step 3: Preparing build directory..."
# Ensure the engine lib is in the right place for CMake
# CMakeLists.txt looks for ../target/release/libhcie_engine_api.a
mkdir -p hcie-qt-app/build
# ── Step 4: Configure CMake ──────────────────────────────────────────────────
echo ""
echo "▶ Step 4: Configuring CMake..."
cd hcie-qt-app
# Auto-detect Qt6 prefix path
QT6_PREFIX=""
if [ -n "$CMAKE_PREFIX_PATH" ]; then
QT6_PREFIX="-DCMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH"
elif command -v qmake6 &> /dev/null; then
QT6_PREFIX="-DCMAKE_PREFIX_PATH=$(dirname $(dirname $(readlink -f $(which qmake6))))"
elif [ -d "/usr/lib/x86_64-linux-gnu/cmake/Qt6" ]; then
QT6_PREFIX="-DCMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu/cmake"
fi
cmake -B build -DCMAKE_BUILD_TYPE=Release $QT6_PREFIX 2>&1
# ── Step 5: Build ────────────────────────────────────────────────────────────
echo ""
echo "▶ Step 5: Building Qt application..."
cmake --build build --config Release -j$(nproc) 2>&1
# ── Step 6: Done ─────────────────────────────────────────────────────────────
echo ""
echo "═══════════════════════════════════════════════════════════════"
echo " BUILD SUCCESSFUL"
echo "═══════════════════════════════════════════════════════════════"
echo ""
echo " Run the application:"
echo " cd hcie-qt-app && ./build/hcie-qt"
echo ""
echo " Or with Qt Designer (for UI editing):"
echo " designer-qt6 ui/mainwindow.ui"
echo ""