#!/usr/bin/env bash set -euo pipefail cd "$(dirname "$0")" print_qt_install_hint() { echo if [[ "$(uname -s)" == "Darwin" ]]; then echo "Qt6 bulunamadi. macOS'ta gerekli paketleri kurmak icin:" echo " brew install cmake qt" echo "veya doğrudan: ./setup-macos.sh" else echo "Qt6 bulunamadi. Ubuntu'da gerekli paketleri kurmak icin:" echo " sudo apt update" echo " sudo apt install build-essential cmake qt6-base-dev" fi } project_dir="$(pwd -P)" if [[ -f ./build/CMakeCache.txt ]]; then cached_source="$(sed -n 's/^CMAKE_HOME_DIRECTORY:INTERNAL=//p' ./build/CMakeCache.txt)" cached_system="$(sed -n 's/^CMAKE_SYSTEM_NAME:INTERNAL=//p' ./build/CMakeCache.txt)" host_system="$(uname -s)" if [[ ( -n "$cached_source" && "$cached_source" != "$project_dir" ) \ || ( -n "$cached_system" && "$cached_system" != "$host_system" ) ]]; then echo "Build klasoru farkli bir proje yolu veya sisteme ait, yeniden olusturuluyor." rm -rf ./build fi fi cmake_args=(-S . -B build) if [[ "$(uname -s)" == "Darwin" ]] && command -v brew >/dev/null 2>&1; then cmake_args+=("-DCMAKE_PREFIX_PATH=$(brew --prefix qt)") fi if ! cmake "${cmake_args[@]}"; then print_qt_install_hint exit 1 fi cmake --build build if [[ "$(uname -s)" == "Darwin" ]]; then exec ./build/location_plotter.app/Contents/MacOS/location_plotter "$@" fi missing_libs="$(ldd ./build/location_plotter 2>/dev/null | awk '/not found/ { print $1 }' || true)" if [[ -n "$missing_libs" ]]; then echo "Eksik paylasimli kutuphaneler:" echo "$missing_libs" | sed 's/^/ /' print_qt_install_hint exit 1 fi if id -nG | tr ' ' '\n' | grep -qx dialout; then exec ./build/location_plotter "$@" fi if getent group dialout | tr ':' '\n' | tail -n 1 | tr ',' '\n' | grep -qx "$(id -un)"; then exec sg dialout -c "$(printf '%q ' ./build/location_plotter "$@")" fi echo "Bu kullanici dialout grubunda degil. Eklemek icin:" echo " sudo usermod -a -G dialout $(id -un)" echo "Sonra oturumu kapatip ac veya bu scripti tekrar calistir." exit 1