Project import
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..1996510
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,31 @@
+#
+#    Copyright (c) 2010-2011 Nest, Inc.
+#    All rights reserved.
+#
+#    This document is the property of Nest. It is considered
+#    confidential and proprietary information.
+#
+#    This document may not be reproduced or transmitted in any form,
+#    in whole or in part, without the express written permission of
+#    Nest.
+#
+#    Description:
+#      This file is the makefile for the Ext2 File System utilities
+#      libraries, an important one of which is the Universally Unique
+#      Identifier (UUID) library.
+#
+
+
+include pre.mak
+
+ifeq ($(BUILD_FEATURE_SIMULATOR),1)
+SubMakefiles = Makefile.host
+else
+SubMakefiles = Makefile.host \
+               Makefile.target
+endif
+
+include post.mak
+
+# Dependencies
+Makefile.target: $(filter Makefile.host,$(SubMakefiles))
diff --git a/Makefile.host b/Makefile.host
new file mode 100644
index 0000000..200ef3f
--- /dev/null
+++ b/Makefile.host
@@ -0,0 +1,134 @@
+#
+#    Copyright (c) 2010-2011 Nest, Inc.
+#    All rights reserved.
+#
+#    This document is the property of Nest. It is considered
+#    confidential and proprietary information.
+#
+#    This document may not be reproduced or transmitted in any form,
+#    in whole or in part, without the express written permission of
+#    Nest.
+#
+#    Description:
+#      This file is the makefile for the Ext2 File System utilities
+#      libraries, an important one of which is the Universally Unique
+#      Identifier (UUID) library.
+#
+
+ifneq ($(BUILD_FEATURE_SIMULATOR),1)
+override BuildProduct   := diamondsim
+SaveBuildMode       := $(BuildMode)
+override BuildMode  := snapshot
+endif
+
+include pre.mak
+
+LinkAgainstCPlusPlus := Yes
+
+PackageName		:= grpc
+
+PackageExtension	:= tar.gz
+PackageSeparator	:= -
+
+PackagePatchArgs	:= -p1
+
+PackageArchive		:= $(PackageName).$(PackageExtension)
+PackageSourceDir	:= $(PackageName)$(PackageSeparator)$(PackageVersion)
+
+PackageBuildMakefile    = $(call GenerateBuildPaths,Makefile)
+
+PackageResultPath = $(call GenerateResultPaths,,usr)
+
+CleanPaths		+= $(PackageLicenseFile)
+
+SOURCEDIRS                      = $(PackageSourceDir)
+$(PackageSourceDir)_RULE_TARGET = $(BuildDirectory)/configure
+
+all: $(PackageDefaultGoal)
+
+# Generate the package license contents.
+
+$(PackageLicensePaths): $(BuildDirectory)/source
+
+$(PackageSourceDir)/COPYING: $(BuildDirectory)/source
+
+$(PackageLicenseFile): $(PackageSourceDir)/COPYING
+	$(copy-result)
+
+# Extract the source from the archive and apply patches, if any.
+
+$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths)
+	$(expand-and-patch-package)
+
+# Prepare the sources.
+
+.PHONY: source
+source: $(BuildDirectory)/source
+$(BuildDirectory)/source: | $(PackageSourceDir) $(BuildDirectory)
+	$(Verbose)touch $@
+
+# Patch the sources, if necessary.
+
+.PHONY: patch
+patch: $(BuildDirectory)/patch
+$(BuildDirectory)/patch: $(BuildDirectory)/source | $(BuildDirectory)
+	$(Verbose)touch $@
+
+$(PackageBuildMakefile): | $(PackageSourceDir) $(BuildDirectory)
+	$(Verbose)$(call create-links,$(CURDIR)/$(PackageSourceDir),$(BuildDirectory))
+
+# Configure the source for building.
+
+.PHONY: configure
+configure: $(BuildDirectory)/configure
+$(BuildDirectory)/configure: $(BuildDirectory)/source $(PackageBuildMakefile) | $(BuildDirectory)
+	$(Verbose)touch $@
+
+# Build the source.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+ProtobufSrcBuildDir = $(subst PackageBuildSrcDir=,,$(filter PackageBuildSrcDir=%,$(shell $(MAKE) BuildProduct=$(BuildProduct) BuildConfig=$(BuildConfig) -f $(ProtobufHostMakefile) print-PackageBuildSrcDir)))
+.PHONY: build
+build: $(BuildDirectory)/build
+$(BuildDirectory)/build: $(BuildDirectory)/configure | $(BuildDirectory)
+	$(Verbose)unset MAKEFLAGS && \
+	export PKG_CONFIG_PATH="$(ProtobufPkgConfigPath)" && \
+	export $(LoaderSearchPath)=$(ProtocLibraryHostResultPath) && \
+	export PATH="$(ProtocExecutableHostResultPath):$(PATH)" && \
+	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
+	CC="$(CC) $(CPPOPTFLAGS)" CXX="$(CXX) $(CPPOPTFLAGS)" LD="$(LD)" LDXX="$(LD)" AR="$(AR) $(ARFLAGS)" RANLIB="$(RANLIB)" STRIP="$(STRIP)" V=1 \
+	PKG_CONFIG="$(PKG_CONFIG_HOST)" \
+	prefix=$(PackageResultPath) \
+	PROTOBUF_SRC_DIR="$(ProtobufSrcBuildDir)" \
+	all
+	$(Verbose)touch $@
+
+# Stage the build to a temporary installation area.
+
+.PHONY: stage
+stage: $(BuildDirectory)/stage
+$(BuildDirectory)/stage: $(BuildDirectory)/build | $(ResultDirectory) $(BuildDirectory)
+	$(Verbose)unset MAKEFLAGS && \
+	export PKG_CONFIG_PATH="$(ProtobufPkgConfigPath)" && \
+	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
+	CC="$(CC) $(CPPOPTFLAGS)" CXX="$(CXX) $(CPPOPTFLAGS)" LD="$(LD)" LDXX="$(LD)" AR="$(AR) $(ARFLAGS)" RANLIB="$(RANLIB)" STRIP="$(STRIP)" V=1 \
+	PKG_CONFIG="$(PKG_CONFIG_HOST)" \
+	INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
+	prefix=$(PackageResultPath) \
+	PROTOBUF_SRC_DIR="$(ProtobufSrcBuildDir)" \
+	install
+	$(Verbose)touch $@
+
+
+clean:
+	$(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory)
+
+include post.mak
+
+ifneq ($(BUILD_FEATURE_SIMULATOR),1)
+override BuildMode  := $(SaveBuildMode)
+endif
+
diff --git a/Makefile.target b/Makefile.target
new file mode 100644
index 0000000..eeed072
--- /dev/null
+++ b/Makefile.target
@@ -0,0 +1,126 @@
+#
+#    Copyright (c) 2010-2011 Nest, Inc.
+#    All rights reserved.
+#
+#    This document is the property of Nest. It is considered
+#    confidential and proprietary information.
+#
+#    This document may not be reproduced or transmitted in any form,
+#    in whole or in part, without the express written permission of
+#    Nest.
+#
+#    Description:
+#      This file is the makefile for the Ext2 File System utilities
+#      libraries, an important one of which is the Universally Unique
+#      Identifier (UUID) library.
+#
+
+include pre.mak
+
+LinkAgainstCPlusPlus := Yes
+
+PackageName		:= grpc
+
+PackageExtension	:= tar.gz
+PackageSeparator	:= -
+
+PackagePatchArgs	:= -p1
+
+PackageArchive		:= $(PackageName).$(PackageExtension)
+PackageSourceDir	:= $(PackageName)$(PackageSeparator)$(PackageVersion)
+
+PackageBuildMakefile    = $(call GenerateBuildPaths,Makefile)
+
+PackageResultPath = $(call GenerateResultPaths,,usr)
+
+CleanPaths		+= $(PackageLicenseFile)
+
+SOURCEDIRS                      = $(PackageSourceDir)
+$(PackageSourceDir)_RULE_TARGET = $(BuildDirectory)/configure
+
+all: $(PackageDefaultGoal)
+
+# Generate the package license contents.
+
+$(PackageLicensePaths): $(BuildDirectory)/source
+
+$(PackageSourceDir)/COPYING: $(BuildDirectory)/source
+
+$(PackageLicenseFile): $(PackageSourceDir)/COPYING
+	$(copy-result)
+
+# Extract the source from the archive and apply patches, if any.
+
+$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths)
+	$(expand-and-patch-package)
+
+# Prepare the sources.
+
+.PHONY: source
+source: $(BuildDirectory)/source
+$(BuildDirectory)/source: | $(PackageSourceDir) $(BuildDirectory)
+	$(Verbose)touch $@
+
+# Patch the sources, if necessary.
+
+.PHONY: patch
+patch: $(BuildDirectory)/patch
+$(BuildDirectory)/patch: $(BuildDirectory)/source | $(BuildDirectory)
+	$(Verbose)touch $@
+
+$(PackageBuildMakefile): | $(PackageSourceDir) $(BuildDirectory)
+	$(Verbose)$(call create-links,$(CURDIR)/$(PackageSourceDir),$(BuildDirectory))
+
+# Configure the source for building.
+
+.PHONY: configure
+configure: $(BuildDirectory)/configure
+$(BuildDirectory)/configure: $(BuildDirectory)/source $(PackageBuildMakefile) | $(BuildDirectory)
+	$(Verbose)touch $@
+
+# Build the source.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+ProtobufSrcBuildDir = $(subst PackageBuildSrcDir=,,$(filter PackageBuildSrcDir=%,$(shell $(MAKE) BuildProduct=$(BuildProduct) BuildConfig=$(BuildConfig) -f $(ProtobufHostMakefile) print-PackageBuildSrcDir)))
+GrpcPluginHostResultPath = $(subst GrpcBinaryPath=,,$(filter GrpcBinaryPath=%,$(shell $(MAKE) BuildProduct=$(BuildProduct) BuildConfig=$(BuildConfig) -f $(GrpcHostMakefile) print-GrpcBinaryPath)))
+
+.PHONY: build
+build: $(BuildDirectory)/build
+$(BuildDirectory)/build: $(BuildDirectory)/configure | $(BuildDirectory)
+	$(Verbose)unset MAKEFLAGS && \
+	export PKG_CONFIG_PATH="$(ZlibPkgConfigPath):$(ProtobufPkgConfigPath):$(OpenSSLPkgConfigPath)" && \
+	export $(LoaderSearchPath)=$(ProtocLibraryHostResultPath) && \
+	export PATH="$(ProtocExecutableHostResultPath):$(PATH)" && \
+	export CPPFLAGS="$(call ToolGenerateIncludeArgument,$(LinuxIncludePath))" && \
+	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
+	CC="$(CC) $(CPPOPTFLAGS)" CXX="$(CXX) $(CPPOPTFLAGS)" LD="$(LD)" LDXX="$(LD)" AR="$(AR) $(ARFLAGS)" RANLIB="$(RANLIB)" STRIP="$(STRIP)" V=1 \
+	prefix=$(PackageResultPath) \
+	PROTOBUF_SRC_DIR="$(ProtobufSrcBuildDir)" \
+	PROTOC_PLUGINS_DIR="$(GrpcPluginHostResultPath)" \
+	all
+	$(Verbose)touch $@
+
+# Stage the build to a temporary installation area.
+
+.PHONY: stage
+stage: $(BuildDirectory)/stage
+$(BuildDirectory)/stage: $(BuildDirectory)/build | $(ResultDirectory) $(BuildDirectory)
+	$(Verbose)unset MAKEFLAGS && \
+	export PKG_CONFIG_PATH="$(ZlibPkgConfigPath):$(ProtobufPkgConfigPath):$(OpenSSLPkgConfigPath)" && \
+	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
+	CC="$(CC) $(CPPOPTFLAGS)" CXX="$(CXX) $(CPPOPTFLAGS)" LD="$(LD)" LDXX="$(LD)" AR="$(AR) $(ARFLAGS)" RANLIB="$(RANLIB)" STRIP="$(STRIP)" V=1 \
+	INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
+	prefix=$(PackageResultPath) \
+	PROTOBUF_SRC_DIR="$(ProtobufSrcBuildDir)" \
+	PROTOC_PLUGINS_DIR="$(GrpcPluginHostResultPath)" \
+	install
+	$(Verbose)touch $@
+
+
+clean:
+	$(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory)
+
+include post.mak
diff --git a/grpc.patches/grpc-00.description b/grpc.patches/grpc-00.description
new file mode 100644
index 0000000..8209d6b
--- /dev/null
+++ b/grpc.patches/grpc-00.description
@@ -0,0 +1 @@
+Modify the gRPC Makefile for cross-compilation using pkg-config.  This may all have to change since the Macs don't have pkg-config installed.
diff --git a/grpc.patches/grpc-00.patch b/grpc.patches/grpc-00.patch
new file mode 100644
index 0000000..fbee3c5
--- /dev/null
+++ b/grpc.patches/grpc-00.patch
@@ -0,0 +1,238 @@
+diff -Naur a/Makefile b/Makefile
+--- a/Makefile	2017-03-02 10:19:16.000000000 -0800
++++ b/Makefile	2017-03-20 17:15:24.215639798 -0700
+@@ -258,6 +258,7 @@
+ prefix ?= /usr/local
+ 
+ PROTOC ?= protoc
++PROTOBUF_SRC_DIR ?= third_party/protobuf/src
+ DTRACE ?= dtrace
+ CONFIG ?= opt
+ # Doing X ?= Y is the same as:
+@@ -765,7 +766,7 @@
+ CPPFLAGS := -Ithird_party/googletest/include $(CPPFLAGS)
+ 
+ PROTOC_PLUGINS_ALL = $(BINDIR)/$(CONFIG)/grpc_cpp_plugin $(BINDIR)/$(CONFIG)/grpc_csharp_plugin $(BINDIR)/$(CONFIG)/grpc_node_plugin $(BINDIR)/$(CONFIG)/grpc_objective_c_plugin $(BINDIR)/$(CONFIG)/grpc_php_plugin $(BINDIR)/$(CONFIG)/grpc_python_plugin $(BINDIR)/$(CONFIG)/grpc_ruby_plugin
+-PROTOC_PLUGINS_DIR = $(BINDIR)/$(CONFIG)
++PROTOC_PLUGINS_DIR ?= $(BINDIR)/$(CONFIG)
+ 
+ ifeq ($(HAS_SYSTEM_PROTOBUF),true)
+ ifeq ($(HAS_PKG_CONFIG),true)
+@@ -778,6 +779,7 @@
+ LDFLAGS_PROTOBUF_PKG_CONFIG += $(shell $(PKG_CONFIG) --libs-only-L protobuf | sed s/L/Wl,-rpath,/)
+ endif
+ endif
++LDFLAGS += $(LDFLAGS_PROTOBUF_PKG_CONFIG)
+ else
+ PC_LIBS_GRPCXX = -lprotobuf
+ endif
+@@ -2087,12 +2089,12 @@
+ $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc: src/proto/grpc/lb/v1/load_balancer.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+ $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc: src/proto/grpc/lb/v1/load_balancer.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+ endif
+ 
+ ifeq ($(NO_PROTOC),true)
+@@ -2102,12 +2104,12 @@
+ $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc: src/proto/grpc/reflection/v1alpha/reflection.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+ $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc: src/proto/grpc/reflection/v1alpha/reflection.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+ endif
+ 
+ ifeq ($(NO_PROTOC),true)
+@@ -2117,12 +2119,12 @@
+ $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc: src/proto/grpc/testing/compiler_test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+ $(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc: src/proto/grpc/testing/compiler_test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+ endif
+ 
+ ifeq ($(NO_PROTOC),true)
+@@ -2132,12 +2134,12 @@
+ $(GENDIR)/src/proto/grpc/testing/control.pb.cc: src/proto/grpc/testing/control.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+ $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc: src/proto/grpc/testing/control.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+ endif
+ 
+ ifeq ($(NO_PROTOC),true)
+@@ -2147,12 +2149,12 @@
+ $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc: src/proto/grpc/testing/duplicate/echo_duplicate.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+ $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc: src/proto/grpc/testing/duplicate/echo_duplicate.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+ endif
+ 
+ ifeq ($(NO_PROTOC),true)
+@@ -2162,12 +2164,12 @@
+ $(GENDIR)/src/proto/grpc/testing/echo.pb.cc: src/proto/grpc/testing/echo.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+ $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc: src/proto/grpc/testing/echo.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+ endif
+ 
+ ifeq ($(NO_PROTOC),true)
+@@ -2177,12 +2179,12 @@
+ $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc: src/proto/grpc/testing/echo_messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+ $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc: src/proto/grpc/testing/echo_messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+ endif
+ 
+ ifeq ($(NO_PROTOC),true)
+@@ -2192,12 +2194,12 @@
+ $(GENDIR)/src/proto/grpc/testing/empty.pb.cc: src/proto/grpc/testing/empty.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+ $(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.cc: src/proto/grpc/testing/empty.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+ endif
+ 
+ ifeq ($(NO_PROTOC),true)
+@@ -2207,12 +2209,12 @@
+ $(GENDIR)/src/proto/grpc/testing/messages.pb.cc: src/proto/grpc/testing/messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+ $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc: src/proto/grpc/testing/messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+ endif
+ 
+ ifeq ($(NO_PROTOC),true)
+@@ -2222,12 +2224,12 @@
+ $(GENDIR)/src/proto/grpc/testing/metrics.pb.cc: src/proto/grpc/testing/metrics.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+ $(GENDIR)/src/proto/grpc/testing/metrics.grpc.pb.cc: src/proto/grpc/testing/metrics.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+ endif
+ 
+ ifeq ($(NO_PROTOC),true)
+@@ -2237,12 +2239,12 @@
+ $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc: src/proto/grpc/testing/payloads.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+ $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc: src/proto/grpc/testing/payloads.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+ endif
+ 
+ ifeq ($(NO_PROTOC),true)
+@@ -2252,12 +2254,12 @@
+ $(GENDIR)/src/proto/grpc/testing/services.pb.cc: src/proto/grpc/testing/services.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+ $(GENDIR)/src/proto/grpc/testing/services.grpc.pb.cc: src/proto/grpc/testing/services.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+ endif
+ 
+ ifeq ($(NO_PROTOC),true)
+@@ -2267,12 +2269,12 @@
+ $(GENDIR)/src/proto/grpc/testing/stats.pb.cc: src/proto/grpc/testing/stats.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+ $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc: src/proto/grpc/testing/stats.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+ endif
+ 
+ ifeq ($(NO_PROTOC),true)
+@@ -2282,12 +2284,12 @@
+ $(GENDIR)/src/proto/grpc/testing/test.pb.cc: src/proto/grpc/testing/test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/empty.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.pb.cc
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+ $(GENDIR)/src/proto/grpc/testing/test.grpc.pb.cc: src/proto/grpc/testing/test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/empty.pb.cc $(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+-	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
++	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+ endif
+ 
+ 
diff --git a/grpc.patches/grpc-01.description b/grpc.patches/grpc-01.description
new file mode 100644
index 0000000..13b0f4d
--- /dev/null
+++ b/grpc.patches/grpc-01.description
@@ -0,0 +1 @@
+Fix for parallel build problem.  The compilation of reflection.pb.cc cannot begin until BOTH reflection.pb.cc AND reflection.pb.h are created by protoc.  Modify the rules to ensure both the .pb.cc and .pb.h files have been created before beginning compilation.
diff --git a/grpc.patches/grpc-01.patch b/grpc.patches/grpc-01.patch
new file mode 100644
index 0000000..9eb3654
--- /dev/null
+++ b/grpc.patches/grpc-01.patch
@@ -0,0 +1,241 @@
+diff -Naur a/Makefile b/Makefile
+--- a/Makefile	2017-03-27 18:12:14.729024142 -0700
++++ b/Makefile	2017-03-27 18:06:41.545611811 -0700
+@@ -2086,12 +2086,14 @@
+ $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc: src/proto/grpc/lb/v1/load_balancer.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc: $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.h
++$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.h: src/proto/grpc/lb/v1/load_balancer.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc: src/proto/grpc/lb/v1/load_balancer.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc: $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.h $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.h
++$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.h: src/proto/grpc/lb/v1/load_balancer.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+@@ -2101,12 +2103,14 @@
+ $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc: src/proto/grpc/reflection/v1alpha/reflection.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc: $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.h
++$(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.h: src/proto/grpc/reflection/v1alpha/reflection.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc: src/proto/grpc/reflection/v1alpha/reflection.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc: $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.h $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.h
++$(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.h: src/proto/grpc/reflection/v1alpha/reflection.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+@@ -2116,12 +2120,14 @@
+ $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc: src/proto/grpc/testing/compiler_test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc: $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.h
++$(GENDIR)/src/proto/grpc/testing/compiler_test.pb.h: src/proto/grpc/testing/compiler_test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc: src/proto/grpc/testing/compiler_test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.h
++$(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.h: src/proto/grpc/testing/compiler_test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+@@ -2131,12 +2137,14 @@
+ $(GENDIR)/src/proto/grpc/testing/control.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/control.pb.cc: src/proto/grpc/testing/control.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc
++$(GENDIR)/src/proto/grpc/testing/control.pb.cc: $(GENDIR)/src/proto/grpc/testing/control.pb.h
++$(GENDIR)/src/proto/grpc/testing/control.pb.h: src/proto/grpc/testing/control.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc: src/proto/grpc/testing/control.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc
++$(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/control.pb.h
++$(GENDIR)/src/proto/grpc/testing/control.grpc.pb.h: src/proto/grpc/testing/control.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+@@ -2146,12 +2154,14 @@
+ $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc: src/proto/grpc/testing/duplicate/echo_duplicate.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc
++$(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc: $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.h
++$(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.h: src/proto/grpc/testing/duplicate/echo_duplicate.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc: src/proto/grpc/testing/duplicate/echo_duplicate.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc
++$(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.h
++$(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.h: src/proto/grpc/testing/duplicate/echo_duplicate.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+@@ -2161,12 +2171,14 @@
+ $(GENDIR)/src/proto/grpc/testing/echo.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/echo.pb.cc: src/proto/grpc/testing/echo.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc
++$(GENDIR)/src/proto/grpc/testing/echo.pb.cc: $(GENDIR)/src/proto/grpc/testing/echo.pb.h
++$(GENDIR)/src/proto/grpc/testing/echo.pb.h: src/proto/grpc/testing/echo.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc: src/proto/grpc/testing/echo.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc
++$(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/echo.pb.h
++$(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.h: src/proto/grpc/testing/echo.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+@@ -2176,12 +2188,14 @@
+ $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc: src/proto/grpc/testing/echo_messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc: $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.h
++$(GENDIR)/src/proto/grpc/testing/echo_messages.pb.h: src/proto/grpc/testing/echo_messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc: src/proto/grpc/testing/echo_messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.h
++$(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.h: src/proto/grpc/testing/echo_messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+@@ -2191,12 +2205,14 @@
+ $(GENDIR)/src/proto/grpc/testing/empty.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/empty.pb.cc: src/proto/grpc/testing/empty.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/testing/empty.pb.cc: $(GENDIR)/src/proto/grpc/testing/empty.pb.h
++$(GENDIR)/src/proto/grpc/testing/empty.pb.h: src/proto/grpc/testing/empty.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.cc: src/proto/grpc/testing/empty.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/empty.pb.h
++$(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.h: src/proto/grpc/testing/empty.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+@@ -2206,12 +2222,14 @@
+ $(GENDIR)/src/proto/grpc/testing/messages.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/messages.pb.cc: src/proto/grpc/testing/messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/testing/messages.pb.cc: $(GENDIR)/src/proto/grpc/testing/messages.pb.h
++$(GENDIR)/src/proto/grpc/testing/messages.pb.h: src/proto/grpc/testing/messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc: src/proto/grpc/testing/messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/messages.pb.h
++$(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.h: src/proto/grpc/testing/messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+@@ -2221,12 +2239,14 @@
+ $(GENDIR)/src/proto/grpc/testing/metrics.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/metrics.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/metrics.pb.cc: src/proto/grpc/testing/metrics.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/testing/metrics.pb.cc: $(GENDIR)/src/proto/grpc/testing/metrics.pb.h
++$(GENDIR)/src/proto/grpc/testing/metrics.pb.h: src/proto/grpc/testing/metrics.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/metrics.grpc.pb.cc: src/proto/grpc/testing/metrics.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/testing/metrics.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/metrics.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/metrics.pb.h
++$(GENDIR)/src/proto/grpc/testing/metrics.grpc.pb.h: src/proto/grpc/testing/metrics.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+@@ -2236,12 +2256,14 @@
+ $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/payloads.pb.cc: src/proto/grpc/testing/payloads.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/testing/payloads.pb.cc: $(GENDIR)/src/proto/grpc/testing/payloads.pb.h
++$(GENDIR)/src/proto/grpc/testing/payloads.pb.h: src/proto/grpc/testing/payloads.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc: src/proto/grpc/testing/payloads.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/payloads.pb.h
++$(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.h: src/proto/grpc/testing/payloads.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+@@ -2251,12 +2273,14 @@
+ $(GENDIR)/src/proto/grpc/testing/services.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/services.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/services.pb.cc: src/proto/grpc/testing/services.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc
++$(GENDIR)/src/proto/grpc/testing/services.pb.cc: $(GENDIR)/src/proto/grpc/testing/services.pb.h
++$(GENDIR)/src/proto/grpc/testing/services.pb.h: src/proto/grpc/testing/services.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/services.grpc.pb.cc: src/proto/grpc/testing/services.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc
++$(GENDIR)/src/proto/grpc/testing/services.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/services.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/services.pb.h
++$(GENDIR)/src/proto/grpc/testing/services.grpc.pb.h: src/proto/grpc/testing/services.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+@@ -2266,12 +2290,14 @@
+ $(GENDIR)/src/proto/grpc/testing/stats.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/stats.pb.cc: src/proto/grpc/testing/stats.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/testing/stats.pb.cc: $(GENDIR)/src/proto/grpc/testing/stats.pb.h
++$(GENDIR)/src/proto/grpc/testing/stats.pb.h: src/proto/grpc/testing/stats.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc: src/proto/grpc/testing/stats.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
++$(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/stats.pb.h
++$(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.h: src/proto/grpc/testing/stats.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
+@@ -2281,12 +2307,14 @@
+ $(GENDIR)/src/proto/grpc/testing/test.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/test.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/test.pb.cc: src/proto/grpc/testing/test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/empty.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.pb.cc
++$(GENDIR)/src/proto/grpc/testing/test.pb.cc: $(GENDIR)/src/proto/grpc/testing/test.pb.h
++$(GENDIR)/src/proto/grpc/testing/test.pb.h: src/proto/grpc/testing/test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/empty.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.pb.cc
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/test.grpc.pb.cc: src/proto/grpc/testing/test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/empty.pb.cc $(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc
++$(GENDIR)/src/proto/grpc/testing/test.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/test.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/test.pb.h
++$(GENDIR)/src/proto/grpc/testing/test.grpc.pb.h: src/proto/grpc/testing/test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/empty.pb.cc $(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
diff --git a/grpc.patches/grpc-02.description b/grpc.patches/grpc-02.description
new file mode 100644
index 0000000..e424d5a
--- /dev/null
+++ b/grpc.patches/grpc-02.description
@@ -0,0 +1 @@
+During parallel builds the C and CXX header installs collide trying to install the same file.  There are all kinds of duplicates between the C and CXX headers, so de-dupe them using sort, and only have one rule for installing headers.
diff --git a/grpc.patches/grpc-02.patch b/grpc.patches/grpc-02.patch
new file mode 100644
index 0000000..b97976a
--- /dev/null
+++ b/grpc.patches/grpc-02.patch
@@ -0,0 +1,46 @@
+diff -Naur a/Makefile b/Makefile
+--- a/Makefile	2017-04-04 16:02:23.257788221 -0700
++++ b/Makefile	2017-04-04 16:02:08.949636437 -0700
+@@ -2353,27 +2353,20 @@
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $<
+ 
+-install: install_c install_cxx install-plugins install-certs
++install: install_c install_cxx install-plugins install-certs install-headers
+ 
+-install_c: install-headers_c install-static_c install-shared_c
++install_c: install-static_c install-shared_c
+ 
+-install_cxx: install-headers_cxx install-static_cxx install-shared_cxx
++install_cxx: install-static_cxx install-shared_cxx
+ 
+ install_csharp: install-shared_csharp install_c
+ 
+ install_grpc_csharp_ext: install_csharp
+ 
+-install-headers: install-headers_c install-headers_cxx
+-
+-install-headers_c:
++install-headers:
+ 	$(E) "[INSTALL] Installing public C headers"
+-	$(Q) $(foreach h, $(PUBLIC_HEADERS_C), $(INSTALL) -d $(prefix)/$(dir $(h)) && ) exit 0 || exit 1
+-	$(Q) $(foreach h, $(PUBLIC_HEADERS_C), $(INSTALL) $(h) $(prefix)/$(h) && ) exit 0 || exit 1
+-
+-install-headers_cxx:
+-	$(E) "[INSTALL] Installing public C++ headers"
+-	$(Q) $(foreach h, $(PUBLIC_HEADERS_CXX), $(INSTALL) -d $(prefix)/$(dir $(h)) && ) exit 0 || exit 1
+-	$(Q) $(foreach h, $(PUBLIC_HEADERS_CXX), $(INSTALL) $(h) $(prefix)/$(h) && ) exit 0 || exit 1
++	$(Q) $(foreach h, $(sort $(PUBLIC_HEADERS_C) $(PUBLIC_HEADERS_CXX)), $(INSTALL) -d $(prefix)/$(dir $(h)) && ) exit 0 || exit 1
++	$(Q) $(foreach h, $(sort $(PUBLIC_HEADERS_C) $(PUBLIC_HEADERS_CXX)), $(INSTALL) $(h) $(prefix)/$(h) && ) exit 0 || exit 1
+ 
+ install-static: install-static_c install-static_cxx
+ 
+@@ -17799,7 +17792,7 @@
+ test/cpp/util/test_credentials_provider.cc: $(OPENSSL_DEP)
+ endif
+ 
+-.PHONY: all strip tools dep_error openssl_dep_error openssl_dep_message git_update stop buildtests buildtests_c buildtests_cxx test test_c test_cxx install install_c install_cxx install-headers install-headers_c install-headers_cxx install-shared install-shared_c install-shared_cxx install-static install-static_c install-static_cxx strip strip-shared strip-static strip_c strip-shared_c strip-static_c strip_cxx strip-shared_cxx strip-static_cxx dep_c dep_cxx bins_dep_c bins_dep_cxx clean
++.PHONY: all strip tools dep_error openssl_dep_error openssl_dep_message git_update stop buildtests buildtests_c buildtests_cxx test test_c test_cxx install install_c install_cxx install-headers install-shared install-shared_c install-shared_cxx install-static install-static_c install-static_cxx strip strip-shared strip-static strip_c strip-shared_c strip-static_c strip_cxx strip-shared_cxx strip-static_cxx dep_c dep_cxx bins_dep_c bins_dep_cxx clean
+ 
+ .PHONY: printvars
+ printvars:
diff --git a/grpc.patches/grpc-03.description b/grpc.patches/grpc-03.description
new file mode 100644
index 0000000..17b4db5
--- /dev/null
+++ b/grpc.patches/grpc-03.description
@@ -0,0 +1,4 @@
+Add empty recipes for .cc files generated by protoc.
+https://www.gnu.org/software/make/manual/html_node/Empty-Recipes.html
+
+Empty recipes can also be used to avoid errors for targets that will be created as a side-effect of another recipe: if the target does not exist the empty recipe ensures that make won’t complain that it doesn’t know how to build the target, and make will assume the target is out of date.
diff --git a/grpc.patches/grpc-03.patch b/grpc.patches/grpc-03.patch
new file mode 100644
index 0000000..67eed8b
--- /dev/null
+++ b/grpc.patches/grpc-03.patch
@@ -0,0 +1,228 @@
+diff -Naur a/Makefile b/Makefile
+--- a/Makefile	2017-04-05 22:06:53.132122532 -0700
++++ b/Makefile	2017-04-05 22:09:34.861752084 -0700
+@@ -2086,13 +2086,13 @@
+ $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc: $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.h
++$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc: $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.h ;
+ $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.h: src/proto/grpc/lb/v1/load_balancer.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc: $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.h $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.h
++$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc: $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.h $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.h ;
+ $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.h: src/proto/grpc/lb/v1/load_balancer.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+@@ -2103,13 +2103,13 @@
+ $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc: $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.h
++$(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc: $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.h ;
+ $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.h: src/proto/grpc/reflection/v1alpha/reflection.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc: $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.h $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.h
++$(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc: $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.h $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.h ;
+ $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.h: src/proto/grpc/reflection/v1alpha/reflection.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+@@ -2120,13 +2120,13 @@
+ $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc: $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.h
++$(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc: $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.h: src/proto/grpc/testing/compiler_test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.h
++$(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.h: src/proto/grpc/testing/compiler_test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+@@ -2137,13 +2137,13 @@
+ $(GENDIR)/src/proto/grpc/testing/control.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/control.pb.cc: $(GENDIR)/src/proto/grpc/testing/control.pb.h
++$(GENDIR)/src/proto/grpc/testing/control.pb.cc: $(GENDIR)/src/proto/grpc/testing/control.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/control.pb.h: src/proto/grpc/testing/control.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/control.pb.h
++$(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/control.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.h: src/proto/grpc/testing/control.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+@@ -2154,13 +2154,13 @@
+ $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc: $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.h
++$(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc: $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.h: src/proto/grpc/testing/duplicate/echo_duplicate.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.h
++$(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.h: src/proto/grpc/testing/duplicate/echo_duplicate.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+@@ -2171,13 +2171,13 @@
+ $(GENDIR)/src/proto/grpc/testing/echo.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/echo.pb.cc: $(GENDIR)/src/proto/grpc/testing/echo.pb.h
++$(GENDIR)/src/proto/grpc/testing/echo.pb.cc: $(GENDIR)/src/proto/grpc/testing/echo.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/echo.pb.h: src/proto/grpc/testing/echo.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/echo.pb.h
++$(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/echo.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.h: src/proto/grpc/testing/echo.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+@@ -2188,13 +2188,13 @@
+ $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc: $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.h
++$(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc: $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.h: src/proto/grpc/testing/echo_messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.h
++$(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.h: src/proto/grpc/testing/echo_messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+@@ -2205,13 +2205,13 @@
+ $(GENDIR)/src/proto/grpc/testing/empty.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/empty.pb.cc: $(GENDIR)/src/proto/grpc/testing/empty.pb.h
++$(GENDIR)/src/proto/grpc/testing/empty.pb.cc: $(GENDIR)/src/proto/grpc/testing/empty.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/empty.pb.h: src/proto/grpc/testing/empty.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/empty.pb.h
++$(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/empty.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.h: src/proto/grpc/testing/empty.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+@@ -2222,13 +2222,13 @@
+ $(GENDIR)/src/proto/grpc/testing/messages.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/messages.pb.cc: $(GENDIR)/src/proto/grpc/testing/messages.pb.h
++$(GENDIR)/src/proto/grpc/testing/messages.pb.cc: $(GENDIR)/src/proto/grpc/testing/messages.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/messages.pb.h: src/proto/grpc/testing/messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/messages.pb.h
++$(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/messages.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.h: src/proto/grpc/testing/messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+@@ -2239,13 +2239,13 @@
+ $(GENDIR)/src/proto/grpc/testing/metrics.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/metrics.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/metrics.pb.cc: $(GENDIR)/src/proto/grpc/testing/metrics.pb.h
++$(GENDIR)/src/proto/grpc/testing/metrics.pb.cc: $(GENDIR)/src/proto/grpc/testing/metrics.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/metrics.pb.h: src/proto/grpc/testing/metrics.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/metrics.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/metrics.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/metrics.pb.h
++$(GENDIR)/src/proto/grpc/testing/metrics.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/metrics.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/metrics.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/metrics.grpc.pb.h: src/proto/grpc/testing/metrics.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+@@ -2256,13 +2256,13 @@
+ $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/payloads.pb.cc: $(GENDIR)/src/proto/grpc/testing/payloads.pb.h
++$(GENDIR)/src/proto/grpc/testing/payloads.pb.cc: $(GENDIR)/src/proto/grpc/testing/payloads.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/payloads.pb.h: src/proto/grpc/testing/payloads.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/payloads.pb.h
++$(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/payloads.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.h: src/proto/grpc/testing/payloads.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+@@ -2273,13 +2273,13 @@
+ $(GENDIR)/src/proto/grpc/testing/services.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/services.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/services.pb.cc: $(GENDIR)/src/proto/grpc/testing/services.pb.h
+-$(GENDIR)/src/proto/grpc/testing/services.pb.h: src/proto/grpc/testing/services.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc
++$(GENDIR)/src/proto/grpc/testing/services.pb.cc: $(GENDIR)/src/proto/grpc/testing/services.pb.h ;
++$(GENDIR)/src/proto/grpc/testing/services.pb.h: src/proto/grpc/testing/services.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc ;
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/services.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/services.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/services.pb.h
++$(GENDIR)/src/proto/grpc/testing/services.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/services.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/services.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/services.grpc.pb.h: src/proto/grpc/testing/services.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+@@ -2290,13 +2290,13 @@
+ $(GENDIR)/src/proto/grpc/testing/stats.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/stats.pb.cc: $(GENDIR)/src/proto/grpc/testing/stats.pb.h
++$(GENDIR)/src/proto/grpc/testing/stats.pb.cc: $(GENDIR)/src/proto/grpc/testing/stats.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/stats.pb.h: src/proto/grpc/testing/stats.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/stats.pb.h
++$(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/stats.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.h: src/proto/grpc/testing/stats.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+@@ -2307,13 +2307,13 @@
+ $(GENDIR)/src/proto/grpc/testing/test.pb.cc: protoc_dep_error
+ $(GENDIR)/src/proto/grpc/testing/test.grpc.pb.cc: protoc_dep_error
+ else
+-$(GENDIR)/src/proto/grpc/testing/test.pb.cc: $(GENDIR)/src/proto/grpc/testing/test.pb.h
++$(GENDIR)/src/proto/grpc/testing/test.pb.cc: $(GENDIR)/src/proto/grpc/testing/test.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/test.pb.h: src/proto/grpc/testing/test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/empty.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.pb.cc
+ 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(PROTOC) -I$(PROTOBUF_SRC_DIR) -I. --cpp_out=$(GENDIR) $<
+ 
+-$(GENDIR)/src/proto/grpc/testing/test.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/test.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/test.pb.h
++$(GENDIR)/src/proto/grpc/testing/test.grpc.pb.cc: $(GENDIR)/src/proto/grpc/testing/test.grpc.pb.h $(GENDIR)/src/proto/grpc/testing/test.pb.h ;
+ $(GENDIR)/src/proto/grpc/testing/test.grpc.pb.h: src/proto/grpc/testing/test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/empty.pb.cc $(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc
+ 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+ 	$(Q) mkdir -p `dirname $@`
diff --git a/grpc.patches/grpc-04.description b/grpc.patches/grpc-04.description
new file mode 100644
index 0000000..744d3ea
--- /dev/null
+++ b/grpc.patches/grpc-04.description
@@ -0,0 +1 @@
+*.pb.o files were being placed in an annoying place.  This was clearly a bug by the original authors.  Clean this up.
diff --git a/grpc.patches/grpc-04.patch b/grpc.patches/grpc-04.patch
new file mode 100644
index 0000000..a23543a
--- /dev/null
+++ b/grpc.patches/grpc-04.patch
@@ -0,0 +1,39 @@
+diff -Naur a/Makefile b/Makefile
+--- a/Makefile	2017-04-21 18:58:48.202658782 -0700
++++ b/Makefile	2017-04-21 18:57:24.709810222 -0700
+@@ -2338,7 +2338,7 @@
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(CC) $(CPPFLAGS) $(CFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $<
+ 
+-$(OBJDIR)/$(CONFIG)/%.o : $(GENDIR)/%.pb.cc
++$(OBJDIR)/$(CONFIG)/gens/%.o : $(GENDIR)/%.cc
+ 	$(E) "[CXX]     Compiling $<"
+ 	$(Q) mkdir -p `dirname $@`
+ 	$(Q) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $<
+@@ -4419,7 +4419,7 @@
+ 
+ LIBGRPC++_PROTO_REFLECTION_DESC_DB_SRC = \
+     test/cpp/util/proto_reflection_descriptor_database.cc \
+-    $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc \
++    gens/src/proto/grpc/reflection/v1alpha/reflection.pb.cc gens/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc \
+ 
+ PUBLIC_HEADERS_CXX += \
+     include/grpc++/impl/codegen/config_protobuf.h \
+@@ -4472,7 +4472,7 @@
+ LIBGRPC++_REFLECTION_SRC = \
+     src/cpp/ext/proto_server_reflection.cc \
+     src/cpp/ext/proto_server_reflection_plugin.cc \
+-    $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc \
++    gens/src/proto/grpc/reflection/v1alpha/reflection.pb.cc gens/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc \
+ 
+ PUBLIC_HEADERS_CXX += \
+     include/grpc++/ext/proto_server_reflection_plugin.h \
+@@ -4936,7 +4936,7 @@
+     test/cpp/util/grpc_tool.cc \
+     test/cpp/util/proto_file_parser.cc \
+     test/cpp/util/service_describer.cc \
+-    $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc \
++    gens/src/proto/grpc/reflection/v1alpha/reflection.pb.cc gens/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc \
+ 
+ PUBLIC_HEADERS_CXX += \
+     include/grpc++/impl/codegen/config_protobuf.h \
diff --git a/grpc.tar.gz b/grpc.tar.gz
new file mode 100644
index 0000000..f6ece62
--- /dev/null
+++ b/grpc.tar.gz
Binary files differ
diff --git a/grpc.url b/grpc.url
new file mode 100644
index 0000000..559ad67
--- /dev/null
+++ b/grpc.url
@@ -0,0 +1 @@
+https://github.com/grpc/grpc/releases/tag/v1.1.4
diff --git a/grpc.version b/grpc.version
new file mode 100644
index 0000000..65087b4
--- /dev/null
+++ b/grpc.version
@@ -0,0 +1 @@
+1.1.4