github.com/alaturka/gbreve@v0.0.0-20211031155621-c4ad29761ee9/Makefile (about) 1 NAME := $(notdir $(PWD)) 2 VERSION := $(shell git describe --tags 2>/dev/null || echo 'v0.0.0') 3 BUILD := $(shell date +%FT%T%z) 4 5 BINARIES := $(patsubst cmd/%/main.go,%,$(wildcard cmd/*/main.go)) 6 LDFLAGS := "-s -w -X main.version=$(VERSION) -X main.build=$(BUILD)" 7 8 # Build 9 build: 10 @for bin in $(BINARIES); do go build -ldflags $(LDFLAGS) -o bin/$$bin cmd/$$bin/main.go; done 11 12 # Clean 13 clean: 14 @for bin in $(BINARIES); do rm -f bin/$$bin; done 15 @test -d bin && rmdir --ignore-fail-on-non-empty bin || true 16 @rm -f $(NAME).tgz 17 18 # Compact 19 compact: 20 @command -v upx >/dev/null && for bin in $(BINARIES); do upx -f --brute bin/$$bin; done || true 21 22 # Lint 23 lint: 24 golangci-lint run 25 26 # Test 27 test: 28 go test -parallel=4 ./... 29 30 # Zip 31 zip: 32 sleep 0.1; tar czvf $(NAME).tgz -C bin . 33 34 .DEFAULT_GOAL := test 35 .PHONY: build clean compact lint test