Merge pull request #915 from pherl/master

add default_runtime attribute to cc|py rules.
diff --git a/BUILD b/BUILD
index 4f2bc28..f374e8a 100644
--- a/BUILD
+++ b/BUILD
@@ -154,9 +154,9 @@
     name = "cc_wkt_protos",
     srcs = WELL_KNOWN_PROTOS,
     include = "src",
-    cc_libs = [":protobuf"],
     internal_bootstrap_hack = 1,
     protoc = ":protoc",
+    default_runtime = ":protobuf",
 )
 
 ################################################################################
@@ -334,6 +334,7 @@
     srcs = LITE_TEST_PROTOS + TEST_PROTOS,
     include = "src",
     protoc = ":protoc",
+    default_runtime = ":protobuf",
     deps = [":cc_wkt_protos"],
 )
 
@@ -512,6 +513,7 @@
     protoc = ":protoc",
     py_extra_srcs = [":python_srcs"],
     py_libs = ["//external:six"],
+    default_runtime = "",
     visibility = ["//visibility:public"],
 )
 
@@ -532,6 +534,7 @@
     include = "src",
     protoc = ":protoc",
     deps = [":protobuf_python"],
+    default_runtime = "",
 )
 
 py_proto_library(
@@ -543,6 +546,7 @@
     include = "python",
     protoc = ":protoc",
     deps = [":python_common_test_protos"],
+    default_runtime = ":protobuf_python",
 )
 
 py_library(
diff --git a/protobuf.bzl b/protobuf.bzl
index 0e2d44f..e8bc455 100644
--- a/protobuf.bzl
+++ b/protobuf.bzl
@@ -101,6 +101,7 @@
         include=None,
         protoc="//google/protobuf:protoc",
         internal_bootstrap_hack=False,
+        default_runtime="//google/protobuf:protobuf",
         **kargs):
   """Bazel rule to create a C++ protobuf library from proto source files
 
@@ -116,6 +117,8 @@
         for bootstraping. When it is set to True, no files will be generated.
         The rule will simply be a provider for .proto files, so that other
         cc_proto_library can depend on it.
+    default_runtime: the implicitly default runtime which will be depended on by
+        the generated cc_library target.
     **kargs: other keyword arguments that are passed to cc_library.
 
   """
@@ -151,6 +154,8 @@
       outs=outs,
   )
 
+  if default_runtime and not default_runtime in cc_libs:
+    cc_libs += [default_runtime]
 
   native.cc_library(
       name=name,
@@ -197,6 +202,7 @@
         py_libs=[],
         py_extra_srcs=[],
         include=None,
+        default_runtime="//google/protobuf:protobuf_python",
         protoc="//google/protobuf:protoc",
         **kargs):
   """Bazel rule to create a Python protobuf library from proto source files
@@ -210,6 +216,8 @@
     py_extra_srcs: extra source files that will be added to the output
         py_library. This attribute is used for internal bootstrapping.
     include: a string indicating the include path of the .proto files.
+    default_runtime: the implicitly default runtime which will be depended on by
+        the generated py_library target.
     protoc: the label of the protocol compiler to generate the sources.
     **kargs: other keyword arguments that are passed to cc_library.
 
@@ -239,6 +247,9 @@
         include=include)
     outs=[internal_copied_filegroup_name]
 
+  if default_runtime and not default_runtime in py_libs + deps:
+    py_libs += [default_runtime]
+
   native.py_library(
       name=name,
       srcs=outs+py_extra_srcs,