144 lines
3.7 KiB
Bash
Executable File
144 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Install script for BACnet GTK Discovery
|
|
# This script helps install the necessary dependencies and build the application
|
|
|
|
set -e
|
|
|
|
echo "BACnet GTK Discovery - Installation Script"
|
|
echo "========================================="
|
|
|
|
# Function to detect the Linux distribution
|
|
detect_distro() {
|
|
if [ -f /etc/os-release ]; then
|
|
. /etc/os-release
|
|
echo $ID
|
|
elif [ -f /etc/debian_version ]; then
|
|
echo "debian"
|
|
elif [ -f /etc/redhat-release ]; then
|
|
echo "rhel"
|
|
else
|
|
echo "unknown"
|
|
fi
|
|
}
|
|
|
|
# Function to install GTK dependencies
|
|
install_gtk_deps() {
|
|
local distro=$(detect_distro)
|
|
|
|
echo "Detected distribution: $distro"
|
|
echo "Installing GTK+ 3.0 development libraries..."
|
|
|
|
case $distro in
|
|
ubuntu|debian|linuxmint)
|
|
sudo apt-get update
|
|
sudo apt-get install -y libgtk-3-dev pkg-config build-essential
|
|
;;
|
|
fedora)
|
|
sudo dnf install -y gtk3-devel pkgconfig gcc make
|
|
;;
|
|
rhel|centos)
|
|
sudo yum install -y gtk3-devel pkgconfig gcc make
|
|
;;
|
|
opensuse|suse)
|
|
sudo zypper install -y gtk3-devel pkg-config gcc make
|
|
;;
|
|
arch|manjaro)
|
|
sudo pacman -S --needed gtk3 pkgconfig gcc make
|
|
;;
|
|
*)
|
|
echo "Unknown distribution. Please install GTK+ 3.0 development libraries manually."
|
|
echo "Required packages: gtk3-devel (or libgtk-3-dev), pkgconfig, gcc, make"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Function to check if GTK is available
|
|
check_gtk() {
|
|
if pkg-config --exists gtk+-3.0; then
|
|
echo "GTK+ 3.0 development libraries are available."
|
|
echo "Version: $(pkg-config --modversion gtk+-3.0)"
|
|
return 0
|
|
else
|
|
echo "GTK+ 3.0 development libraries are not available."
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Function to build the GTK application
|
|
build_gtk_app() {
|
|
echo "Building BACnet GTK Discovery..."
|
|
|
|
# Default to BACnet/IP
|
|
DATALINK=${1:-bip}
|
|
|
|
make -C ../../ clean || true
|
|
make -C ../../ gtk-discover BACDL=$DATALINK
|
|
|
|
if [ -f "./bacdiscover-gtk" ]; then
|
|
echo "BACnet GTK Discovery built successfully!"
|
|
echo "Run with: ./bacdiscover-gtk"
|
|
else
|
|
echo "Build failed. Please check the error messages above."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Main installation process
|
|
main() {
|
|
echo "Checking for GTK+ 3.0 development libraries..."
|
|
|
|
if ! check_gtk; then
|
|
echo "GTK+ 3.0 development libraries not found."
|
|
read -p "Do you want to install them automatically? (y/n): " -n 1 -r
|
|
echo
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
install_gtk_deps
|
|
if ! check_gtk; then
|
|
echo "Failed to install GTK+ 3.0 development libraries."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Please install GTK+ 3.0 development libraries manually and run this script again."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Ask user for datalink type
|
|
echo ""
|
|
echo "Choose BACnet datalink type:"
|
|
echo "1) BACnet/IP (default)"
|
|
echo "2) MS/TP (Master-Slave/Token-Passing)"
|
|
echo "3) Ethernet"
|
|
echo ""
|
|
read -p "Enter choice (1-3) [default: 1]: " choice
|
|
|
|
case $choice in
|
|
2)
|
|
DATALINK="mstp"
|
|
;;
|
|
3)
|
|
DATALINK="ethernet"
|
|
;;
|
|
*)
|
|
DATALINK="bip"
|
|
;;
|
|
esac
|
|
|
|
echo "Building with datalink: $DATALINK"
|
|
build_gtk_app $DATALINK
|
|
|
|
echo ""
|
|
echo "Installation completed successfully!"
|
|
echo ""
|
|
echo "To run the application:"
|
|
echo " ./bacdiscover-gtk"
|
|
echo ""
|
|
echo "To install system-wide:"
|
|
echo " sudo make install"
|
|
}
|
|
|
|
# Run main function
|
|
main "$@"
|