blob: 0ae100ba58f9a0ffeaa5254067eb134023464219 (
plain)
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
SHELL := /usr/bin/env bash -o pipefail
VERSION ?= $(shell git describe --always --tags --dirty)
COMMIT ?= $(shell git rev-parse HEAD)
BUILD_STAMP ?= $(shell git log -1 --format='%ct')
BUILD_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD)
BUILD_HOST ?= $(shell hostname)
BUILD_USER ?= $(shell id -un)
GO ?= go
GOVPP_PKG := git.fd.io/govpp.git
LDFLAGS = \
-X ${GOVPP_PKG}/version.version=$(VERSION) \
-X ${GOVPP_PKG}/version.commitHash=$(COMMIT) \
-X ${GOVPP_PKG}/version.buildStamp=$(BUILD_STAMP) \
-X ${GOVPP_PKG}/version.buildBranch=$(BUILD_BRANCH) \
-X ${GOVPP_PKG}/version.buildUser=$(BUILD_USER) \
-X ${GOVPP_PKG}/version.buildHost=$(BUILD_HOST)
ifeq ($(NOSTRIP),)
LDFLAGS += -w -s
endif
GO_BUILD_TAGS ?= novpp
GO_BUILD_ARGS = -ldflags "$(LDFLAGS)"
ifneq ($(GO_BUILD_TAGS),)
GO_BUILD_ARGS += -tags="${GO_BUILD_TAGS}"
endif
ifneq ($(GO_NOTRIM),0)
GO_BUILD_ARGS += -trimpath
endif
ifeq ($(V),1)
GO_BUILD_ARGS += -v
endif
VPP_VERSION ?= $(shell dpkg-query -f '\${Version}' -W vpp)
# VPP Docker image to use for api generation (gen-binapi-docker)
VPP_IMG ?= ligato/vpp-base:latest
# Local VPP directory used for binary api generation (gen-binapi-from-code)
VPP_DIR ?=
# Target directory for generated go api bindings
BINAPI_DIR ?= ./binapi
# Binapi generator path
BINAPI_GENERATOR = ./bin/binapi-generator
bin:
mkdir -p bin
build: ## Build all
@echo "# building ${VERSION}"
$(GO) build ${GO_BUILD_ARGS} ./...
cmd-binapi-generator: bin ## Build commands
$(GO) build ${GO_BUILD_ARGS} -o bin ./cmd/binapi-generator
cmd: bin ## Build commands
$(GO) build ${GO_BUILD_ARGS} -o bin ./cmd/...
examples: bin ## Build examples
$(GO) build ${GO_BUILD_ARGS} -o bin ./examples/...
clean: ## Clean all
@echo "# cleaning"
$(GO) clean -v ./...
test: ## Run unit tests
$(GO) version
@echo "# running tests"
$(GO) test -tags="${GO_BUILD_TAGS}" ./...
integration: ## Run integration tests
@echo "# running integration tests"
$(GO) test -tags="integration ${GO_BUILD_TAGS}" ./test/integration
lint: ## Run code linter
@echo "# running linter"
@golint ./...
install: install-generator install-proxy ## Install all
install-generator: ## Install binapi-generator
@echo "# installing binapi-generator ${VERSION}"
@$(GO) install ${GO_BUILD_ARGS} ./cmd/binapi-generator
install-proxy: ## Install vpp-proxy
@echo "# installing vpp-proxy ${VERSION}"
$(GO) install ${GO_BUILD_ARGS} ./cmd/vpp-proxy
generate: ## Generate all
@echo "# generating code"
$(GO) generate -x ./...
generate-binapi: install-generator ## Generate binapi code
@echo "# generating binapi VPP $(VPP_VERSION)"
$(GO) generate -x "$(BINAPI_DIR)"
gen-binapi-from-code: cmd-binapi-generator
$(eval VPP_API_DIR := ${VPP_DIR}/build-root/install-vpp-native/vpp/share/vpp/api/)
@echo "Generating vpp API.json and go bindings"
@echo "Vpp Directory ${VPP_DIR}"
@echo "Vpp API files ${VPP_API_DIR}"
@echo "Go bindings ${BINAPI_DIR}"
@cd ${VPP_DIR} && make json-api-files
@${BINAPI_GENERATOR} \
--input-dir=${VPP_API_DIR} \
--output-dir=${BINAPI_DIR} \
--gen rpc,rest \
--no-source-path-info
gen-binapi-docker: install-generator ## Generate binapi code (using Docker)
@echo "# generating binapi in docker image ${VPP_IMG}"
$(eval cmds := $(shell go generate -n $(BINAPI_DIR) 2>&1 | tr "\n" ";"))
docker run -t --rm \
-e DEBUG_GOVPP \
-v "$(shell which binapi-generator):/usr/local/bin/binapi-generator:ro" \
-v "$(shell pwd):/govpp" \
-w /govpp \
-u "$(shell id -u):$(shell id -g)" \
"${VPP_IMG}" \
sh -ec "cd $(BINAPI_DIR) && $(cmds)"
extras:
@make -C extras
help:
@echo "List of make targets:"
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.DEFAULT_GOAL = help
.PHONY: help \
build cmd examples clean \
lint test integration \
install install-generator install-proxy \
generate generate-binapi gen-binapi-docker \
extras
|