#!/usr/bin/env gmake -f

GOOPTS=CGO_ENABLED=0
BUILDOPTS=-ldflags="-s -w" -a -gcflags=all=-l -trimpath -buildvcs=false
MYNAME=bunny-bot
BINARY=$MYNAME
RMCMD=$(RM) -r

# На windows имя бинарника может зависеть не только от платформы, но и от выбранной цели, для linux-а суффикс .exe
# не нужен
ifeq ($(OS),Windows_NT)
ifeq ($(strip $(GOOS)),)
BINARY=${MYNAME}.exe
RMCMD=DEL /Q /F
endif
endif

# Явно определяем символ новой строки, чтобы избежать неоднозначности на windows
define IFS

endef


all: clean build


build:
# Ну и дальше просто билдим бинарник средствами гошки
ifeq ($(OS),Windows_NT)
# вариант с powershell на windows
ifeq ($(SHELL),sh.exe)
	SET "CGO_ENABLED=0"
	go build ${BUILDOPTS} -o ${BINARY} ./cmd/${MYNAME}
else
# вариант с jetbrains golang на windows
	CGO_ENABLED=0 go build ${BUILDOPTS} -o ${BINARY} ./cmd/${MYNAME}
endif
else
# вариант с bash/git (windows) и bash (linux)
	CGO_ENABLED=0 go build ${BUILDOPTS} -o ${BINARY} ./cmd/${MYNAME}
endif


clean:
ifeq ($(OS),Windows_NT)
ifeq (,$(findstring(Git/usr/bin/sh.exe, $(SHELL))))
	rm -rf ${BINARY}
else
	if exist ${BINARY} ${RMCMD} ${BINARY} >nul
endif
else
	${RMCMD} ${BINARY}
endif


upgrade:
ifeq ($(OS),Windows_NT)
# вариант с jetbrains golang на windows или powershell на windows
ifeq ($(SHELL),sh.exe)
	if exist vendor del /F /S /Q vendor >nul
# вариант с git/bash на windows
else
	$(RM) -r vendor
endif
# вариант с bash на linux
else
	$(RM) -r vendor
endif
	go get -d -u ./...
	go mod tidy
	go mod vendor

# vim: set ft=make noet ai ts=4 sw=4 sts=4:
