Files
x0gp/server/Makefile
T

93 lines
2.2 KiB
Makefile

# x0gp PoC server Makefile
#
# Common targets:
# make tidy - go mod tidy
# make build - compile poc-server (linux/arm64 by default for Orange Pi 5 Pro)
# make run - build + run locally (dev mode, port 8080)
# make proto - regenerate Go from proto/ via Docker
# make test - go test ./...
# make lint - go vet + (optional) golangci-lint
# make docker - build the api-gateway image
# make compose - run dev stack (postgres + redis + prometheus + grafana + api-gateway)
GO ?= go
APP := poc-server
BIN_DIR := bin
GOOS ?= linux
GOARCH ?= arm64
GOARM ?=
LDFLAGS := -s -w -X main.version=$(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
# Honour explicit user overrides of GOOS/GOARCH (e.g. make build GOARCH=amd64).
ifeq ($(GOARCH),arm64)
ifeq ($(GOOS),linux)
TARGET := $(BIN_DIR)/$(APP)-linux-arm64
endif
endif
ifeq ($(GOARCH),amd64)
ifeq ($(GOOS),linux)
TARGET := $(BIN_DIR)/$(APP)-linux-amd64
endif
endif
ifeq ($(GOARCH),arm64)
ifeq ($(GOOS),darwin)
TARGET := $(BIN_DIR)/$(APP)-darwin-arm64
endif
endif
ifeq ($(GOOS),windows)
TARGET := $(BIN_DIR)/$(APP)-windows-$(GOARCH).exe
endif
TARGET ?= $(BIN_DIR)/$(APP)
.PHONY: tidy
tidy:
$(GO) mod tidy
.PHONY: build
build:
mkdir -p $(BIN_DIR)
GOOS=$(GOOS) GOARCH=$(GOARCH) $(GO) build -ldflags "$(LDFLAGS)" -o $(TARGET) ./cmd/poc-server
@echo "built: $(TARGET)"
.PHONY: run
run: build
X0GP_DEV_MODE=true X0GP_LOG_LEVEL=debug ./$(TARGET)
.PHONY: proto
proto:
@echo "Regenerating protobuf Go code via buf in Docker..."
docker run --rm -v "$$PWD":/workspace -w /workspace bufbuild/buf:latest generate
@echo "Done. Generated code is in proto/gen/."
.PHONY: test
test:
$(GO) test ./... -race -count=1
.PHONY: lint
lint:
$(GO) vet ./...
@command -v golangci-lint >/dev/null && golangci-lint run || echo "(golangci-lint not installed, skipping)"
.PHONY: docker
docker:
docker build -t x0gp/api-gateway:dev -f Dockerfile .
.PHONY: compose-up
compose-up:
docker compose up -d
.PHONY: compose-down
compose-down:
docker compose down
.PHONY: clean
clean:
rm -rf $(BIN_DIR)
.PHONY: graphify
graphify:
$(GO) run ./scripts/graphify/main.go
.DEFAULT_GOAL := build