blob: 37ae4a001b4428e076e74c2126484ba86fd33770 [file] [log] [blame]
Zack Williams86f87202018-10-05 10:36:32 -07001# Copyright 2018-present Open Networking Foundation
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
Zack Williams2abf3932019-08-05 14:07:05 -070015VERSION ?= $(shell cat ./VERSION)
16BBSIM_DEPS = $(wildcard ./*.go)
Zack Williams86f87202018-10-05 10:36:32 -070017
Kailashd88258b2019-07-01 21:27:48 -070018## Docker related
Zack Williams2abf3932019-08-05 14:07:05 -070019DOCKER_REGISTRY ?= ""
20DOCKER_REPOSITORY ?= voltha/
Kailashd88258b2019-07-01 21:27:48 -070021DOCKER_BUILD_ARGS ?=
22DOCKER_TAG ?= ${VERSION}
Zack Williams2abf3932019-08-05 14:07:05 -070023BBSIM_IMAGENAME := ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}voltha-bbsim:${DOCKER_TAG}
Kailashd88258b2019-07-01 21:27:48 -070024
25## Docker labels. Only set ref and commit date if committed
26DOCKER_LABEL_VCS_URL ?= $(shell git remote get-url $(shell git remote))
27DOCKER_LABEL_VCS_REF ?= $(shell git diff-index --quiet HEAD -- && git rev-parse HEAD || echo "unknown")
28DOCKER_LABEL_COMMIT_DATE ?= $(shell git diff-index --quiet HEAD -- && git show -s --format=%cd --date=iso-strict HEAD || echo "unknown" )
29DOCKER_LABEL_BUILD_DATE ?= $(shell date -u "+%Y-%m-%dT%H:%M:%SZ")
30
Zdravko Bozakovf3081e02019-09-18 12:24:13 +020031GRPC_GW_PATH ?= $(shell GO111MODULE=on go list -f '{{ .Dir }}' -m github.com/grpc-ecosystem/grpc-gateway)
32
Matt Jeanneret7c9c5f22019-08-09 14:40:12 -040033bbsim: dep bbsimapi
Matteo Scandolof7b260d2019-07-31 13:43:02 -070034 GO111MODULE=on go build -i -v -o $@
Zack Williams86f87202018-10-05 10:36:32 -070035
Matteo Scandolof7b260d2019-07-31 13:43:02 -070036dep:
Zdravko Bozakovf3081e02019-09-18 12:24:13 +020037 GO111MODULE=on go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v1.9.5
Matteo Scandolof7b260d2019-07-31 13:43:02 -070038 GO111MODULE=on go mod download all
Zack Williams86f87202018-10-05 10:36:32 -070039
Zdravko Bozakovf3081e02019-09-18 12:24:13 +020040
41bbsimapi: dep api/bbsim.pb.go api/bbsim.pb.gw.go
42 @echo using ${GRPC_GW_PATH}
43
44api/bbsim.pb.go api/bbsim.pb.gw.go: api/bbsim.proto
Zdravko Bozakov7401ff22019-05-28 22:45:12 +020045 @protoc -I ./api \
Zdravko Bozakovf3081e02019-09-18 12:24:13 +020046 -I${GRPC_GW_PATH}/third_party/googleapis/ \
47 -I${GRPC_GW_PATH}/ \
Zdravko Bozakov7401ff22019-05-28 22:45:12 +020048 --go_out=plugins=grpc:api/ \
49 --grpc-gateway_out=logtostderr=true,allow_delete_body=true:api/ \
Shad Ansari3f525132019-06-23 06:16:28 +000050 api/bbsim.proto
Zdravko Bozakov7401ff22019-05-28 22:45:12 +020051
52swagger: ## Generate swagger documentation for BBsim API
53 @protoc -I ./api \
Zdravko Bozakovf3081e02019-09-18 12:24:13 +020054 -I${GRPC_GW_PATH}/third_party/googleapis/ \
55 -I${GRPC_GW_PATH}/ \
Zdravko Bozakov7401ff22019-05-28 22:45:12 +020056 --swagger_out=logtostderr=true,allow_delete_body=true:api/swagger/ \
57 bbsim.proto
58
Matt Jeanneret7c9c5f22019-08-09 14:40:12 -040059test: dep bbsimapi
Matteo Scandolof7b260d2019-07-31 13:43:02 -070060 GO111MODULE=on go test -v ./...
61 GO111MODULE=on go test -v ./... -cover
Keita NISHIMOTOca4da5f2018-10-15 22:48:52 +090062
63fmt:
64 go fmt ./...
65
66vet:
67 go vet ./...
68
69lint:
70 gometalinter --vendor --exclude ../../golang.org --skip protos --sort path --sort line ./...
Zack Williams86f87202018-10-05 10:36:32 -070071
72clean:
Zdravko Bozakov7401ff22019-05-28 22:45:12 +020073 @rm -vf bbsim \
Zdravko Bozakovf3081e02019-09-18 12:24:13 +020074 api/bbsim.pb.go \
Zdravko Bozakov7401ff22019-05-28 22:45:12 +020075 api/bbsim.pb.gw.go \
76 api/swagger/*.json
Zack Williams86f87202018-10-05 10:36:32 -070077
Kailashd88258b2019-07-01 21:27:48 -070078docker-build:
Zack Williams2abf3932019-08-05 14:07:05 -070079 docker build ${DOCKER_BUILD_ARGS} -t ${BBSIM_IMAGENAME} .
Matteo Scandolof7b260d2019-07-31 13:43:02 -070080
81docker-save:
Zack Williams2abf3932019-08-05 14:07:05 -070082 docker save ${BBSIM_IMAGENAME} -o voltha-bbsim_${DOCKER_TAG}.tgz
Kailashd88258b2019-07-01 21:27:48 -070083
84docker-push:
Zack Williams2abf3932019-08-05 14:07:05 -070085 docker push ${BBSIM_IMAGENAME}