Made building the python extension configurable via --define=use_fast_cpp_protos=true
diff --git a/BUILD b/BUILD
index c04a7c0..b85bd56 100644
--- a/BUILD
+++ b/BUILD
@@ -513,11 +513,14 @@
     name = "google/protobuf/internal/_api_implementation.so",
     srcs = ["python/google/protobuf/internal/api_implementation.cc"],
     copts = COPTS + [
-        "-I/usr/include/python2.7",
         "-DPYTHON_PROTO2_CPP_IMPL_V2",
     ],
     linkshared = 1,
     linkstatic = 1,
+    deps = select({
+        "//conditions:default": [],
+        ":use_fast_cpp_protos": ["//util/python:python_headers"],
+    }),
 )
 
 cc_binary(
@@ -528,7 +531,6 @@
     ]),
     copts = COPTS + [
         "-DGOOGLE_PROTOBUF_HAS_ONEOF=1",
-        "-I/usr/include/python2.7",
     ],
     includes = [
         "python/",
@@ -536,17 +538,32 @@
     ],
     linkshared = 1,
     linkstatic = 1,
-    deps = [":protobuf"],
+    deps = [
+        ":protobuf",
+    ] + select({
+        "//conditions:default": [],
+        ":use_fast_cpp_protos": ["//util/python:python_headers"],
+    }),
+)
+
+config_setting(
+    name = "use_fast_cpp_protos",
+    values = {
+        "define": "use_fast_cpp_protos=true",
+    },
 )
 
 py_proto_library(
     name = "protobuf_python",
     srcs = WELL_KNOWN_PROTOS,
     include = "src",
-    data = [
-        ":google/protobuf/internal/_api_implementation.so",
-        ":google/protobuf/pyext/_message.so",
-    ],
+    data = select({
+        "//conditions:default": [],
+        ":use_fast_cpp_protos": [
+            ":google/protobuf/internal/_api_implementation.so",
+            ":google/protobuf/pyext/_message.so",
+        ],
+    }),
     default_runtime = "",
     protoc = ":protoc",
     py_extra_srcs = [":python_srcs"],