21a8e20140
Signed-off-by: Nagy Károly Gábriel <k@jpi.io>
58 lines
1.4 KiB
Makefile
58 lines
1.4 KiB
Makefile
# 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)"'
|