# Makefile for p4changestats

BINARY=p4changestats
BIN_DIR=bin
VERSION?=v0.6
P4_CHANGE:=$(shell p4 changes -m1 ... 2>/dev/null | awk 'NR == 1 { print $$2 }')

ifneq (${P4_CHANGE},)
BUILD_VERSION=${VERSION}.${P4_CHANGE}
else
BUILD_VERSION=${VERSION}
endif

LDFLAGS=-ldflags "-w -s -X main.Version=${BUILD_VERSION}"

all: build

# Builds the project for the current platform.
build:
	go build ${LDFLAGS} -o ${BINARY} .

# Builds compressed distribution binaries.
dist:
	mkdir -p ${BIN_DIR}
	GOOS=darwin GOARCH=arm64 go build ${LDFLAGS} -o ${BIN_DIR}/${BINARY}.darwin-arm64 .
	GOOS=darwin GOARCH=amd64 go build ${LDFLAGS} -o ${BIN_DIR}/${BINARY}.darwin-amd64 .
	GOOS=linux GOARCH=arm64 go build ${LDFLAGS} -o ${BIN_DIR}/${BINARY}.linux-arm64 .
	GOOS=linux GOARCH=amd64 go build ${LDFLAGS} -o ${BIN_DIR}/${BINARY}.linux-amd64 .
	GOOS=windows GOARCH=amd64 go build ${LDFLAGS} -o ${BIN_DIR}/${BINARY}.windows-amd64.exe .
	rm -f ${BIN_DIR}/${BINARY}*arm64*.gz ${BIN_DIR}/${BINARY}*amd64*.gz
	-chmod +x ${BIN_DIR}/${BINARY}*arm64* ${BIN_DIR}/${BINARY}*amd64*
	gzip ${BIN_DIR}/${BINARY}*arm64* ${BIN_DIR}/${BINARY}.darwin-amd64* ${BIN_DIR}/${BINARY}.linux-amd64*

# Cleans locally built and distribution binaries.
clean:
	rm -f ${BINARY}
	rm -rf ${BIN_DIR}

.PHONY: all build clean dist
