fix govpp, add more checks to makefile
[govpp.git] / Makefile
index ee06818..c4b742e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,35 +1,66 @@
-build:
-       @cd cmd/binapi-generator && go build -v
-       @cd examples/cmd/simple-client && go build -v
-       @cd examples/cmd/stats-client && go build -v
-       @cd examples/cmd/perf-bench && go build -v
+VERSION ?= $(shell git describe --always --tags --dirty)
 
-test:
-       @cd cmd/binapi-generator && go test -cover .
-       @cd core && go test -cover .
+BINAPI_DIR ?= $(shell cd examples/bin_api && pwd)
+VPP_VERSION := $(shell apt-cache show vpp | grep Version: | cut -d' ' -f2-)
+
+all: test build examples
 
 install:
-       @cd cmd/binapi-generator && go install -v
+       @echo "=> installing binapi generator ${VERSION}"
+       go install ./cmd/binapi-generator
+
+build:
+       @echo "=> building binapi generator ${VERSION}"
+       cd cmd/binapi-generator && go build -v
+
+examples:
+       @echo "=> building examples"
+       cd examples/simple-client && go build -v
+       cd examples/stats-api && go build -v
+       cd examples/perf-bench && go build -v
+       cd examples/union-example && go build -v
+
+test:
+       @echo "=> running tests"
+       go test -cover ./cmd/...
+       go test -cover ./ ./adapter ./core ./api ./codec
 
 extras:
-       @cd extras/libmemif/examples/raw-data && go build -v
-       @cd extras/libmemif/examples/icmp-responder && go build -v
-       @cd extras/libmemif/examples/gopacket && go build -v
-       @cd extras/libmemif/examples/jumbo-frames && go build -v
+       @echo "=> building extras"
+       cd extras/libmemif/examples/gopacket && go build -v
+       cd extras/libmemif/examples/icmp-responder && go build -v
+       cd extras/libmemif/examples/jumbo-frames && go build -v
+       cd extras/libmemif/examples/raw-data && go build -v
 
 clean:
-       @rm -f cmd/binapi-generator/binapi-generator
-       @rm -f examples/cmd/simple-client/simple-client
-       @rm -f examples/cmd/stats-client/stats-client
-       @rm -f examples/cmd/perf-bench/perf-bench
-       @rm -f extras/libmemif/examples/raw-data/raw-data
-       @rm -f extras/libmemif/examples/icmp-responder/icmp-responder
+       @echo "=> cleaning"
+       rm -f cmd/binapi-generator/binapi-generator
+       rm -f examples/perf-bench/perf-bench
+       rm -f examples/simple-client/simple-client
+       rm -f examples/stats-api/stats-api
+       rm -f examples/union-example/union-example
+       rm -f extras/libmemif/examples/gopacket/gopacket
+       rm -f extras/libmemif/examples/icmp-responder/icmp-responder
+       rm -f extras/libmemif/examples/jumbo-frames/jumbo-frames
+       rm -f extras/libmemif/examples/raw-data/raw-data
+
+generate-binapi:
+       @echo "=> generating binapi"
+       @go generate "${BINAPI_DIR}"
+
+generate: install
+       @echo "=> generating code"
+       cd examples && go generate ./...
 
-generate:
-       @cd core && go generate ./...
-       @cd examples && go generate ./...
+update-vppapi:
+       @echo "=> updating API JSON files using installed VPP ${VPP_VERSION}"
+       @cd ${BINAPI_DIR} && find . -type f -name '*.api.json' -exec cp /usr/share/vpp/api/'{}' '{}' \;
+       @echo ${VPP_VERSION} > ${BINAPI_DIR}/VPP_VERSION
 
 lint:
+       @echo "=> running linter"
        @golint ./... | grep -v vendor | grep -v bin_api || true
 
-.PHONY: build test install extras clean generate
+.PHONY: all \
+       install build examples test \
+       extras clean generate lint