.PHONY: all build test gui gui-dev gui-dist gui-deb gui-win help clean # ModelRouter - single-binary gateway + optional Electron desktop GUI (embedded core) export BINARY BINARY=llmsproxy export BUILD_DIR BUILD_DIR=build export GUI_DIR GUI_DIR=cmd/gui VERSION ?= $(shell git describe --tags --dirty 2>/dev/null || echo "0.1.0") all: build # ---- core binary (server users / embedded core) ---- build: @mkdir -p $(BUILD_DIR) CGO_ENABLED=1 go build -tags luajit -trimpath -o $(BUILD_DIR)/$(BINARY) ./cmd/llmsproxy @echo "Built: $(BUILD_DIR)/$(BINARY) ($(VERSION))" # ---- GUI (Electron) ---- gui: @cd $(GUI_DIR) && npm start gui-dev: @cd $(GUI_DIR) && npm run dev # build the embedded core into the GUI, then run electron-builder # targets: deb + AppImage (linux), rpm needs system rpmbuild gui-dist: @cd $(GUI_DIR) && npm run dist:linux # deb only (for local sharing), rpm needs rpmbuild gui-deb: @cd $(GUI_DIR) && npm run dist:debian # windows nsis installer (needs apt install gcc-mingw-w64-x86-64 + wine for electron-builder) gui-win: @cd $(GUI_DIR) && npm run dist:win gui-dist-dir: @cd $(GUI_DIR) && npm run dist:dir test: go test ./... clean: rm -rf $(BUILD_DIR) cmd/gui/build/gui-dist cmd/gui/bin help: @echo "Targets:" @echo " make build build core binary (luajit)" @echo " make gui run desktop GUI (dev)" @echo " make gui-dev run GUI with devtools" @echo " make gui-dist build deb + AppImage (linux)" @echo " make gui-deb build deb only" @echo " make gui-win build Windows nsis (needs mingw + wine)" @echo " make test run go tests"