-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
84 lines (72 loc) · 2.98 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
##############################################################################
# Variables
##############################################################################
APP_NAME = datasafed
VERSION ?= 0.1.0
GITHUB_PROXY ?=
GIT_COMMIT = $(shell git rev-list -1 HEAD)
GIT_VERSION = $(shell git describe --always --abbrev=0 --tag)
TAG_LATEST ?= false
BUILDX_ENABLED ?= false
BUILD_DIR ?= build
# Go setup
export GO111MODULE = auto
export GOSUMDB = sum.golang.org
GO ?= go
GOFMT ?= gofmt
GOOS ?= $(shell $(GO) env GOOS)
GOARCH ?= $(shell $(GO) env GOARCH)
# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
ifeq (,$(shell $(GO) env GOBIN))
GOBIN=$(shell $(GO) env GOPATH)/bin
else
GOBIN=$(shell $(GO) env GOBIN)
endif
GOPROXY := $(shell go env GOPROXY)
ifeq ($(GOPROXY),)
GOPROXY := https://proxy.golang.org
## use following GOPROXY settings for Chinese mainland developers.
#GOPROXY := https://goproxy.cn
endif
export GOPROXY
BUILD_TAGS ?= ""
LD_FLAGS = "-s -w \
-X github.com/apecloud/datasafed/version.BuildDate=`date -u +'%Y-%m-%dT%H:%M:%SZ'` \
-X github.com/apecloud/datasafed/version.GitCommit=$(GIT_COMMIT) \
-X github.com/apecloud/datasafed/version.GitVersion=$(GIT_VERSION) \
-X github.com/apecloud/datasafed/version.Version=$(VERSION)"
##############################################################################
# Targets
##############################################################################
.DEFAULT_GOAL := help
.PHONY: default
default: help
.PHONY: build
build: datasafed ## Build binaries.
.PHONY: datasafed
datasafed: ## Build datasafed.
mkdir -p $(BUILD_DIR)
CGO_ENABLED=0 $(GO) build -v -o $(BUILD_DIR)/datasafed -tags $(BUILD_TAGS) -ldflags $(LD_FLAGS) .
.PHONY: docgen
docgen: ## Generate documents.
$(GO) generate ./hack/docgen/...
##@ General
# The help target prints out all targets with their descriptions organized
# beneath their categories. The categories are represented by '##@' and the
# target descriptions by '##'. The awk commands is responsible for reading the
# entire set of makefiles included in this invocation, looking for lines of the
# file as xyz: ## something, and then pretty-format the target and help. Then,
# if there's a line with ##@ something, that gets pretty-printed as a category.
# More info on the usage of ANSI control characters for terminal formatting:
# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters
# More info on the awk command:
# http://linuxcommand.org/lc3_adv_awk.php
# https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
.PHONY: help
help: ## Display this help.
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
##############################################################################
# Includes
##############################################################################
include docker.mk
include lint.mk