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