| 
					
				 | 
			
			
				@@ -1,3 +1,39 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Copyright 2015, Google Inc. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# All rights reserved. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Redistribution and use in source and binary forms, with or without 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# modification, are permitted provided that the following conditions are 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# met: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#     * Redistributions of source code must retain the above copyright 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# notice, this list of conditions and the following disclaimer. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#     * Redistributions in binary form must reproduce the above 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# copyright notice, this list of conditions and the following disclaimer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# in the documentation and/or other materials provided with the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# distribution. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#     * Neither the name of Google Inc. nor the names of its 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# contributors may be used to endorse or promote products derived from 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# this software without specific prior written permission. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Bazel macros to declare gRPC libraries automatically generated from proto files. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+This file declares two macros: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+- objc_proto_library 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+- objc_grpc_library 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 def _lower_underscore_to_upper_camel(str): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   humps = [] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -16,6 +52,9 @@ def _file_with_extension(src, ext): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return "".join(elements[:-1] + [basename, ext]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 def _protoc_invocation(srcs, flags): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Returns a command line to invoke protoc from a genrule, on the given 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  sources, using the given flags. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   protoc_command = "$(location //external:protoc) -I . " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   srcs_params = "" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   for src in srcs: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -23,6 +62,9 @@ def _protoc_invocation(srcs, flags): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return protoc_command + flags + srcs_params 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 def objc_proto_library(name, srcs, visibility=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Declares an objc_library for the code generated by protoc from the given 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  proto sources. This generated code doesn't include proto services. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   h_files = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   m_files = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   for src in srcs: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -48,6 +90,10 @@ def objc_proto_library(name, srcs, visibility=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 def objc_grpc_library(name, services, other_messages, visibility=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Declares an objc_library for the code generated by gRPC and protoc from the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  given proto sources (services and other_messages). The generated code doesn't 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  include proto services of the files passed as other_messages. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   objc_proto_library(name + "_messages", services + other_messages) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   h_files = [] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -57,7 +103,8 @@ def objc_grpc_library(name, services, other_messages, visibility=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     h_files += [_file_with_extension(src, ".pbrpc.h")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     m_files += [_file_with_extension(src, ".pbrpc.m")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  protoc_flags = "--grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(location //external:grpc_protoc_plugin_objc)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  protoc_flags = ("--grpc_out=$(GENDIR) --plugin=" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      "protoc-gen-grpc=$(location //external:grpc_protoc_plugin_objc)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   native.genrule( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     name = name + "_codegen", 
			 |