1
- SHELL = /bin/bash
2
-
3
- GO ?= GO111MODULE=on go
4
- GOVPP_PKG := $(shell go list)
1
+ SHELL := /usr/bin/env bash -o pipefail
5
2
6
3
VERSION ?= $(shell git describe --always --tags --dirty)
7
4
COMMIT ?= $(shell git rev-parse HEAD)
8
5
BUILD_STAMP ?= $(shell git log -1 --format="% ct")
9
6
BUILD_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD)
7
+
10
8
BUILD_HOST ?= $(shell hostname)
11
9
BUILD_USER ?= $(shell id -un)
12
10
13
- VPP_VERSION = $(shell dpkg-query -f '\${Version}' -W vpp)
14
-
15
- VPP_IMG ?= ligato/vpp-base:latest
16
- BINAPI_DIR ?= ./examples/binapi
11
+ GO ?= go
17
12
18
- LDFLAGS = -w -s \
13
+ GOVPP_PKG := $(shell go list)
14
+ LDFLAGS = \
19
15
-X ${GOVPP_PKG}/version.version=$(VERSION ) \
20
16
-X ${GOVPP_PKG}/version.commitHash=$(COMMIT ) \
21
17
-X ${GOVPP_PKG}/version.buildStamp=$(BUILD_STAMP ) \
22
18
-X ${GOVPP_PKG}/version.buildBranch=$(BUILD_BRANCH ) \
23
19
-X ${GOVPP_PKG}/version.buildUser=$(BUILD_USER ) \
24
20
-X ${GOVPP_PKG}/version.buildHost=$(BUILD_HOST )
21
+ ifeq ($(NOSTRIP ) ,)
22
+ LDFLAGS += -w -s
23
+ endif
24
+
25
+ GO_BUILD_TAGS ?= novpp
25
26
26
27
GO_BUILD_ARGS = -ldflags "${LDFLAGS}"
27
- ifeq ($(V ) ,1)
28
- GO_BUILD_ARGS += -v
29
- endif
30
28
ifneq ($(GO_BUILD_TAGS ) ,)
31
29
GO_BUILD_ARGS += -tags="${GO_BUILD_TAGS}"
32
30
endif
31
+ ifneq ($(GO_NOTRIM ) ,0)
32
+ GO_BUILD_ARGS += -trimpath
33
+ endif
34
+ ifeq ($(V ) ,1)
35
+ GO_BUILD_ARGS += -v
36
+ endif
37
+
38
+ VPP_VERSION = $(shell dpkg-query -f '\${Version}' -W vpp)
39
+
40
+ VPP_IMG ?= ligato/vpp-base:latest
41
+ BINAPI_DIR ?= ./examples/binapi
42
+
43
+ help :
44
+ @echo " List of make targets:"
45
+ grep -E ' ^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST ) | awk ' BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
46
+
47
+ .DEFAULT = help
48
+
49
+ bin :
50
+ mkdir -p bin
51
+
52
+ build : # # Build all
53
+ @echo " # building ${VERSION} "
54
+ $(GO ) build ${GO_BUILD_ARGS} ./...
55
+
56
+ cmd : bin # # Build commands
57
+ $(GO ) build ${GO_BUILD_ARGS} -o bin ./cmd/...
58
+
59
+ examples : bin # # Build examples
60
+ $(GO ) build ${GO_BUILD_ARGS} -o bin ./examples/...
61
+
62
+ clean : # # Clean all
63
+ @echo " # cleaning"
64
+ $(GO ) clean -v ./...
65
+
66
+ test : # # Run unit tests
67
+ @echo " # running tests"
68
+ $(GO ) test -tags=" ${GO_BUILD_TAGS} " ./...
33
69
34
- all : test build examples
70
+ integration : # # Run integration tests
71
+ @echo " # running integration tests"
72
+ $(GO ) test -tags=" integration ${GO_BUILD_TAGS} " ./test/integration
35
73
36
- install :
37
- @echo " => installing binapi-generator ${VERSION} "
74
+ lint : # # Run code linter
75
+ @echo " # running linter"
76
+ @golint ./...
77
+
78
+ install-generator : # # Install binapi-generator
79
+ @echo " # installing binapi-generator ${VERSION} "
38
80
$(GO ) install ${GO_BUILD_ARGS} ./cmd/binapi-generator
39
81
40
- build :
41
- @echo " => building binapi-generator ${VERSION} "
42
- cd cmd/binapi-generator && $(GO ) build ${GO_BUILD_ARGS}
43
-
44
- examples :
45
- @echo " => building examples"
46
- cd examples/perf-bench && $(GO ) build ${GO_BUILD_ARGS} -v
47
- cd examples/rpc-service && $(GO ) build ${GO_BUILD_ARGS} -v
48
- cd examples/simple-client && $(GO ) build ${GO_BUILD_ARGS} -v
49
- cd examples/stats-client && $(GO ) build ${GO_BUILD_ARGS} -v
50
- cd examples/union-example && $(GO ) build ${GO_BUILD_ARGS} -v
51
-
52
- clean :
53
- @echo " => cleaning"
54
- go clean -v ./cmd/...
55
- go clean -v ./examples/...
56
-
57
- test :
58
- @echo " => running tests"
59
- $(GO ) test ${GO_BUILD_ARGS} ./cmd/...
60
- $(GO ) test ${GO_BUILD_ARGS} ./ ./api ./adapter ./codec ./core
61
-
62
- test-integration :
63
- @echo " => running integration tests"
64
- $(GO ) test ${GO_BUILD_ARGS} ./test/integration
65
-
66
- lint :
67
- @echo " => running linter"
68
- @golint ./... | grep -v vendor | grep -v /binapi/ || true
69
-
70
- gen-binapi-docker : install
71
- @echo " => generating binapi in docker image ${VPP_IMG} "
82
+ generate : # # Generate code
83
+ @echo " # generating code"
84
+ $(GO ) generate -x ./...
85
+
86
+ generate-binapi : install-generator
87
+ @echo " # generating binapi VPP $( VPP_VERSION) "
88
+ $(GO ) generate -x " $( BINAPI_DIR) "
89
+
90
+ gen-binapi-docker : install-generator
91
+ @echo " # generating binapi in docker image ${VPP_IMG} "
72
92
$(eval cmds := $(shell go generate -n $(BINAPI_DIR ) 2>&1 | tr "\n" ";") )
73
93
docker run -t --rm \
74
94
-v " $( shell which gofmt) :/usr/local/bin/gofmt:ro" \
@@ -78,19 +98,13 @@ gen-binapi-docker: install
78
98
" ${VPP_IMG} " \
79
99
sh -xc " cd $( BINAPI_DIR) && $( cmds) "
80
100
81
- generate-binapi : install
82
- @echo " => generating binapi VPP $( VPP_VERSION) "
83
- $(GO ) generate -x " $( BINAPI_DIR) "
84
-
85
- generate :
86
- @echo " => generating code"
87
- $(GO ) generate -x ./...
88
-
89
101
extras :
90
102
@make -C extras
91
103
92
104
93
- .PHONY : all \
94
- install build examples clean test test-integration lint \
95
- generate generate-binapi gen-binapi-docker \
105
+ .PHONY : help \
106
+ build cmd examples clean \
107
+ lint test integration \
108
+ install-generator generate generate-binapi gen-binapi-docker \
96
109
extras
110
+
0 commit comments