tweaks to kythe indexing for Android Studio

-tool to generate vnames with googleplex-android corpus name
-uses root to map to the project name from manifest
-update vnames.json with that tool
-use tools/base/bazel/build_targets for targets to process
-add option to kythe build script to save entries to gcs
  this location will be used by code search to pick up data

Change-Id: I1627b221b7c4b146d1278d067abda8db329fec20
diff --git a/linux-x86_64/kythe/extractors/vnames.json b/linux-x86_64/kythe/extractors/vnames.json
index 6ce7576..f6eacdf 100644
--- a/linux-x86_64/kythe/extractors/vnames.json
+++ b/linux-x86_64/kythe/extractors/vnames.json
@@ -1,69 +1,825 @@
 [
   {
-    "pattern": "bazel-out/[^/]+/bin/([^/]+/javatests/.+/testdata)/.+\\.jar!/([^\\$]+)(\\$.+)?\\.class",
-    "vname": {
-      "corpus": "studio",
-      "path": "@1@/@2@.java"
+    "pattern":"tools/buildSrc/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/buildSrc"
     }
   },
   {
-    "pattern": "bazel-out/[^/]+/bin/(.*?/java|javatests)/.*\\.jar!/([^\\$]+)(\\$.+)?\\.class",
-    "vname": {
-      "corpus": "studio",
-      "path": "@1@/@2@.java"
+    "pattern":"external/ant-glob/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/external/ant-glob"
     }
   },
   {
-    "pattern": "bazel-out/[^/]+/bin/[^/]+/proto/.*\\.jar!/([^\\$]+)(\\$.+)?\\.class",
-    "vname": {
-      "corpus": "studio",
-      "root": "GENERATED/proto/java",
-      "path": "@1@.java"
+    "pattern":"external/boringssl/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/external/boringssl"
     }
   },
   {
-    "pattern": "bazel-out/[^/]+/bin/third_party/go/src/((.*)/[^/]+\\.a)",
-    "vname": {
-      "corpus": "@2@",
-      "path": "@1@"
+    "pattern":"external/emma/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/external/emma"
     }
   },
   {
-    "pattern": "(/kythe_builtins/include)/(.*)",
-    "vname": {
-      "corpus": "cstdlib",
-      "root": "@1@",
-      "path": "@2@"
+    "pattern":"external/gmock/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/external/gmock"
     }
   },
   {
-    "pattern": "([^/]+/java|javatests/[^\\$]+)(\\$.+)?\\.(class|java)",
-    "vname": {
-      "corpus": "studio",
-      "path": "@1@.java"
+    "pattern":"external/gtest/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/external/gtest"
     }
   },
   {
-    "pattern": "(/usr/include/c\\+\\+/[^/]+)/(.*)",
-    "vname": {
-      "corpus": "libstdcxx",
-      "root": "@1@",
-      "path": "@2@"
+    "pattern":"external/iosched/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/external/iosched"
     }
   },
   {
-    "pattern": "/usr/include/(.*)",
-    "vname": {
-      "corpus": "cstdlib",
-      "root": "/usr/include",
-      "path": "@1@"
+    "pattern":"external/AntennaPod/AntennaPod/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/external/AntennaPod/AntennaPod"
     }
   },
   {
-    "pattern": "(.*)",
-    "vname": {
-      "corpus": "studio",
-      "path": "@1@"
+    "pattern":"external/AntennaPod/AudioPlayer/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/external/AntennaPod/AudioPlayer"
+    }
+  },
+  {
+    "pattern":"external/AntennaPod/afollestad/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/external/AntennaPod/afollestad"
+    }
+  },
+  {
+    "pattern":"external/protobuf/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/external/protobuf"
+    }
+  },
+  {
+    "pattern":"external/nanopb-c/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/external/nanopb-c"
+    }
+  },
+  {
+    "pattern":"external/grpc-grpc/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/external/grpc-grpc"
+    }
+  },
+  {
+    "pattern":"external/smali/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/external/smali"
+    }
+  },
+  {
+    "pattern":"external/zlib/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/external/zlib"
+    }
+  },
+  {
+    "pattern":"tools/analytics-library/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/analytics-library"
+    }
+  },
+  {
+    "pattern":"tools/external/go/src/golang.org/x/net/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/external/go/src/golang.org/x/net"
+    }
+  },
+  {
+    "pattern":"tools/external/go/src/golang.org/x/tools/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/external/go/src/golang.org/x/tools"
+    }
+  },
+  {
+    "pattern":"tools/vendor/google3/aswb/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/vendor/google3/aswb"
+    }
+  },
+  {
+    "pattern":"frameworks/native/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/frameworks/native"
+    }
+  },
+  {
+    "pattern":"frameworks/base/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/frameworks/base"
+    }
+  },
+  {
+    "pattern":"prebuilts/clang/darwin-x86/host/3.5/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/clang/darwin-x86/host/3.5"
+    }
+  },
+  {
+    "pattern":"prebuilts/clang/darwin-x86/sdk/3.5/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/clang/darwin-x86/sdk/3.5"
+    }
+  },
+  {
+    "pattern":"prebuilts/clang/linux-x86/host/3.6/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/clang/linux-x86/host/3.6"
+    }
+  },
+  {
+    "pattern":"prebuilts/clang/host/linux-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/clang/host/linux-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/clang/host/darwin-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/clang/host/darwin-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/cmake/darwin-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/cmake/darwin-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/cmake/linux-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/cmake/linux-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/cmake/windows-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/cmake/windows-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/maven_repo/android/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/maven_repo/android"
+    }
+  },
+  {
+    "pattern":"prebuilts/fullsdk/darwin/build-tools/21-darwin/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/fullsdk/build-tools/21-darwin"
+    }
+  },
+  {
+    "pattern":"prebuilts/fullsdk/darwin/platforms/android-21/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/fullsdk/platforms/android-21"
+    }
+  },
+  {
+    "pattern":"prebuilts/fullsdk/linux/build-tools/21-linux/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/fullsdk/build-tools/21-linux"
+    }
+  },
+  {
+    "pattern":"prebuilts/fullsdk/linux/platforms/android-21/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/fullsdk/platforms/android-21"
+    }
+  },
+  {
+    "pattern":"prebuilts/sdk/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/sdk"
+    }
+  },
+  {
+    "pattern":"prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9"
+    }
+  },
+  {
+    "pattern":"prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9"
+    }
+  },
+  {
+    "pattern":"prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9"
+    }
+  },
+  {
+    "pattern":"prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9"
+    }
+  },
+  {
+    "pattern":"prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9"
+    }
+  },
+  {
+    "pattern":"prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9"
+    }
+  },
+  {
+    "pattern":"prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6"
+    }
+  },
+  {
+    "pattern":"prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8"
+    }
+  },
+  {
+    "pattern":"prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8"
+    }
+  },
+  {
+    "pattern":"prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8"
+    }
+  },
+  {
+    "pattern":"prebuilts/go/linux-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/go/linux-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/go/darwin-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/go/darwin-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/go/windows-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/go/windows-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/google-breakpad/darwin-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/google-breakpad/darwin-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/google-breakpad/linux-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/google-breakpad/linux-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/google-breakpad/windows-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/google-breakpad/windows-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/libedit/darwin-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/libedit/darwin-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/libedit/linux-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/libedit/linux-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/libglog/darwin-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/libglog/darwin-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/libglog/linux-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/libglog/linux-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/libglog/windows-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/libglog/windows-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/libprotobuf/darwin-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/libprotobuf/darwin-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/libprotobuf/linux-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/libprotobuf/linux-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/libprotobuf/windows-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/libprotobuf/windows-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/ndk/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/ndk"
+    }
+  },
+  {
+    "pattern":"prebuilts/ninja/darwin-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/ninja/darwin-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/ninja/linux-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/ninja/linux-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/ninja/windows-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/ninja/windows-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/python/linux-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/python/linux-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/python/windows-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/python/windows-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/studio/jdk/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/studio/jdk"
+    }
+  },
+  {
+    "pattern":"prebuilts/studio/layoutlib/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/studio/layoutlib"
+    }
+  },
+  {
+    "pattern":"prebuilts/swig/darwin-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/swig/darwin-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/swig/linux-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/swig/linux-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/swig/windows-x86/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/swig/windows-x86"
+    }
+  },
+  {
+    "pattern":"prebuilts/tools/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/prebuilts/tools"
+    }
+  },
+  {
+    "pattern":"sdk/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/sdk"
+    }
+  },
+  {
+    "pattern":"tools/adt/idea/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/adt/idea"
+    }
+  },
+  {
+    "pattern":"tools/base/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/base"
+    }
+  },
+  {
+    "pattern":"tools/data-binding/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/frameworks/data-binding"
+    }
+  },
+  {
+    "pattern":"tools/external/fat32lib/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/external/fat32lib"
+    }
+  },
+  {
+    "pattern":"tools/external/gradle/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/external/gradle"
+    }
+  },
+  {
+    "pattern":"tools/gpu/src/android.googlesource.com/platform/tools/gpu/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/gpu"
+    }
+  },
+  {
+    "pattern":"tools/gradle/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/gradle"
+    }
+  },
+  {
+    "pattern":"tools/idea/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/idea"
+    }
+  },
+  {
+    "pattern":"tools/sherpa/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/frameworks/opt/sherpa"
+    }
+  },
+  {
+    "pattern":"tools/studio/google/cloud/tools/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/studio/google/cloud/tools"
+    }
+  },
+  {
+    "pattern":"tools/studio/google/cloud/testing/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/studio/google/cloud/testing"
+    }
+  },
+  {
+    "pattern":"tools/studio/google/login/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/studio/google/login"
+    }
+  },
+  {
+    "pattern":"tools/studio/google/play/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/studio/google/play"
+    }
+  },
+  {
+    "pattern":"tools/studio/google/samples/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/studio/google/samples"
+    }
+  },
+  {
+    "pattern":"tools/studio/google/services/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/studio/google/services"
+    }
+  },
+  {
+    "pattern":"tools/studio/google/appindexing/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/studio/google/appindexing"
+    }
+  },
+  {
+    "pattern":"tools/swing-testing/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/swing-testing"
+    }
+  },
+  {
+    "pattern":"tools/swt/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/swt"
+    }
+  },
+  {
+    "pattern":"tools/vendor/galvsoft/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/vendor/galvsoft"
+    }
+  },
+  {
+    "pattern":"tools/vendor/google/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/vendor/google"
+    }
+  },
+  {
+    "pattern":"tools/vendor/google3/blaze/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/vendor/google3/blaze"
+    }
+  },
+  {
+    "pattern":"tools/vendor/intel/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/vendor/intel"
+    }
+  },
+  {
+    "pattern":"tools/vendor/intellij/cidr/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/vendor/intellij/cidr"
+    }
+  },
+  {
+    "pattern":"tools/vendor/microsoft/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/vendor/microsoft"
+    }
+  },
+  {
+    "pattern":"tools/vendor/adt_infra_internal/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/adt_infra_internal"
+    }
+  },
+  {
+    "pattern":"prebuilts/studio/sdk/darwin/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/vendor/google_prebuilts/studio/sdk/darwin"
+    }
+  },
+  {
+    "pattern":"prebuilts/studio/sdk/linux/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/vendor/google_prebuilts/studio/sdk/linux"
+    }
+  },
+  {
+    "pattern":"prebuilts/studio/sdk/windows/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/tools/vendor/google_prebuilts/studio/sdk/windows"
+    }
+  },
+  {
+    "pattern":"vendor/google/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"platform/vendor/google"
+    }
+  },
+  {
+    "pattern":"bazel-out/[^/]+/(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android",
+      "root":"GENERATED/studio/bazel"
+    }
+  },
+  {
+    "pattern":"(.*)",
+    "vname":{
+      "path":"@1@",
+      "corpus":"googleplex-android"
     }
   }
 ]
