SHELL := /bin/bash
|
|
RELEASE_DIR ?= ./_release
|
|
TARGETS ?= darwin/amd64 linux/amd64 linux/386 linux/arm linux/arm64 linux/ppc64le windows/amd64 plan9/amd64
|
|
|
|
PACKAGE := gerrit.wikimedia.org/r/blubber
|
|
|
|
GO_LIST_GOFILES := '{{range .GoFiles}}{{printf "%s/%s\n" $$.Dir .}}{{end}}{{range .XTestGoFiles}}{{printf "%s/%s\n" $$.Dir .}}{{end}}'
|
|
GO_PACKAGES := $(shell go list ./...)
|
|
|
|
GO_LDFLAGS := \
|
|
-X $(PACKAGE)/meta.Version=$(shell cat VERSION) \
|
|
-X $(PACKAGE)/meta.GitCommit=$(shell git rev-parse --short HEAD)
|
|
|
|
# go build/install commands
|
|
#
|
|
GO_BUILD := go build -v -ldflags "$(GO_LDFLAGS)"
|
|
GO_INSTALL := go install -v -ldflags "$(GO_LDFLAGS)"
|
|
|
|
all: code blubber blubberoid
|
|
|
|
blubber:
|
|
$(GO_BUILD) ./cmd/blubber
|
|
|
|
blubberoid:
|
|
$(GO_BUILD) ./cmd/blubberoid
|
|
|
|
code:
|
|
go generate $(GO_PACKAGES)
|
|
|
|
clean:
|
|
go clean
|
|
rm -f blubber blubberoid
|
|
|
|
install: all
|
|
$(GO_INSTALL) $(GO_PACKAGES)
|
|
|
|
release:
|
|
gox -output="$(RELEASE_DIR)/{{.OS}}-{{.Arch}}/{{.Dir}}" -osarch='$(TARGETS)' -ldflags '$(GO_LDFLAGS)' $(GO_PACKAGES)
|
|
cp LICENSE "$(RELEASE_DIR)"
|
|
for f in "$(RELEASE_DIR)"/*/{blubber,blubberoid}; do \
|
|
shasum -a 256 "$${f}" | awk '{print $$1}' > "$${f}.sha256"; \
|
|
done
|
|
|
|
lint:
|
|
@echo > .lint-gofmt.diff
|
|
@go list -f $(GO_LIST_GOFILES) $(GO_PACKAGES) | while read f; do \
|
|
gofmt -e -d "$${f}" >> .lint-gofmt.diff; \
|
|
done
|
|
@test -z "$(grep '[^[:blank:]]' .lint-gofmt.diff)" || (echo "gofmt found errors:"; cat .lint-gofmt.diff; exit 1)
|
|
golint -set_exit_status $(GO_PACKAGES)
|
|
go vet -composites=false $(GO_PACKAGES)
|
|
|
|
unit:
|
|
go test -cover -ldflags "$(GO_LDFLAGS)" $(GO_PACKAGES)
|
|
|
|
test: unit lint
|
|
|
|
.PHONY: install release
|