From a883e08a3f4322ac8d2a386ee24efe7c43d6ce20 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Sat, 7 Jul 2018 19:02:59 +0100 Subject: [PATCH] Revamp Makefile --- Makefile | 53 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 356cd3b..d4add73 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,18 @@ +DEV_DEPS = github.com/mailru/easyjson/... + NAME = rbheapleak BINARY = bin/${NAME} VERSION ?= $(shell cat VERSION) + +# +# Main targets. +# + SOURCES = $(shell find . -name '*.go' -o -name 'Makefile' -o -name 'VERSION') +all: bootstrap generate build +bootstrap: dev-deps dep-ensure + $(BINARY): $(SOURCES) CGO_ENABLED=0 go build -a -o ${BINARY} -ldflags \ "\ -s -w \ @@ -13,16 +23,45 @@ $(BINARY): $(SOURCES) .PHONY: build build: $(BINARY) -.PHONY: run -run: $(BINARY) - $(BINARY) - .PHONY: clean clean: $(eval BIN_DIR := $(shell dirname ${BINARY})) if [ -f ${BINARY} ]; then rm ${BINARY}; fi if [ -d ${BIN_DIR} ]; then rmdir ${BIN_DIR}; fi -.PHONY: docker -docker: - docker build -t "$(shell whoami)/$(NAME)" . +.PHONY: test +test: + go test + +.PHONY: generate +generate: dev-deps + go generate + +# +# EasyJSON targets. +# + +EASYJSON_FILES = $(shell find . -name '*_easyjson.go' -not -path '*/vendor/*') + +define easyjson_file +$(1): $(subst _easyjson.go,.go,$(1)) + easyjson -all $$^ +endef + +$(foreach file,$(EASYJSON_FILES),$(eval $(call easyjson_file,$(file)))) + +# +# Dependency targets. +# + +.PHONY: dep-ensure +dep-ensure: + dep ensure + +.PHONY: dev-deps +dev-deps: + @$(foreach DEP,$(DEV_DEPS),go get $(DEP);) + +.PHONY: update-dev-deps +update-dev-deps: + @$(foreach DEP,$(DEV_DEPS),go get -u $(DEP);)