diff --git a/linux-x86_64/kythe/studio/build_studio_kythe.sh b/linux-x86_64/kythe/studio/build_studio_kythe.sh
index a328cf4..c9c5ff7 100755
--- a/linux-x86_64/kythe/studio/build_studio_kythe.sh
+++ b/linux-x86_64/kythe/studio/build_studio_kythe.sh
@@ -10,7 +10,7 @@
 # Get the output path for the kythe artifacts.
 OUT="$1"
 if [ -z "${OUT}" ]; then
-  echo Usage: $0 \<out_dir\>
+  echo Usage: $0 \<out_dir\> [gcs_bucket]
   echo  e.g. $0 $HOME/studio_kythe
   echo
   echo $0 must be launched from the root of the studio branch.
@@ -19,15 +19,7 @@
 OUT_ENTRIES="${OUT}/entries"
 mkdir -p "${OUT_ENTRIES}"
 
-#TODO: read from file
-TARGETS="//prebuilts/studio/... \
-  //prebuilts/tools/common/... \
-  //tools/adt/idea/... \
-  //tools/analytics-library/... \
-  //tools/base/... \
-  //tools/data-binding/... \
-  //tools/idea/... \
-  //tools/sherpa/..."
+TARGETS="$(cat tools/base/bazel/build_targets)"
 
 # Build all targets and run the kythe extractor via extra_actions.
 bazel build \
