GO ?= go NPM ?= npm VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo dev) COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null) LDFLAGS := -s -w \ -X github.com/apernet/OpenGFW/cmd.appVersion=$(VERSION) \ -X github.com/apernet/OpenGFW/cmd.appCommit=$(COMMIT) FRONTEND := web/frontend .PHONY: all all: web build ## build: build the OpenGFW binary (embeds the web UI in web/dist) .PHONY: build build: $(GO) build -o OpenGFW -ldflags "$(LDFLAGS)" . ## web: build the web UI into web/dist .PHONY: web web: cd $(FRONTEND) && $(NPM) install && $(NPM) run build ## web-dev: run the Vite dev server against a local OpenGFW instance .PHONY: web-dev web-dev: cd $(FRONTEND) && $(NPM) run dev ## devserver: serve the web UI with synthetic data (works on any OS) .PHONY: devserver devserver: $(GO) run ./web/devserver .PHONY: test test: $(GO) test ./... .PHONY: vet vet: $(GO) vet ./... .PHONY: clean clean: rm -f OpenGFW rm -rf $(FRONTEND)/node_modules