You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.4 KiB
58 lines
1.4 KiB
4 years ago
|
# Makefile for projects using go mod.
|
||
|
|
||
|
|
||
|
#V := 1 # When V is set, print commands and build progress.
|
||
|
|
||
|
ARCHES:=amd64 arm64
|
||
|
OSES:=linux
|
||
|
BINARY:=ranpass
|
||
|
|
||
|
all: release
|
||
|
|
||
|
build:
|
||
|
$Q for arch in $(ARCHES) ; do \
|
||
|
for os in $(OSES); do \
|
||
|
CGO_ENABLED=0 GOOS=$$os GOARCH=$$arch go build $(VERSION_FLAGS) -a -installsuffix cgo -o ./bin/$(BINARY)-$$os-$$arch $(IMPORT_PATH); \
|
||
|
done ; \
|
||
|
done
|
||
|
|
||
|
release: clean build
|
||
|
$Q mkdir -p ./release
|
||
|
$Q for arch in $(ARCHES) ; do \
|
||
|
for os in $(OSES) ; do \
|
||
|
rm -rf ./tmp/$(BINARY) ; \
|
||
|
mkdir -p ./tmp/$(BINARY) ; \
|
||
|
cp -a ./bin/$(BINARY)-$$os-$$arch ./tmp/$(BINARY)/$(BINARY) ; \
|
||
|
tar -cz -C ./tmp -f ./release/$(BINARY)-$$os-$$arch-$(VERSION).tar.gz ./$(BINARY) ; \
|
||
|
rm -rf ./tmp ; \
|
||
|
done ; \
|
||
|
done
|
||
|
|
||
|
##### =====> Utility targets <===== #####
|
||
|
|
||
|
.PHONY: clean gen setup
|
||
|
|
||
|
clean:
|
||
|
$Q rm -rf bin
|
||
|
$Q rm -rf /release/*-$(VERSION)*
|
||
|
|
||
|
gen:
|
||
|
@echo "Running go generate"
|
||
|
$Q go generate
|
||
|
@echo "Done!"
|
||
|
|
||
|
setup:
|
||
|
@echo "Running go mod init"
|
||
|
$Q go mod init
|
||
|
@echo "Done!"
|
||
|
|
||
|
.PHONY: all build release
|
||
|
|
||
|
##### =====> Internals <===== #####
|
||
|
|
||
|
Q := $(if $V,,@)
|
||
|
IMPORT_PATH := $(shell awk -F" " '$$1=="module"{print $$2;exit;}' go.mod)
|
||
|
VERSION := $(shell git describe --tags --always --dirty="-dev")
|
||
|
DATE := $(shell date -u '+%Y-%m-%d-%H%M UTC')
|
||
|
VERSION_FLAGS := -ldflags='-s -w -X "main.Version=$(VERSION)" -X "main.BuildTime=$(DATE)"'
|