68 lines
2.1 KiB
Bash
Executable File
68 lines
2.1 KiB
Bash
Executable File
#!/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
|