@@ -47,3 +39,9 @@
       "${KINDEX}" > "${ENTRIES}"
   fi
 done;
+
+GSBUCKET="$2"
+if [ -n "${GSBUCKET}" ]; then
+  TIMESTAMP=$(date +'%s')
+  gsutil -m cp "${OUT_ENTRIES}/*" "${GSBUCKET}/${TIMESTAMP}/"
+fi
\ No newline at end of file
diff --git a/linux-x86_64/kythe/studio/manifest2vname.py b/linux-x86_64/kythe/studio/manifest2vname.py
new file mode 100755
index 0000000..a238acb
--- /dev/null
+++ b/linux-x86_64/kythe/studio/manifest2vname.py
@@ -0,0 +1,65 @@
+#!/usr/bin/python
+
+#
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+"""Tool to generate vnames.json file for kythe from Android repo
+manifest. Needs to be run from repo root."""
+
+import xml.etree.ElementTree
+import json
+
+doc = xml.etree.ElementTree.parse('.repo/manifests/default.xml')
+manifest = doc.getroot()
+# fallback patterns to be added to tail of vnames.json
+tail = json.loads("""[
+  {
+    "pattern": "bazel-out/[^/]+/(.*)",
+    "vname": {
+      "corpus": "googleplex-android",
+      "root": "GENERATED/studio/bazel",
+      "path": "@1@"
+    }
+  },
+  {
+    "pattern": "(.*)",
+    "vname": {
+      "corpus": "googleplex-android",
+      "path": "@1@"
+    }
+  }
+]
+""")
+
+vnames = []
+# manifest xml contains <project path="" name=""> tags
+# we convert these into vname patterns that kythe understands.
+for project in manifest.findall('project'):
+    node = {}
+    node['pattern'] = "%s/(.*)" % project.get('path')
+    vname = {}
+    vname['corpus'] = 'googleplex-android'
+    vname['root'] = project.get('name')
+    vname['path'] = '@1@'
+    node['vname'] = vname
+    vnames.append(node);
+
+# add fallback vname patterns to end of json list.
+vnames.extend(tail)
+
+# print the json vnames list to stdout
+# can be used for debugging or pipe to vnames.json.
+print(json.dumps(vnames, indent=2, separators=(',', ':')))