1
0
Fork 0
cpu_ctrl/Makefile

69 lines
2.2 KiB
Makefile

PROJECT_NAME := cpu_ctrl
PKG := "amuz.es/src/infra/$(PROJECT_NAME)"
PKG_LIST := $(shell go list ${PKG}/... | grep -v /vendor/)
GO_FILES := $(shell find . -name '*.go' | grep -v /vendor/ | grep -v _test.go)
BUILD=`date +%FT%T%z`
IS_DIRTY=$(shell sh -c '[[ `git diff --shortstat 2> /dev/null | tail -n1` != "" ]] && echo "-dirty"')
VERSION?=$(shell git describe --exact-match 2> /dev/null || echo "`git symbolic-ref HEAD 2> /dev/null | cut -b 12-`-`git log --pretty=format:\"%h\" -1`")$(IS_DIRTY)
DIST_NAME:= $(PROJECT_NAME).cpio.gz
UTILS :=$(shell find cmd -type d -maxdepth 1 -mindepth 1|sed -e 's/cmd\///g')
.PHONY: all vgo build
all: build
lint: ## Lint the files
@golint -set_exit_status ${PKG_LIST}
test: ## Run unittests
@go test -short ${PKG_LIST}
race: vgo ## Run data race detector
@go test -race -short ${PKG_LIST}
msan: vgo ## Run memory sanitizer
@go test -msan -short ${PKG_LIST}
vgo.lock: ## Get the dependencies
@echo -n ensure 'vgo' dependency resolver..
@go get -u golang.org/x/vgo
@echo done
@echo -n resolving dependencies..
@${GOPATH}/bin/vgo mod -fix -vendor -sync
@echo done
@touch vgo.lock
vgo: vgo.lock
build: vgo ## Build the binary file
@echo -n building..
@go build -ldflags "-w -s -X main.version=${VERSION} -X main.buildDate=${BUILD}" -o "${PROJECT_NAME}" .
@echo done
build_util: vgo ## Build the binary file
@echo building..
@$(foreach UTIL,$(UTILS),printf "=> $(UTIL):" ;\
go build -ldflags "-w -s -X main.version=${VERSION} -X main.buildDate=${BUILD}" -o "cmd/$(UTIL)/$(UTIL)" $(PKG)/cmd/$(UTIL) ;\
echo done ;)
@echo done
clean: ## Remove previous build
@$(foreach UTIL,$(UTILS),rm -f "cmd/$(UTIL)/$(UTIL)";)
@rm -f "$(PROJECT_NAME)"
@rm -rf build
version: ## Display version
@echo $(VERSION)
help: ## Display this help screen
@grep -h -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
dist: build build_util
@rm -rf build
@mkdir -p build
@mv -f "$(PROJECT_NAME)" "build/$(PROJECT_NAME)"
@$(foreach UTIL,$(UTILS),mv -f "cmd/$(UTIL)/$(UTIL)" "build/$(UTIL)";)
@echo -n archieving..
@pushd build 1> /dev/null 2>&1;find . -mindepth 1 ! -name $(DIST_NAME) | cpio --quiet -o |gzip > $(DIST_NAME) ;popd 1>/dev/null 2>&1
@echo " build/$(DIST_NAME)"