aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile49
1 files changed, 49 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 000000000..26801adac
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,49 @@
+# 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)