2025-09-14 19:44:37 +02:00
|
|
|
# BackTunnel convenience Makefile (for first-time users and simple installs)
|
|
|
|
|
|
|
|
|
|
PREFIX ?= /usr
|
|
|
|
|
BINDIR := $(PREFIX)/bin
|
|
|
|
|
MANDIR := $(PREFIX)/share/man
|
|
|
|
|
KIO_SM := $(PREFIX)/share/kio/servicemenus
|
|
|
|
|
KSVC5 := $(PREFIX)/share/kservices5/ServiceMenus
|
|
|
|
|
APPDIR := $(PREFIX)/share/applications
|
|
|
|
|
BCOMP := $(PREFIX)/share/bash-completion/completions
|
|
|
|
|
|
|
|
|
|
# Config paths for user init
|
|
|
|
|
XDG_CONFIG_HOME ?= $(HOME)/.config
|
|
|
|
|
BT_CFG_DIR := $(XDG_CONFIG_HOME)/backtunnel
|
|
|
|
|
BT_CFG_FILE := $(BT_CFG_DIR)/profiles.ini
|
|
|
|
|
BT_CFG_EXAMPLE := docs/profiles.ini.example
|
|
|
|
|
|
|
|
|
|
.PHONY: all init install uninstall refresh man check shellcheck help
|
|
|
|
|
|
|
|
|
|
all: help
|
|
|
|
|
|
|
|
|
|
help:
|
|
|
|
|
@echo "BackTunnel Makefile"
|
|
|
|
|
@echo " make init # Copy example profiles.ini for current user (first run)"
|
|
|
|
|
@echo " make install # Install scripts, man page, service menus (root)"
|
|
|
|
|
@echo " make uninstall # Remove installed files (root)"
|
|
|
|
|
@echo " make refresh # Refresh KDE/desktop caches (root)"
|
|
|
|
|
@echo " make man # View man page locally (man ./man/backtunnel.1)"
|
|
|
|
|
@echo " make check # Basic bash syntax check"
|
|
|
|
|
@echo " make shellcheck # ShellCheck (if installed)"
|
|
|
|
|
|
|
|
|
|
# --- First-time user init (no root needed) ---
|
|
|
|
|
init:
|
|
|
|
|
@mkdir -p "$(BT_CFG_DIR)"
|
|
|
|
|
@if [ -f "$(BT_CFG_FILE)" ]; then \
|
|
|
|
|
echo "profiles.ini already exists at $(BT_CFG_FILE) — skipping."; \
|
|
|
|
|
else \
|
|
|
|
|
if [ -f "$(BT_CFG_EXAMPLE)" ]; then \
|
|
|
|
|
cp "$(BT_CFG_EXAMPLE)" "$(BT_CFG_FILE)"; \
|
|
|
|
|
echo "Created $(BT_CFG_FILE) from $(BT_CFG_EXAMPLE)."; \
|
|
|
|
|
else \
|
2025-09-14 20:41:51 +02:00
|
|
|
echo "Example file $(BT_CFG_EXAMPLE)" not found.; exit 1; \
|
2025-09-14 19:44:37 +02:00
|
|
|
fi \
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# --- Install/uninstall (root or DESTDIR) ---
|
|
|
|
|
install:
|
2025-09-14 20:41:51 +02:00
|
|
|
@install -Dm755 scripts/backtunnel-share "$(DESTDIR)$(BINDIR)/backtunnel-share"
|
|
|
|
|
@install -Dm755 scripts/backtunnel-access "$(DESTDIR)$(BINDIR)/backtunnel-access"
|
|
|
|
|
@install -Dm755 scripts/backtunnel-share-gui "$(DESTDIR)$(BINDIR)/backtunnel-share-gui"
|
|
|
|
|
@install -Dm755 scripts/backtunnel-access-gui "$(DESTDIR)$(BINDIR)/backtunnel-access-gui"
|
|
|
|
|
@install -Dm644 man/backtunnel.1 "$(DESTDIR)$(MANDIR)/man1/backtunnel.1"
|
|
|
|
|
@install -Dm644 completions/backtunnel.bash "$(DESTDIR)$(BCOMP)/backtunnel-share"
|
|
|
|
|
@install -Dm644 completions/backtunnel.bash "$(DESTDIR)$(BCOMP)/backtunnel-access"
|
2025-09-14 19:44:37 +02:00
|
|
|
@install -Dm644 servicemenus/backtunnel_share.desktop "$(DESTDIR)$(KIO_SM)/backtunnel_share.desktop"
|
|
|
|
|
@install -Dm644 servicemenus/backtunnel_access.desktop "$(DESTDIR)$(KIO_SM)/backtunnel_access.desktop"
|
|
|
|
|
# Plasma 5 legacy path (harmless if unused)
|
|
|
|
|
@install -Dm644 servicemenus/backtunnel_share.desktop "$(DESTDIR)$(KSVC5)/backtunnel_share.desktop"
|
|
|
|
|
@install -Dm644 servicemenus/backtunnel_access.desktop "$(DESTDIR)$(KSVC5)/backtunnel_access.desktop"
|
|
|
|
|
# Optional desktop launcher if present
|
|
|
|
|
@if [ -f desktop/backtunnel.desktop ]; then \
|
|
|
|
|
install -Dm644 desktop/backtunnel.desktop "$(DESTDIR)$(APPDIR)/backtunnel.desktop"; \
|
|
|
|
|
fi
|
|
|
|
|
@$(MAKE) refresh
|
|
|
|
|
|
|
|
|
|
uninstall:
|
|
|
|
|
@rm -f "$(DESTDIR)$(BINDIR)/backtunnel-share" \
|
|
|
|
|
"$(DESTDIR)$(BINDIR)/backtunnel-access" \
|
2025-09-14 20:41:51 +02:00
|
|
|
"$(DESTDIR)$(BINDIR)/backtunnel-share-gui" \
|
|
|
|
|
"$(DESTDIR)$(BINDIR)/backtunnel-access-gui"
|
2025-09-14 19:44:37 +02:00
|
|
|
@rm -f "$(DESTDIR)$(MANDIR)/man1/backtunnel.1"
|
|
|
|
|
@rm -f "$(DESTDIR)$(BCOMP)/backtunnel-share" \
|
|
|
|
|
"$(DESTDIR)$(BCOMP)/backtunnel-access"
|
|
|
|
|
@rm -f "$(DESTDIR)$(KIO_SM)/backtunnel_share.desktop" \
|
|
|
|
|
"$(DESTDIR)$(KIO_SM)/backtunnel_access.desktop"
|
|
|
|
|
@rm -f "$(DESTDIR)$(KSVC5)/backtunnel_share.desktop" \
|
|
|
|
|
"$(DESTDIR)$(KSVC5)/backtunnel_access.desktop"
|
|
|
|
|
@rm -f "$(DESTDIR)$(APPDIR)/backtunnel.desktop" || true
|
|
|
|
|
@$(MAKE) refresh
|
|
|
|
|
|
|
|
|
|
# --- Cache refreshers (no-op if tools missing) ---
|
|
|
|
|
refresh:
|
|
|
|
|
@command -v update-desktop-database >/dev/null 2>&1 && update-desktop-database -q || true
|
|
|
|
|
@if command -v kbuildsycoca6 >/dev/null 2>&1; then \
|
|
|
|
|
kbuildsycoca6 --noincremental >/dev/null 2>&1 || true; \
|
|
|
|
|
elif command -v kbuildsycoca5 >/dev/null 2>&1; then \
|
|
|
|
|
kbuildsycoca5 --noincremental >/dev/null 2>&1 || true; \
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# --- Dev helpers ---
|
|
|
|
|
man:
|
|
|
|
|
@man ./man/backtunnel.1
|
|
|
|
|
|
|
|
|
|
check:
|
|
|
|
|
@bash -n scripts/backtunnel-share
|
|
|
|
|
@bash -n scripts/backtunnel-access
|
|
|
|
|
@bash -n scripts/backtunnel-share-gui
|
2025-09-14 20:41:51 +02:00
|
|
|
@bash -n scripts/backtunnel-access-gui
|
2025-09-14 19:44:37 +02:00
|
|
|
@echo "bash -n OK."
|
|
|
|
|
|
|
|
|
|
shellcheck:
|
|
|
|
|
@command -v shellcheck >/dev/null 2>&1 || { echo "ShellCheck not installed"; exit 1; }
|
|
|
|
|
@shellcheck scripts/backtunnel-share
|
|
|
|
|
@shellcheck scripts/backtunnel-access
|
|
|
|
|
@shellcheck scripts/backtunnel-share-gui
|
2025-09-14 20:41:51 +02:00
|
|
|
@shellcheck scripts/backtunnel-access-gui
|