#!/usr/bin/env bash # MainAX25-Stack — build and install on Linux (daemon, bcpr, terminal, tests). set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" PREFIX="${PREFIX:-/usr/local}" INSTALL_DEPS=0 BUILD_ONLY=0 BUILD_DIR="${BUILD_DIR:-build}" usage() { cat <&2; usage; exit 1 ;; esac done if [[ "$(uname -s)" != "Linux" ]]; then echo "install-max25.sh: Linux only" >&2 exit 1 fi echo "== MAX25 install: $(uname -s) $(uname -m) → ${PREFIX} ==" if [[ "$INSTALL_DEPS" -eq 1 ]]; then if command -v apt-get >/dev/null 2>&1; then sudo apt-get update pkgs=(build-essential make cmake pkg-config git python3 libncurses-dev libasound2-dev) sudo apt-get install -y "${pkgs[@]}" || true fi fi cd "$ROOT" echo "-- cmake (BCPR+TERMINAL+DAEMON ON — max25-bcpr default)" cmake -B "${BUILD_DIR}" \ -DCMAKE_BUILD_TYPE=Release \ -DMAX25_BUILD_MAX25_BCPR=ON \ -DMAX25_BUILD_TERMINAL=ON \ -DMAX25_BUILD_DAEMON=ON \ -DMAX25_BUNDLE_AX25=OFF cmake --build "${BUILD_DIR}" -j"$(nproc 2>/dev/null || echo 2)" if [[ "$BUILD_ONLY" -eq 1 ]]; then echo "== build done (no install) ==" exit 0 fi echo "-- install to ${PREFIX}" if [[ "$(id -u)" -eq 0 ]]; then cmake --install "${BUILD_DIR}" --prefix "$PREFIX" else sudo cmake --install "${BUILD_DIR}" --prefix "$PREFIX" fi echo "" echo "== MAX25 installed to ${PREFIX} ==" echo " max25d, kiss_bridge.py, max25-terminal, max25-ctl -> ${PREFIX}/bin" echo " max25-bcpr-ctl -> ${PREFIX}/sbin (when MAX25_BUILD_MAX25_BCPR=ON)" echo " examples -> ${PREFIX}/share/max25/" echo "" echo "" echo "Next steps (TNC host):" echo " sudo usermod -aG dialout \$USER # serial access" echo " sudo cp share/max25/max25d.ini.host.example /etc/max25/max25d.ini" echo " sudo max25d -c /etc/max25/max25d.ini" echo " max25-terminal -U /run/max25/modem.sock" echo "" echo "BayCom/based (max25-bcpr): built by default (MAX25_BUILD_MAX25_BCPR=ON)." echo " See docs/BAYCOM.md · share/max25-bcpr/max25-bcpr.ini.example" echo "" ETC="${ETC:-/etc/max25}" if [[ "$(id -u)" -eq 0 ]] || sudo -n true 2>/dev/null; then _install_ini() { local src="$1" dst="$2" if [[ ! -f "$dst" ]] && [[ -f "$src" ]]; then mkdir -p "$ETC" if [[ "$(id -u)" -eq 0 ]]; then cp "$src" "$dst" else sudo cp "$src" "$dst" fi echo " installed $dst (from example)" fi } _install_ini "$ROOT/share/max25-bcpr/max25-bcpr.ini.example" "$ETC/max25-bcpr.ini" if [[ -f "$ETC/bcpr.ini" ]] && [[ ! -L "$ETC/max25-bcpr.ini" ]]; then echo " note: legacy $ETC/bcpr.ini kept — paths /tmp/bcpr auto-map to /tmp/max25-bcpr at runtime" fi fi