# Переменные путей
BIN_DEBUG   = ./src-tauri/target/debug/netrunner-app
CAPS        = cap_net_admin,cap_net_raw+eip

TARGET_LINUX   = x86_64-unknown-linux-gnu
TARGET_WIN     = x86_64-pc-windows-gnu
TARGET_MAC     = x86_64-apple-darwin
TARGET_IOS     = aarch64-apple-ios

TARGET_ANDROID_ARM64 = aarch64-linux-android
TARGET_ANDROID_ARM32 = armv7-linux-androideabi
TARGET_ANDROID_X86   = i686-linux-android
TARGET_ANDROID_X64   = x86_64-linux-android

# --- Команды ---
.PHONY: dev-linux dev-android build-linux build-android build-windows clean

dev-linux:
	cd ./src-tauri && cargo build
	sudo setcap $(CAPS) $(BIN_DEBUG)
	( \
		pnpm dev & PID_DEV=$$!; \
		trap 'kill $$PID_DEV; fuser -k 1420/tcp; exit' EXIT; \
		sudo RUST_LOG=trace $(BIN_DEBUG); \
	)

dev-android:
	cd src-tauri/gen/android && ./gradlew clean
	pnpm tauri android dev -- --target $(TARGET_ANDROID_ARM64)

dev-windows:
	CARGO_BUILD_TARGET=$(TARGET_WIN) pnpm tauri dev

dev-macos:
	CARGO_BUILD_TARGET=$(TARGET_MAC) pnpm tauri dev

dev-ios:
	CARGO_BUILD_TARGET=$(TARGET_IOS) pnpm tauri ios dev


build-linux:
	pnpm tauri build --target $(TARGET_LINUX)

build-windows:
	pnpm tauri build --target $(TARGET_WIN)

build-macos:
	pnpm tauri build --target $(TARGET_MAC)

# Дев-флейвор десктопа: отдельные identifier/название окна (src-tauri/tauri.dev.conf.json),
# бэкенд — https://dev.netrunner-vpn.com (см. .env.development, build:dev в package.json).
# Ставится рядом с прод-версией на одну машину без конфликта.
build-linux-dev:
	pnpm tauri build --target $(TARGET_LINUX) --config src-tauri/tauri.dev.conf.json

build-windows-dev:
	pnpm tauri build --target $(TARGET_WIN) --config src-tauri/tauri.dev.conf.json

build-android-arm64:
	pnpm tauri android build --target aarch64

build-android-all:
	pnpm tauri android build

# Тестовый бэкенд (https://dev.netrunner-vpn.com) в том же приложении: applicationId
# в gen/android фиксируется один раз при `tauri android init` и не меняется задним
# числом через --config (см. tauri.dev.conf.json на десктопе) — поэтому здесь только
# переключение бэкенда (src-tauri/tauri.test-backend.conf.json), без второго app id.
# Ставит поверх прод-версии на устройстве, не рядом.
build-android-arm64-test:
	pnpm tauri android build --target aarch64 --config src-tauri/tauri.test-backend.conf.json

build-android-all-test:
	pnpm tauri android build --config src-tauri/tauri.test-backend.conf.json


build-ios:
	pnpm tauri ios build

build-ios-test:
	pnpm tauri ios build --config src-tauri/tauri.test-backend.conf.json

install:
	adb install src-tauri/gen/android/app/build/outputs/apk/universal/release/app-universal-release.apk