blob: 68e2183aad919dfc8ff4f55798b006da8ff00eaa [file] [log] [blame]
Joey Armstrong73d35792022-11-25 08:46:46 -05001# -*- makefile -*-
2# -----------------------------------------------------------------------
Joey Armstrong14628cd2023-01-10 08:38:31 -05003# Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF Contributors
Matteo Scandolo4747d292019-08-05 11:50:18 -07004#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
Joey Armstrong73d35792022-11-25 08:46:46 -050016# -----------------------------------------------------------------------
Matteo Scandolo4747d292019-08-05 11:50:18 -070017
Joey Armstrong73d35792022-11-25 08:46:46 -050018.DEFAULT_GOAL := help
19MAKECMDGOALS ?= help
20
21TOP ?= .
22MAKEDIR ?= $(TOP)/makefiles
23
24##--------------------##
25##---] INCLUDES [---##
26##--------------------##
27help-targets := help-all help HELP
28$(if $(filter $(help-targets),$(MAKECMDGOALS))\
29 ,$(eval include $(MAKEDIR)/help.mk))
30
31##-------------------##
32##---] GLOBALS [---##
33##-------------------##
34SHELL = bash -e -o pipefail
35VERSION ?= $(shell cat ./VERSION)
Matteo Scandolo84f7d482019-08-08 19:00:47 -070036DIFF ?= $(git diff --shortstat 2> /dev/null | tail -n1)
Zdravko Bozakov2da76342019-10-21 09:47:35 +020037GIT_STATUS ?= $(shell [ -z "$DIFF" ] && echo "Dirty" || echo "Clean")
Matteo Scandolo4747d292019-08-05 11:50:18 -070038
Joey Armstrong73d35792022-11-25 08:46:46 -050039## Docker related -- are these ${shell vars} or $(make macros) ?
Matteo Scandolo4747d292019-08-05 11:50:18 -070040DOCKER_TAG ?= ${VERSION}
Andrea Campanellac5b106c2022-01-19 19:06:46 +010041DOCKER_REPOSITORY ?=
42DOCKER_REGISTRY ?=
43DOCKER_RUN_ARGS ?=
Andrea Campanellad683d162020-10-13 16:40:27 +020044DOCKER_PORTS ?= -p 50070:50070 -p 50060:50060 -p 50071:50071 -p 50072:50072 -p 50073:50073 -p 50074:50074 -p 50075:50075
Andrea Campanella64dffd52019-12-17 17:29:57 -080045TYPE ?= minimal
Zdravko Bozakov2da76342019-10-21 09:47:35 +020046
Kent Hagerman60d62302020-03-10 17:02:36 -040047# tool containers
Matteo Scandolo34a9ea32020-11-19 17:40:49 -080048VOLTHA_TOOLS_VERSION ?= 2.3.1
Zdravko Bozakov2da76342019-10-21 09:47:35 +020049
Kent Hagerman60d62302020-03-10 17:02:36 -040050GO = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app $(shell test -t 0 && echo "-it") -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golang go
Joey Armstrong73d35792022-11-25 08:46:46 -050051GO_SH = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app $(shell test -t 0 && echo "-it") -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golang sh -c '# fix-editor-colorization-quote(')
Kent Hagerman60d62302020-03-10 17:02:36 -040052GO_JUNIT_REPORT = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app -i voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-go-junit-report go-junit-report
Matteo Scandolo34a9ea32020-11-19 17:40:49 -080053GOCOVER_COBERTURA = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app/src/github.com/opencord/bbsim -i voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-gocover-cobertura gocover-cobertura
Matteo Scandolo90d08f62020-10-29 12:06:55 -070054GOLANGCI_LINT = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app $(shell test -t 0 && echo "-it") -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golangci-lint golangci-lint
Kent Hagerman60d62302020-03-10 17:02:36 -040055HADOLINT = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app $(shell test -t 0 && echo "-it") voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-hadolint hadolint
56PROTOC = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app $(shell test -t 0 && echo "-it") -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-protoc protoc
57
Joey Armstrong73d35792022-11-25 08:46:46 -050058## use local vars to shorten paths
59bbsim-tag = ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}bbsim:${DOCKER_TAG}
60
Joey Armstrong5c610772023-01-23 16:03:32 -050061## -----------------------------------------------------------------------
62## -----------------------------------------------------------------------
63
Matteo Scandolo4747d292019-08-05 11:50:18 -070064# Public targets
Matteo Scandolo4747d292019-08-05 11:50:18 -070065all: help
66
hkouser24361d42020-12-14 19:21:47 +053067protos: api/bbsim/bbsim.pb.go api/bbsim/bbsim.pb.gw.go api/legacy/bbsim.pb.go api/legacy/bbsim.pb.gw.go api/bbsim/bbsim_dmi.pb.go # @HELP Build proto files
Matteo Scandolo01d41ce2019-10-28 15:42:47 -070068
Matteo Scandolo6866b8c2019-10-28 16:15:24 -070069.PHONY: build
Kent Hagerman60d62302020-03-10 17:02:36 -040070build: protos build-bbsim build-bbsimctl build-bbr
71
72## lint and unit tests
73
74lint-dockerfile:
75 @echo "Running Dockerfile lint check..."
76 @${HADOLINT} $$(find ./build -name "Dockerfile*")
77 @echo "Dockerfile lint check OK"
78
79lint-mod:
80 @echo "Running dependency check..."
81 @${GO} mod verify
82 @echo "Dependency check OK. Running vendor check..."
83 @git status > /dev/null
84 @git diff-index --quiet HEAD -- go.mod go.sum vendor || (echo "ERROR: Staged or modified files must be committed before running this test" && git status -- go.mod go.sum vendor && exit 1)
85 @[[ `git ls-files --exclude-standard --others go.mod go.sum vendor` == "" ]] || (echo "ERROR: Untracked files must be cleaned up before running this test" && git status -- go.mod go.sum vendor && exit 1)
86 ${GO} mod tidy
87 ${GO} mod vendor
88 @git status > /dev/null
89 @git diff-index --quiet HEAD -- go.mod go.sum vendor || (echo "ERROR: Modified files detected after running go mod tidy / go mod vendor" && git status -- go.mod go.sum vendor && git checkout -- go.mod go.sum vendor && exit 1)
90 @[[ `git ls-files --exclude-standard --others go.mod go.sum vendor` == "" ]] || (echo "ERROR: Untracked files detected after running go mod tidy / go mod vendor" && git status -- go.mod go.sum vendor && git checkout -- go.mod go.sum vendor && exit 1)
91 @echo "Vendor check OK."
92
93lint: lint-mod lint-dockerfile
94
Matteo Scandolo90d08f62020-10-29 12:06:55 -070095sca:
Joey Armstrong73d35792022-11-25 08:46:46 -050096 @$(RM) -r ./sca-report
Kent Hagerman60d62302020-03-10 17:02:36 -040097 @mkdir -p ./sca-report
98 @echo "Running static code analysis..."
Matteo Scandolo96f89192021-03-12 13:17:26 -080099 @${GOLANGCI_LINT} run -vv --deadline=6m --out-format junit-xml ./... | tee ./sca-report/sca-report.xml
Kent Hagerman60d62302020-03-10 17:02:36 -0400100 @echo ""
101 @echo "Static code analysis OK"
Matteo Scandolo4747d292019-08-05 11:50:18 -0700102
Matteo Scandolo0e9fabf2020-09-30 17:19:27 -0700103test: docs-lint test-unit test-bbr
Matteo Scandolo569e7172019-12-20 11:51:51 -0800104
Matteo Scandolocedde462021-03-09 17:37:16 -0800105test-unit: clean local-omci-lib-go # @HELP Execute unit tests
Matteo Scandolo90d08f62020-10-29 12:06:55 -0700106 @echo "Running unit tests..."
Kent Hagerman60d62302020-03-10 17:02:36 -0400107 @mkdir -p ./tests/results
Matteo Scandolo4b077aa2021-02-16 17:33:37 -0800108 @${GO} test -mod=vendor -bench=. -v -coverprofile ./tests/results/go-test-coverage.out -covermode count ./... 2>&1 | tee ./tests/results/go-test-results.out ;\
Kent Hagerman60d62302020-03-10 17:02:36 -0400109 RETURN=$$? ;\
110 ${GO_JUNIT_REPORT} < ./tests/results/go-test-results.out > ./tests/results/go-test-results.xml ;\
111 ${GOCOVER_COBERTURA} < ./tests/results/go-test-coverage.out > ./tests/results/go-test-coverage.xml ;\
112 exit $$RETURN
Matteo Scandolo4747d292019-08-05 11:50:18 -0700113
Kent Hagerman60d62302020-03-10 17:02:36 -0400114test-bbr: release-bbr docker-build # @HELP Validate that BBSim and BBR are working together
Joey Armstrong73d35792022-11-25 08:46:46 -0500115 DOCKER_RUN_ARGS="-pon 2 -onu 2" $(MAKE) docker-run
Matteo Scandolo569e7172019-12-20 11:51:51 -0800116 sleep 5
Matteo Scandoloc11074d2020-09-14 14:59:24 -0700117 ./$(RELEASE_DIR)/$(RELEASE_BBR_NAME)-linux-amd64 -pon 2 -onu 2 -logfile tmp.logs
Joey Armstrong73d35792022-11-25 08:46:46 -0500118 docker $(RM) -f bbsim
Matteo Scandolo569e7172019-12-20 11:51:51 -0800119
Kent Hagerman60d62302020-03-10 17:02:36 -0400120mod-update: # @HELP Download the dependencies to the vendor folder
121 ${GO} mod tidy
122 ${GO} mod vendor
Matteo Scandolo38305492019-10-11 11:36:00 -0700123
Matteo Scandolocedde462021-03-09 17:37:16 -0800124docker-build: local-omci-lib-go local-protos# @HELP Build the BBSim docker container (contains BBSimCtl too)
Kent Hagerman60d62302020-03-10 17:02:36 -0400125 docker build \
Joey Armstrong73d35792022-11-25 08:46:46 -0500126 -t "$(bbsim-tag)" \
Kent Hagerman60d62302020-03-10 17:02:36 -0400127 -f build/package/Dockerfile .
Matteo Scandolo4747d292019-08-05 11:50:18 -0700128
Matteo Scandolo01d41ce2019-10-28 15:42:47 -0700129docker-push: # @HELP Push the docker container to a registry
Joey Armstrong73d35792022-11-25 08:46:46 -0500130 docker push "$(bbsim-tag)"
Andrea Campanella64dffd52019-12-17 17:29:57 -0800131docker-kind-load:
132 @if [ "`kind get clusters | grep voltha-$(TYPE)`" = '' ]; then echo "no voltha-$(TYPE) cluster found" && exit 1; fi
Joey Armstrong73d35792022-11-25 08:46:46 -0500133 kind load docker-image "$(bbsim-tag)" --name=voltha-$(TYPE) --nodes $(shell kubectl get nodes --template='{{range .items}}{{.metadata.name}},{{end}}' | sed 's/,$$//')
134
135## -----------------------------------------------------------------------
136## docker-run
137## -----------------------------------------------------------------------
Joey Armstrong72558cb2022-11-30 06:35:52 -0500138
139# % docker run --detach unless dev-mode
140is-docker-run := $(filter-out %-dev,$(MAKECMDGOALS))
141is-docker-run := $(findstring docker-run,$(is-docker-run))
142
Joey Armstrong73d35792022-11-25 08:46:46 -0500143docker-run-cmd = docker run
Joey Armstrong72558cb2022-11-30 06:35:52 -0500144$(if $(is-docker-run),$(eval docker-run-cmd += --detach))
Joey Armstrong73d35792022-11-25 08:46:46 -0500145docker-run-cmd += ${DOCKER_PORTS}
146docker-run-cmd += --privileged
147docker-run-cmd += --rm
148docker-run-cmd += --name bbsim
149docker-run-cmd += "$(bbsim-tag)" /app/bbsim
150docker-run-cmd += ${DOCKER_RUN_ARGS}
Andrea Campanella64dffd52019-12-17 17:29:57 -0800151
Matteo Scandoloe383d5d2019-10-25 14:47:27 -0700152docker-run: # @HELP Runs the container locally (available options: DOCKER_RUN_ARGS="-pon 2 -onu 2" make docker-run)
Joey Armstrong73d35792022-11-25 08:46:46 -0500153 docker ps
Joey Armstrong72558cb2022-11-30 06:35:52 -0500154 $(docker-run-cmd)
Matteo Scandolo4b3fc7e2019-09-17 16:49:54 -0700155
Matteo Scandoloe383d5d2019-10-25 14:47:27 -0700156docker-run-dev: # @HELP Runs the container locally (intended for development purposes, not in detached mode)
Joey Armstrong73d35792022-11-25 08:46:46 -0500157 $(docker-run-cmd)
Matteo Scandoloe383d5d2019-10-25 14:47:27 -0700158
Joey Armstrong73d35792022-11-25 08:46:46 -0500159## -----------------------------------------------------------------------
160## docker-run
161## -----------------------------------------------------------------------
Zack Williams4b0ef4d2019-12-18 14:25:20 -0700162.PHONY: docs docs-lint
Zdravko Bozakov2da76342019-10-21 09:47:35 +0200163docs: swagger # @HELP Generate docs and opens them in the browser
Joey Armstrong73d35792022-11-25 08:46:46 -0500164 $(MAKE) -C docs html
Zdravko Bozakov2da76342019-10-21 09:47:35 +0200165 @echo -e "\nBBSim documentation generated in file://${PWD}/docs/build/html/index.html"
Matteo Scandolo40e067f2019-10-16 16:59:41 -0700166
Zack Williams4b0ef4d2019-12-18 14:25:20 -0700167docs-lint:
Joey Armstrong73d35792022-11-25 08:46:46 -0500168 $(MAKE) -C docs lint
Zack Williams4b0ef4d2019-12-18 14:25:20 -0700169
Matteo Scandolo8dea3992019-10-22 10:54:25 -0700170# Release related items
171# Generates binaries in $RELEASE_DIR with name $RELEASE_NAME-$RELEASE_OS_ARCH
172# Inspired by: https://github.com/kubernetes/minikube/releases
173RELEASE_DIR ?= release
174RELEASE_OS_ARCH ?= linux-amd64 linux-arm64 windows-amd64 darwin-amd64
175
Kent Hagerman60d62302020-03-10 17:02:36 -0400176RELEASE_BBR_NAME ?= bbr
177RELEASE_BBSIM_NAME ?= bbsim
178RELEASE_BBSIMCTL_NAME ?= bbsimctl
Matteo Scandolo8dea3992019-10-22 10:54:25 -0700179
Matteo Scandolo90d08f62020-10-29 12:06:55 -0700180release-bbr:
Kent Hagerman60d62302020-03-10 17:02:36 -0400181 @echo "$(RELEASE_BBR_NAME)-linux-amd64"
Joey Armstrong787278a2022-11-30 09:30:22 -0500182 ${GO} build -mod vendor \
Kent Hagerman60d62302020-03-10 17:02:36 -0400183 -ldflags "-w -X main.buildTime=$(shell date +%Y/%m/%d-%H:%M:%S) \
184 -X main.commitHash=$(shell git log --pretty=format:%H -n 1) \
185 -X main.gitStatus=${GIT_STATUS} \
186 -X main.version=${VERSION}" \
187 -o "$(RELEASE_DIR)/$(RELEASE_BBR_NAME)-linux-amd64" ./cmd/bbr
Matteo Scandolo8dea3992019-10-22 10:54:25 -0700188
Matteo Scandolo90d08f62020-10-29 12:06:55 -0700189release-bbsim:
Kent Hagerman60d62302020-03-10 17:02:36 -0400190 @echo "$(RELEASE_BBSIM_NAME)-linux-amd64"
Joey Armstrong787278a2022-11-30 09:30:22 -0500191 ${GO} build -mod vendor \
Kent Hagerman60d62302020-03-10 17:02:36 -0400192 -ldflags "-w -X main.buildTime=$(shell date +%Y/%m/%d-%H:%M:%S) \
193 -X main.commitHash=$(shell git log --pretty=format:%H -n 1) \
194 -X main.gitStatus=${GIT_STATUS} \
195 -X main.version=${VERSION}" \
196 -o "$(RELEASE_DIR)/$(RELEASE_BBSIM_NAME)-linux-amd64" ./cmd/bbsim
Matteo Scandolo8dea3992019-10-22 10:54:25 -0700197
Joey Armstrong5c610772023-01-23 16:03:32 -0500198release-bbsimctl:
Joey Armstrong787278a2022-11-30 09:30:22 -0500199 @echo "** $(MAKE): processing target [$@]"
200 ${GO_SH} set -eo pipefail; \
Joey Armstrong5c610772023-01-23 16:03:32 -0500201 for os_arch in ${RELEASE_OS_ARCH}; do \
Kent Hagerman60d62302020-03-10 17:02:36 -0400202 echo "$(RELEASE_BBSIMCTL_NAME)-$$os_arch"; \
203 GOOS="$${os_arch%-*}" GOARCH="$${os_arch#*-}" go build -mod vendor \
204 -ldflags "-w -X github.com/opencord/bbsim/internal/bbsimctl/config.BuildTime=$(shell date +%Y/%m/%d-%H:%M:%S) \
205 -X github.com/opencord/bbsim/internal/bbsimctl/config.CommitHash=$(shell git log --pretty=format:%H -n 1) \
206 -X github.com/opencord/bbsim/internal/bbsimctl/config.GitStatus=${GIT_STATUS} \
207 -X github.com/opencord/bbsim/internal/bbsimctl/config.Version=${VERSION}" \
208 -o "$(RELEASE_DIR)/$(RELEASE_BBSIMCTL_NAME)-$$os_arch" ./cmd/bbsimctl; \
Joey Armstrong787278a2022-11-30 09:30:22 -0500209 done'
210# fix-editor-colorization-quote(')
Kent Hagerman60d62302020-03-10 17:02:36 -0400211
Joey Armstrong5c610772023-01-23 16:03:32 -0500212## -----------------------------------------------------------------------
213## -----------------------------------------------------------------------
214release-deps += release-bbr
215release-deps += release-bbsim
216release-deps += release-bbsimctl
217.PHONY: release $(release-deps)
218release: release-init $(release-deps) # @HELP Creates release ready bynaries for BBSimctl and BBR artifacts
Matteo Scandolo8dea3992019-10-22 10:54:25 -0700219
Joey Armstrong5c610772023-01-23 16:03:32 -0500220$(release-deps) : release-init
221
222release-init:
223 @echo "** $(MAKE): processing target [$@]"
224 ${GO_SH} set -eo pipefail\
Joey Armstrongdd7a9aa2023-01-23 18:08:37 -0500225; echo "PWD: $$(/bin/pwd)"\
Joey Armstrong5c610772023-01-23 16:03:32 -0500226; mkdir -p $(RELEASE_DIR)'
227# fix-editor-colorization-quote(')
228
229## -----------------------------------------------------------------------
230## -----------------------------------------------------------------------
Joey Armstrong73d35792022-11-25 08:46:46 -0500231swagger-deps += docs/swagger/bbsim/bbsim.swagger.json
232swagger-deps += docs/swagger/leagacy/bbsim.swagger.json
233.PHONY: $(swagger-deps)
234swagger: $(swagger-deps) # @HELP Generate swagger documentation for BBSim API
Matteo Scandolo4747d292019-08-05 11:50:18 -0700235
Joey Armstrong73d35792022-11-25 08:46:46 -0500236## -----------------------------------------------------------------------
Matteo Scandoloca08fc72019-12-04 14:17:39 -0800237## Local Development Helpers
Joey Armstrong73d35792022-11-25 08:46:46 -0500238## -----------------------------------------------------------------------
Matteo Scandolocedde462021-03-09 17:37:16 -0800239local-omci-lib-go:
240ifdef LOCAL_OMCI_LIB_GO
241 mkdir -p vendor/github.com/opencord/omci-lib-go
242 cp -r ${LOCAL_OMCI_LIB_GO}/* vendor/github.com/opencord/omci-lib-go
Matteo Scandoloca08fc72019-12-04 14:17:39 -0800243endif
Matteo Scandolo4747d292019-08-05 11:50:18 -0700244
Matteo Scandolo4f4ac792020-10-01 16:33:21 -0700245local-protos: ## Copies a local version of the voltha-protos dependency into the vendor directory
246ifdef LOCAL_PROTOS
Joey Armstrong73d35792022-11-25 08:46:46 -0500247 $(RM) -r vendor/github.com/opencord/voltha-protos/v5/go
David K. Bainbridgec415efe2021-08-19 13:05:21 +0000248 mkdir -p vendor/github.com/opencord/voltha-protos/v5/go
249 cp -r ${LOCAL_PROTOS}/go/* vendor/github.com/opencord/voltha-protos/v5/go
Joey Armstrong73d35792022-11-25 08:46:46 -0500250 $(RM) -r vendor/github.com/opencord/voltha-protos/v5/go/vendor
Matteo Scandolo4f4ac792020-10-01 16:33:21 -0700251endif
252
Matteo Scandolo4747d292019-08-05 11:50:18 -0700253# Internals
Matteo Scandolo8dea3992019-10-22 10:54:25 -0700254
Matteo Scandolo3de9de02019-11-14 13:40:03 -0800255clean:
Joey Armstrong73d35792022-11-25 08:46:46 -0500256 @$(RM) -f bbsim
257 @$(RM) -f bbsimctl
258 @$(RM) -f bbr
259 @$(RM) -r tools/bin
260 @$(RM) -r release/*
Matteo Scandolo3de9de02019-11-14 13:40:03 -0800261
Matteo Scandolocedde462021-03-09 17:37:16 -0800262build-bbr: local-omci-lib-go local-protos
Kent Hagerman60d62302020-03-10 17:02:36 -0400263 @go build -mod vendor \
264 -ldflags "-w -X main.buildTime=$(shell date +%Y/%m/%d-%H:%M:%S) \
265 -X main.commitHash=$(shell git log --pretty=format:%H -n 1) \
266 -X main.gitStatus=${GIT_STATUS} \
267 -X main.version=${VERSION}" \
268 ./cmd/bbr
Matteo Scandolo40e067f2019-10-16 16:59:41 -0700269
Matteo Scandolo8df63df2019-09-12 10:34:32 -0700270build-bbsim:
Kent Hagerman60d62302020-03-10 17:02:36 -0400271 @go build -mod vendor \
272 -ldflags "-w -X main.buildTime=$(shell date +%Y/%m/%d-%H:%M:%S) \
273 -X main.commitHash=$(shell git log --pretty=format:%H -n 1) \
274 -X main.gitStatus=${GIT_STATUS} \
275 -X main.version=${VERSION}" \
276 ./cmd/bbsim
Matteo Scandolo8df63df2019-09-12 10:34:32 -0700277
278build-bbsimctl:
Kent Hagerman60d62302020-03-10 17:02:36 -0400279 @go build -mod vendor \
280 -ldflags "-w -X github.com/opencord/bbsim/internal/bbsimctl/config.BuildTime=$(shell date +%Y/%m/%d-%H:%M:%S) \
281 -X github.com/opencord/bbsim/internal/bbsimctl/config.CommitHash=$(shell git log --pretty=format:%H -n 1) \
282 -X github.com/opencord/bbsim/internal/bbsimctl/config.GitStatus=${GIT_STATUS} \
283 -X github.com/opencord/bbsim/internal/bbsimctl/config.Version=${VERSION}" \
284 ./cmd/bbsimctl
Matteo Scandolo4747d292019-08-05 11:50:18 -0700285
Kent Hagerman60d62302020-03-10 17:02:36 -0400286setup_tools:
287 @echo "Downloading dependencies..."
David K. Bainbridgec415efe2021-08-19 13:05:21 +0000288 @${GO} mod download github.com/grpc-ecosystem/grpc-gateway github.com/opencord/voltha-protos/v5
Kent Hagerman60d62302020-03-10 17:02:36 -0400289 @echo "Dependencies downloaded OK"
Matteo Scandolo84f7d482019-08-08 19:00:47 -0700290
David K. Bainbridgec415efe2021-08-19 13:05:21 +0000291VOLTHA_PROTOS ?= $(shell ${GO} list -f '{{ .Dir }}' -m github.com/opencord/voltha-protos/v5)
Kent Hagerman60d62302020-03-10 17:02:36 -0400292GOOGLEAPI ?= $(shell ${GO} list -f '{{ .Dir }}' -m github.com/grpc-ecosystem/grpc-gateway)
Matteo Scandolo4747d292019-08-05 11:50:18 -0700293
Joey Armstrong73d35792022-11-25 08:46:46 -0500294.PHONY: api/openolt/openolt.pb.go api/bbsim/bbsim.pb.go api/bbsim/bbsim.pb.gw.go api/legacy/bbsim.pb.go api/legacy/bbsim.pb.gw.go
Kent Hagerman60d62302020-03-10 17:02:36 -0400295api/openolt/openolt.pb.go: api/openolt/openolt.proto setup_tools
296 @echo $@
297 @${PROTOC} -I. \
298 -I${GOOGLEAPI}/third_party/googleapis \
amit.ghoshee17c002021-06-10 12:14:38 +0200299 --go_out=plugins=grpc:./ --go_opt=paths=source_relative \
Kent Hagerman60d62302020-03-10 17:02:36 -0400300 $<
Zdravko Bozakov2da76342019-10-21 09:47:35 +0200301
hkouser24361d42020-12-14 19:21:47 +0530302api/bbsim/bbsim_dmi.pb.go: api/bbsim/bbsim_dmi.proto setup_tools
303 @echo $@
304 @${PROTOC} -I. \
305 -I${GOOGLEAPI}/third_party/googleapis \
amit.ghoshee17c002021-06-10 12:14:38 +0200306 --go_out=plugins=grpc:./ --go_opt=paths=source_relative \
hkouser24361d42020-12-14 19:21:47 +0530307 $<
308
Kent Hagerman60d62302020-03-10 17:02:36 -0400309api/bbsim/bbsim.pb.go api/bbsim/bbsim.pb.gw.go: api/bbsim/bbsim.proto api/bbsim/bbsim.yaml setup_tools
310 @echo $@
311 @${PROTOC} -I. \
312 -I${GOOGLEAPI}/third_party/googleapis \
313 -I${VOLTHA_PROTOS}/protos/ \
amit.ghoshee17c002021-06-10 12:14:38 +0200314 --go_out=plugins=grpc:./ --go_opt=paths=source_relative \
315 --grpc-gateway_out=logtostderr=true,paths=source_relative,grpc_api_configuration=api/bbsim/bbsim.yaml,allow_delete_body=true:./ \
Kent Hagerman60d62302020-03-10 17:02:36 -0400316 $<
Zdravko Bozakov2da76342019-10-21 09:47:35 +0200317
Kent Hagerman60d62302020-03-10 17:02:36 -0400318api/legacy/bbsim.pb.go api/legacy/bbsim.pb.gw.go: api/legacy/bbsim.proto setup_tools
319 @echo $@
320 @${PROTOC} -I. \
321 -I${GOOGLEAPI}/third_party/googleapis/ \
322 -I${GOOGLEAPI}/ \
323 -I${VOLTHA_PROTOS}/protos/ \
324 --go_out=plugins=grpc:./ \
amit.ghoshee17c002021-06-10 12:14:38 +0200325 --grpc-gateway_out=logtostderr=true,paths=source_relative,allow_delete_body=true:./ \
Kent Hagerman60d62302020-03-10 17:02:36 -0400326 $<
327
328docs/swagger/bbsim/bbsim.swagger.json: api/bbsim/bbsim.yaml setup_tools
329 @echo $@
330 @${PROTOC} -I ./api \
331 -I${GOOGLEAPI}/ \
332 -I${VOLTHA_PROTOS}/protos/ \
Zack Williamsd2907e62020-04-03 10:23:02 -0700333 --swagger_out=logtostderr=true,allow_delete_body=true,disable_default_errors=true,grpc_api_configuration=$<:docs/swagger/ \
Kent Hagerman60d62302020-03-10 17:02:36 -0400334 api/bbsim/bbsim.proto
335
336docs/swagger/leagacy/bbsim.swagger.json: api/legacy/bbsim.proto setup_tools
337 @echo $@
338 @${PROTOC} -I ./api \
339 -I${GOOGLEAPI}/ \
340 -I${VOLTHA_PROTOS}/protos/ \
Zack Williamsd2907e62020-04-03 10:23:02 -0700341 --swagger_out=logtostderr=true,allow_delete_body=true,disable_default_errors=true:docs/swagger/ \
Kent Hagerman60d62302020-03-10 17:02:36 -0400342 $<
Joey Armstrong73d35792022-11-25 08:46:46 -0500343
344# [EOF]