| # This is a simple Makefile that generates client library source code |
| # for Google APIs using Protocol Buffers and gRPC for any supported |
| # language. However, it does not compile the generated code into final |
| # libraries that can be directly used with application code. |
| # |
| # Syntax example: make OUTPUT=./output LANGUAGE=java |
| # |
| |
| # Choose the output directory |
| OUTPUT ?= ./gens |
| |
| # Choose the target language. |
| LANGUAGE ?= cpp |
| |
| # Choose grpc plugin |
| GRPCPLUGIN ?= /usr/local/bin/grpc_$(LANGUAGE)_plugin |
| |
| # Choose the proto include directory. |
| PROTOINCLUDE ?= /usr/local/include |
| |
| # Choose protoc binary |
| PROTOC ?= protoc |
| |
| # Compile the entire repository |
| # |
| # NOTE: if "protoc" command is not in the PATH, you need to modify this file. |
| # |
| |
| ifeq ($(LANGUAGE),go) |
| $(error Go source files are not generated from this repository. See: https://github.com/google/go-genproto) |
| endif |
| |
| FLAGS+= --proto_path=.:$(PROTOINCLUDE) |
| FLAGS+= --$(LANGUAGE)_out=$(OUTPUT) --grpc_out=$(OUTPUT) |
| FLAGS+= --plugin=protoc-gen-grpc=$(GRPCPLUGIN) |
| |
| SUFFIX:= pb.cc |
| |
| DEPS:= $(shell find google $(PROTOINCLUDE)/google/protobuf -type f -name '*.proto' | sed "s/proto$$/$(SUFFIX)/") |
| |
| all: $(DEPS) |
| |
| %.$(SUFFIX): %.proto |
| mkdir -p $(OUTPUT) |
| $(PROTOC) $(FLAGS) $*.proto |
| |
| clean: |
| rm $(patsubst %,$(OUTPUT)/%,$(DEPS)) 2> /dev/null |
| rm -rd $(OUTPUT) |