Splitting gmock out of gtest.
diff --git a/WORKSPACE b/WORKSPACE
index 82ea99f..bfb3a8c 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -39,6 +39,11 @@
 )
 
 bind(
+    name = "gmock",
+    actual = "@submodule_gtest//:gmock",
+)
+
+bind(
     name = "benchmark",
     actual = "@submodule_benchmark//:benchmark",
 )
diff --git a/test/cpp/end2end/BUILD b/test/cpp/end2end/BUILD
index b8505c1..b29a13d 100644
--- a/test/cpp/end2end/BUILD
+++ b/test/cpp/end2end/BUILD
@@ -193,6 +193,7 @@
         "//test/cpp/util:test_util",
     ],
     external_deps = [
+        "gmock",
         "gtest",
     ],
 )
@@ -235,6 +236,7 @@
         "//test/cpp/util:test_util",
     ],
     external_deps = [
+        "gmock",
         "gtest",
     ],
 )
diff --git a/third_party/gtest.BUILD b/third_party/gtest.BUILD
index b70f2c5..f38bfd8 100644
--- a/third_party/gtest.BUILD
+++ b/third_party/gtest.BUILD
@@ -2,14 +2,38 @@
     name = "gtest",
     srcs = [
         "googletest/src/gtest-all.cc",
-	"googlemock/src/gmock-all.cc"
     ],
-    hdrs = glob(["googletest/include/**/*.h", "googletest/src/*.cc", "googletest/src/*.h", "googlemock/include/**/*.h", "googlemock/src/*.cc", "googlemock/src/*.h"]),
+    hdrs = glob([
+        "googletest/include/**/*.h",
+        "googletest/src/*.cc",
+        "googletest/src/*.h",
+    ]),
     includes = [
         "googletest",
         "googletest/include",
-	"googlemock",
-	"googlemock/include",
+    ],
+    linkstatic = 1,
+    visibility = [
+        "//visibility:public",
+    ],
+)
+
+cc_library(
+    name = "gmock",
+    srcs = [
+        "googlemock/src/gmock-all.cc"
+    ],
+    hdrs = glob([
+        "googlemock/include/**/*.h",
+        "googlemock/src/*.cc",
+        "googlemock/src/*.h"
+    ]),
+    includes = [
+        "googlemock",
+        "googlemock/include",
+    ],
+    deps = [
+        ":gtest",
     ],
     linkstatic = 1,
     visibility = [