APP := chfs-ng
VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
LDFLAGS := -s -w -X main.version=$(VERSION)
OUT := bin

.PHONY: build test race vet check run build-linux-amd64 build-linux-arm64 build-linux-armv7 build-linux cross docker-build docker-run clean

build:
	CGO_ENABLED=0 go build -trimpath -ldflags '$(LDFLAGS)' -o $(OUT)/$(APP) ./cmd/chfs

test:
	go test ./...

race:
	go test -race ./...

vet:
	go vet ./...

check: test race vet
	git diff --check

run:
	go run -ldflags '$(LDFLAGS)' ./cmd/chfs

build-linux-amd64:
	CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags '$(LDFLAGS)' -o $(OUT)/$(APP)-linux-amd64 ./cmd/chfs

build-linux-arm64:
	CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -trimpath -ldflags '$(LDFLAGS)' -o $(OUT)/$(APP)-linux-arm64 ./cmd/chfs

build-linux-armv7:
	CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -trimpath -ldflags '$(LDFLAGS)' -o $(OUT)/$(APP)-linux-armv7 ./cmd/chfs

build-linux: build-linux-amd64 build-linux-arm64 build-linux-armv7

cross: build-linux

docker-build:
	docker build --build-arg VERSION=$(VERSION) -t $(APP):$(VERSION) -t $(APP):latest .

docker-run:
	docker run --rm -p 8080:80 -v $(PWD)/data:/data $(APP):latest -path /data -port 80

clean:
	rm -rf $(OUT)
