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.
57 lines
1.4 KiB
57 lines
1.4 KiB
# 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)"'
|
|
|