update build process

This commit is contained in:
Sebastian Hugentobler 2019-05-29 18:35:50 +02:00
parent 049d0ffda2
commit 9b5238af59
6 changed files with 74 additions and 23 deletions

View file

@ -1,25 +1,46 @@
.PHONY: all
all: bin/ecload bin/ecload.exe bin/ecload-mac bin/ecload-tui bin/ecload-tui.exe bin/ecload-tui-mac
BINARIES=ecload ecload-tui
VERSION=0.1.0
BUILD:=`git rev-parse HEAD`
PLATFORMS=linux darwin windows
ARCHITECTURES=386 amd64
LDFLAGS=-ldflags "-s -X main.Version=${VERSION} -X main.Build=${BUILD}"
define BUILDER
bin/%/$(TARGET): cmd/$(TARGET)/*.go pkg/ecload/*.go
GOOS=$$(patsubst %/,%,$$(dir $$*)) GOARCH=$$(notdir $$*) go build $(LDFLAGS) -v -o $$@ cmd/$(TARGET)/main.go
endef
$(foreach TARGET,$(BINARIES),$(eval $(BUILDER)))
dist/%.tar.gz:
@mkdir -p ./dist
$(eval TMP := $(shell mktemp -d))
$(eval SANE=$(subst -,/,$*))
$(eval INPUT=bin/$(SANE)/)
$(eval PLATFORM=$(patsubst %/,%,$(dir $(SANE))))
@cp -r $(INPUT)* $(TMP)
@if [ "$(PLATFORM)" == "windows" ]; then \
for FILE in $(TMP)/*; do mv $$FILE $$FILE.exe; done \
fi
tar -zcf $@ -C $(TMP) .
@rm -rf $(TMP)
dist: binaries $(foreach GOOS, $(PLATFORMS), $(foreach GOARCH, $(ARCHITECTURES), dist/$(GOOS)-$(GOARCH).tar.gz))
binaries: $(foreach GOOS, $(PLATFORMS), $(foreach GOARCH, $(ARCHITECTURES), $(foreach BINARY, $(BINARIES), bin/$(GOOS)/$(GOARCH)/$(BINARY))))
all: dist
.PHONY: clean
clean:
rm -r bin/
go clean ./cmd/ecload/ ./cmd/ecload-tui/ ./pkg/ecload/
rm -rf bin/ dist/
go clean ./cmd/ecload ./cmd/ecload-tui ./pkg/ecload
bin/ecload: cmd/ecload/*.go pkg/ecload/*.go
GOOS=linux GOARCH=amd64 go build -ldflags '-s' -v -o $@ cmd/ecload/main.go
bin/ecload.exe: cmd/ecload/*.go pkg/ecload/*.go
GOOS=windows GOARCH=amd64 go build -ldflags '-s' -v -o $@ cmd/ecload/main.go
bin/ecload-mac: cmd/ecload/*.go pkg/ecload/*.go
GOOS=darwin GOARCH=amd64 go build -ldflags '-s' -v -o $@ cmd/ecload/main.go
bin/ecload-tui: cmd/ecload-tui/*.go pkg/ecload/*.go
GOOS=linux GOARCH=amd64 go build -ldflags '-s' -v -o $@ cmd/ecload-tui/main.go
bin/ecload-tui.exe: cmd/ecload-tui/*.go pkg/ecload/*.go
GOOS=windows GOARCH=amd64 go build -ldflags '-s' -v -o $@ cmd/ecload-tui/main.go
bin/ecload-tui-mac: cmd/ecload-tui/*.go pkg/ecload/*.go
GOOS=darwin GOARCH=amd64 go build -ldflags '-s' -v -o $@ cmd/ecload-tui/main.go
.PHONY: all clean binaries dist