diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Android.mk
diff --git a/build-android/build.py b/build-android/build.py
new file mode 100755
index 0000000..ed55b62
--- /dev/null
+++ b/build-android/build.py
@@ -0,0 +1,337 @@
+#!/usr/bin/env 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.
+#
+
+import argparse
+import multiprocessing
+import os
+import subprocess
+import sys
+import shutil
+
+from subprocess import PIPE, STDOUT
+
+def install_file(file_name, src_dir, dst_dir):
+    src_file = os.path.join(src_dir, file_name)
+    dst_file = os.path.join(dst_dir, file_name)
+
+    print('Copying {} to {}...'.format(src_file, dst_file))
+    if os.path.isdir(src_file):
+        _install_dir(src_file, dst_file)
+    elif os.path.islink(src_file):
+        _install_symlink(src_file, dst_file)
+    else:
+        _install_file(src_file, dst_file)
+
+
+def _install_dir(src_dir, dst_dir):
+    parent_dir = os.path.normpath(os.path.join(dst_dir, '..'))
+    if not os.path.exists(parent_dir):
+        os.makedirs(parent_dir)
+    shutil.copytree(src_dir, dst_dir, symlinks=True)
+
+
+def _install_symlink(src_file, dst_file):
+    dirname = os.path.dirname(dst_file)
+    if not os.path.exists(dirname):
+        os.makedirs(dirname)
+    link_target = os.readlink(src_file)
+    os.symlink(link_target, dst_file)
+
+
+def _install_file(src_file, dst_file):
+    dirname = os.path.dirname(dst_file)
+    if not os.path.exists(dirname):
+        os.makedirs(dirname)
+    # copy2 is just copy followed by copystat (preserves file metadata).
+    shutil.copy2(src_file, dst_file)
+
+THIS_DIR = os.path.realpath(os.path.dirname(__file__))
+
+ALL_ARCHITECTURES = (
+  'arm',
+  'arm64',
+  'mips',
+  'mips64',
+  'x86',
+  'x86_64',
+)
+
+# According to vk_platform.h, armeabi is not supported for Vulkan
+# so remove it from the abis list.
+ALL_ABIS = (
+  'armeabi-v7a',
+  'arm64-v8a',
+  'mips',
+  'mips64',
+  'x86',
+  'x86_64',
+)
+
+def jobs_arg():
+  return '-j{}'.format(multiprocessing.cpu_count() * 2)
+
+def arch_to_abis(arch):
+  return {
+    'arm': ['armeabi-v7a'],
+    'arm64': ['arm64-v8a'],
+    'mips': ['mips'],
+    'mips64': ['mips64'],
+    'x86': ['x86'],
+    'x86_64': ['x86_64'],
+  }[arch]
+
+class ArgParser(argparse.ArgumentParser):
+  def __init__(self):
+    super(ArgParser, self).__init__()
+
+    self.add_argument(
+      '--out-dir', help='Directory to place temporary build files.',
+      type=os.path.realpath, default=os.path.join(THIS_DIR, 'out'))
+
+    self.add_argument(
+      '--arch', choices=ALL_ARCHITECTURES,
+      help='Architectures to build. Builds all if not present.')
+
+    self.add_argument('--installdir', dest='installdir', required=True,
+      help='Installation directory. Required.')
+
+    # The default for --dist-dir has to be handled after parsing all
+    # arguments because the default is derived from --out-dir. This is
+    # handled in run().
+    self.add_argument(
+      '--dist-dir', help='Directory to place the packaged artifact.',
+      type=os.path.realpath)
+
+
+def main():
+  print('THIS_DIR: %s' % THIS_DIR)
+  parser = ArgParser()
+  args = parser.parse_args()
+
+  arches = ALL_ARCHITECTURES
+  if args.arch is not None:
+    arches = [args.arch]
+
+  # ensure directory exists.
+  if not os.path.isdir(args.installdir):
+    os.makedirs(args.installdir)
+
+  # Make paths absolute, and ensure directories exist.
+  installdir = os.path.abspath(args.installdir)
+
+  abis = []
+  for arch in arches:
+    abis.extend(arch_to_abis(arch))
+
+  shaderc_path = installdir + '/shaderc/android_test'
+  print('shaderc_path = %s' % shaderc_path)
+
+  if os.path.isdir('/buildbot/android-ndk'):
+    ndk_dir = '/buildbot/android-ndk'
+  elif os.path.isdir(os.environ['NDK_PATH']):
+    ndk_dir = os.environ['NDK_PATH'];
+  else:
+    print('Error: No NDK environment found')
+    return
+
+  ndk_build = os.path.join(ndk_dir, 'ndk-build')
+  platforms_root = os.path.join(ndk_dir, 'platforms')
+  toolchains_root = os.path.join(ndk_dir, 'toolchains')
+  build_dir = THIS_DIR
+
+  print('installdir: %s' % installdir)
+  print('ndk_dir: %s' % ndk_dir)
+  print('ndk_build: %s' % ndk_build)
+  print('platforms_root: %s' % platforms_root)
+
+  compiler = 'clang'
+  stl = 'gnustl_static'
+  obj_out = os.path.join(THIS_DIR, stl, 'obj')
+  lib_out = os.path.join(THIS_DIR, 'jniLibs')
+
+  print('obj_out: %s' % obj_out)
+  print('lib_out: %s' % lib_out)
+
+  print('Constructing shaderc build tree...')
+  shaderc_root_dir = os.path.join(THIS_DIR, '../../shaderc')
+
+  copies = [
+      {
+          'source_dir': os.path.join(shaderc_root_dir, 'shaderc'),
+          'dest_dir': 'shaderc',
+          'files': [
+              'Android.mk', 'libshaderc/Android.mk',
+              'libshaderc_util/Android.mk',
+              'third_party/Android.mk',
+              'utils/update_build_version.py',
+              'CHANGES',
+          ],
+          'dirs': [
+              'libshaderc/include', 'libshaderc/src',
+              'libshaderc_util/include', 'libshaderc_util/src',
+              'android_test'
+          ],
+      },
+      {
+          'source_dir': os.path.join(shaderc_root_dir, 'spirv-tools'),
+          'dest_dir': 'shaderc/third_party/spirv-tools',
+          'files': [
+              'utils/generate_grammar_tables.py',
+              'utils/update_build_version.py',
+              'CHANGES',
+          ],
+          'dirs': ['include', 'source'],
+      },
+      {
+          'source_dir': os.path.join(shaderc_root_dir, 'spirv-headers'),
+          'dest_dir':
+              'shaderc/third_party/spirv-tools/external/spirv-headers',
+          'dirs': ['include',],
+          'files': [
+              'include/spirv/1.0/spirv.py',
+              'include/spirv/1.1/spirv.py'
+          ],
+      },
+      {
+          'source_dir': os.path.join(shaderc_root_dir, 'glslang'),
+          'dest_dir': 'shaderc/third_party/glslang',
+          'files': ['glslang/OSDependent/osinclude.h'],
+          'dirs': [
+              'SPIRV',
+              'OGLCompilersDLL',
+              'glslang/GenericCodeGen',
+              'hlsl',
+              'glslang/Include',
+              'glslang/MachineIndependent',
+              'glslang/OSDependent/Unix',
+              'glslang/Public',
+          ],
+      },
+  ]
+
+  default_ignore_patterns = shutil.ignore_patterns(
+      "*CMakeLists.txt",
+      "*.py",
+      "*test.h",
+      "*test.cc")
+
+  for properties in copies:
+      source_dir = properties['source_dir']
+      dest_dir = os.path.join(installdir, properties['dest_dir'])
+      for d in properties['dirs']:
+          src = os.path.join(source_dir, d)
+          dst = os.path.join(dest_dir, d)
+          print(src, " -> ", dst)
+          shutil.copytree(src, dst,
+                          ignore=default_ignore_patterns)
+      for f in properties['files']:
+          print(source_dir, ':', dest_dir, ":", f)
+          # Only copy if the source file exists.  That way
+          # we can update this script in anticipation of
+          # source files yet-to-come.
+          if os.path.exists(os.path.join(source_dir, f)):
+              install_file(f, source_dir, dest_dir)
+          else:
+              print(source_dir, ':', dest_dir, ":", f, "SKIPPED")
+
+  print('Building shader toolchain...')
+  build_cmd = [
+    'bash', ndk_build, '-C', shaderc_path,
+    jobs_arg(),
+    'APP_ABI=' + ' '.join(abis),
+    # Use the prebuilt platforms and toolchains.
+    'NDK_PLATFORMS_ROOT=' + platforms_root,
+    'NDK_TOOLCHAINS_ROOT=' + toolchains_root,
+    'GNUSTL_PREFIX=',
+
+    # Tell ndk-build where all of our makefiles are and where outputs
+    # should go. The defaults in ndk-build are only valid if we have a
+    # typical ndk-build layout with a jni/{Android,Application}.mk.
+    'NDK_PROJECT_PATH=null',
+    'NDK_TOOLCHAIN_VERSION=' + compiler,
+    'APP_BUILD_SCRIPT=' + os.path.join(shaderc_path, 'jni', 'Android.mk'),
+    'APP_STL=' + stl,
+    'NDK_APPLICATION_MK=' + os.path.join(shaderc_path, 'jni', 'Application.mk'),
+    'NDK_OUT=' + os.path.join(shaderc_path, 'obj'),
+    'NDK_LIBS_OUT=' + os.path.join(shaderc_path, 'jniLibs'),
+    'THIRD_PARTY_PATH=../third_party',
+
+    # Put armeabi-v7a-hard in its own directory.
+    '_NDK_TESTING_ALL_=yes'
+  ]
+  print(' '.join(build_cmd))
+
+  subprocess.check_call(build_cmd)
+  print('Finished shader toolchain build')
+
+  print('Constructing Vulkan validation layer source...')
+
+  build_cmd = [
+    'bash', THIS_DIR + '/android-generate.sh'
+  ]
+  print('Generating generated layers...')
+  subprocess.check_call(build_cmd)
+  print('Generation finished')
+
+
+  build_cmd = [
+    'bash', ndk_build, '-C', build_dir,
+    jobs_arg(),
+    'APP_ABI=' + ' '.join(abis),
+    # Use the prebuilt platforms and toolchains.
+    'NDK_PLATFORMS_ROOT=' + platforms_root,
+    'NDK_TOOLCHAINS_ROOT=' + toolchains_root,
+    'GNUSTL_PREFIX=',
+
+    # Tell ndk-build where all of our makefiles are and where outputs
+    # should go. The defaults in ndk-build are only valid if we have a
+    # typical ndk-build layout with a jni/{Android,Application}.mk.
+    'NDK_PROJECT_PATH=null',
+    'NDK_TOOLCHAIN_VERSION=' + compiler,
+    'APP_BUILD_SCRIPT=' + os.path.join(build_dir, 'jni', 'Android.mk'),
+    'APP_STL=' + stl,
+    'NDK_APPLICATION_MK=' + os.path.join(build_dir, 'jni', 'Application.mk'),
+    'NDK_OUT=' + obj_out,
+    'NDK_LIBS_OUT=' + lib_out,
+    'THIRD_PARTY_PATH=',
+    'SHADERC_OBJ_PATH=' + shaderc_path + '/obj',
+    'EXTERNAL_INCLUDE_PATH=' + installdir + '/shaderc',
+
+    # Put armeabi-v7a-hard in its own directory.
+    '_NDK_TESTING_ALL_=yes'
+  ]
+
+  print('Building Vulkan validation layers for ABIs:' +
+    ' {}'.format(', '.join(abis)))
+  print(' '.join(build_cmd))
+
+  subprocess.check_call(build_cmd)
+
+  print('Finished building Vulkan validation layers')
+  out_package = os.path.join(installdir, 'vulkan_validation_layers.zip')
+  os.chdir(lib_out)
+  build_cmd = [
+      'zip', '-9qr', out_package, "."
+  ]
+
+  print('Packaging Vulkan validation layers')
+  subprocess.check_call(build_cmd)
+  print('Finished Packaging Vulkan validation layers')
+
+
+if __name__ == '__main__':
+  main()
diff --git a/build-android/glslang_revision_android b/build-android/glslang_revision_android
index 024f942..1f7391f 100644
--- a/build-android/glslang_revision_android
+++ b/build-android/glslang_revision_android
@@ -1 +1 @@
-1176530bf59096923b09e297cc304a337a915939
+master
diff --git a/build-android/jni/Android.mk b/build-android/jni/Android.mk
index d88fe55..7c51a6b 100644
--- a/build-android/jni/Android.mk
+++ b/build-android/jni/Android.mk
@@ -17,6 +17,11 @@
 SRC_DIR := $(LOCAL_PATH)/../../
 LAYER_DIR := $(LOCAL_PATH)/../generated
 
+# specific for NDK build
+SHADERC_DIR := $(SRC_DIR)../shaderc
+GLSLANG_DIR := $(SHADERC_DIR)/glslang
+SPIRV_TOOLS_DIR := $(SHADERC_DIR)/spirv-tools
+
 include $(CLEAR_VARS)
 LOCAL_MODULE := layer_utils
 LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_config.cpp
@@ -29,6 +34,11 @@
 include $(BUILD_STATIC_LIBRARY)
 
 include $(CLEAR_VARS)
+ifdef EXTERNAL_INCLUDE_PATH
+    EXTERNAL_INCLUDE := $(EXTERNAL_INCLUDE_PATH)/third_party
+else
+    EXTERNAL_INCLUDE := $(SRC_DIR)/external
+endif
 LOCAL_MODULE := VkLayer_core_validation
 LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/core_validation/core_validation.cpp
 LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/core_validation/descriptor_sets.cpp
@@ -38,8 +48,8 @@
                     $(SRC_DIR)/layers \
                     $(LAYER_DIR)/include \
                     $(SRC_DIR)/loader \
-                    $(SRC_DIR)/external/glslang \
-                    $(SRC_DIR)/external/spirv-tools/include
+                    $(EXTERNAL_INCLUDE)/glslang \
+                    $(EXTERNAL_INCLUDE)/spirv-tools/include
 LOCAL_STATIC_LIBRARIES += layer_utils SPIRV-Tools-prebuilt
 LOCAL_CPPFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR
 LOCAL_LDLIBS    := -llog
@@ -126,46 +136,91 @@
 
 # Pull in prebuilt shaderc
 include $(CLEAR_VARS)
+ifdef SHADERC_OBJ_PATH
+    SHADERC_OBJ_PATH := $(SHADERC_OBJ_PATH)
+else
+    SHADERC_OBJ_PATH := $(SRC_DIR)/external/shaderc/android_test/obj
+endif
 LOCAL_MODULE := shaderc-prebuilt
-LOCAL_SRC_FILES := $(SRC_DIR)/external/shaderc/android_test/obj/local/$(TARGET_ARCH_ABI)/libshaderc.a
+LOCAL_SRC_FILES := $(SHADERC_OBJ_PATH)/local/$(TARGET_ARCH_ABI)/libshaderc.a
 include $(PREBUILT_STATIC_LIBRARY)
 
 include $(CLEAR_VARS)
+ifdef SHADERC_OBJ_PATH
+    SHADERC_OBJ_PATH := $(SHADERC_OBJ_PATH)
+else
+    SHADERC_OBJ_PATH := $(SRC_DIR)/external/shaderc/android_test/obj
+endif
 LOCAL_MODULE := glslang-prebuilt
-LOCAL_SRC_FILES := $(SRC_DIR)/external/shaderc/android_test/obj/local/$(TARGET_ARCH_ABI)/libglslang.a
+LOCAL_SRC_FILES := $(SHADERC_OBJ_PATH)/local/$(TARGET_ARCH_ABI)/libglslang.a
 include $(PREBUILT_STATIC_LIBRARY)
 
 include $(CLEAR_VARS)
+ifdef SHADERC_OBJ_PATH
+    SHADERC_OBJ_PATH := $(SHADERC_OBJ_PATH)
+else
+    SHADERC_OBJ_PATH := $(SRC_DIR)/external/shaderc/android_test/obj
+endif
 LOCAL_MODULE := OGLCompiler-prebuilt
-LOCAL_SRC_FILES := $(SRC_DIR)/external/shaderc/android_test/obj/local/$(TARGET_ARCH_ABI)/libOGLCompiler.a
+LOCAL_SRC_FILES := $(SHADERC_OBJ_PATH)/local/$(TARGET_ARCH_ABI)/libOGLCompiler.a
 include $(PREBUILT_STATIC_LIBRARY)
 
 include $(CLEAR_VARS)
+ifdef SHADERC_OBJ_PATH
+    SHADERC_OBJ_PATH := $(SHADERC_OBJ_PATH)
+else
+    SHADERC_OBJ_PATH := $(SRC_DIR)/external/shaderc/android_test/obj
+endif
 LOCAL_MODULE := OSDependent-prebuilt
-LOCAL_SRC_FILES := $(SRC_DIR)/external/shaderc/android_test/obj/local/$(TARGET_ARCH_ABI)/libOSDependent.a
+LOCAL_SRC_FILES := $(SHADERC_OBJ_PATH)/local/$(TARGET_ARCH_ABI)/libOSDependent.a
 include $(PREBUILT_STATIC_LIBRARY)
 
 include $(CLEAR_VARS)
+ifdef SHADERC_OBJ_PATH
+    SHADERC_OBJ_PATH := $(SHADERC_OBJ_PATH)
+else
+    SHADERC_OBJ_PATH := $(SRC_DIR)/external/shaderc/android_test/obj
+endif
 LOCAL_MODULE := HLSL-prebuilt
-LOCAL_SRC_FILES := $(SRC_DIR)/external/shaderc/android_test/obj/local/$(TARGET_ARCH_ABI)/libHLSL.a
+LOCAL_SRC_FILES := $(SHADERC_OBJ_PATH)/local/$(TARGET_ARCH_ABI)/libHLSL.a
 include $(PREBUILT_STATIC_LIBRARY)
 
 include $(CLEAR_VARS)
+ifdef SHADERC_OBJ_PATH
+    SHADERC_OBJ_PATH := $(SHADERC_OBJ_PATH)
+else
+    SHADERC_OBJ_PATH := $(SRC_DIR)/external/shaderc/android_test/obj
+endif
 LOCAL_MODULE := shaderc_util-prebuilt
-LOCAL_SRC_FILES := $(SRC_DIR)/external/shaderc/android_test/obj/local/$(TARGET_ARCH_ABI)/libshaderc_util.a
+LOCAL_SRC_FILES := $(SHADERC_OBJ_PATH)/local/$(TARGET_ARCH_ABI)/libshaderc_util.a
 include $(PREBUILT_STATIC_LIBRARY)
 
 include $(CLEAR_VARS)
+ifdef SHADERC_OBJ_PATH
+    SHADERC_OBJ_PATH := $(SHADERC_OBJ_PATH)
+else
+    SHADERC_OBJ_PATH := $(SRC_DIR)/external/shaderc/android_test/obj
+endif
 LOCAL_MODULE := SPIRV-prebuilt
-LOCAL_SRC_FILES := $(SRC_DIR)/external/shaderc/android_test/obj/local/$(TARGET_ARCH_ABI)/libSPIRV.a
+LOCAL_SRC_FILES := $(SHADERC_OBJ_PATH)/local/$(TARGET_ARCH_ABI)/libSPIRV.a
 include $(PREBUILT_STATIC_LIBRARY)
 
 include $(CLEAR_VARS)
+ifdef SHADERC_OBJ_PATH
+    SHADERC_OBJ_PATH := $(SHADERC_OBJ_PATH)
+else
+    SHADERC_OBJ_PATH := $(SRC_DIR)/external/shaderc/android_test/obj
+endif
 LOCAL_MODULE := SPIRV-Tools-prebuilt
-LOCAL_SRC_FILES := $(SRC_DIR)/external/shaderc/android_test/obj/local/$(TARGET_ARCH_ABI)/libSPIRV-Tools.a
+LOCAL_SRC_FILES := $(SHADERC_OBJ_PATH)/local/$(TARGET_ARCH_ABI)/libSPIRV-Tools.a
 include $(PREBUILT_STATIC_LIBRARY)
 
 include $(CLEAR_VARS)
+ifdef EXTERNAL_INCLUDE_PATH
+    EXTERNAL_INCLUDE := $(EXTERNAL_INCLUDE_PATH)
+else
+    EXTERNAL_INCLUDE := $(SRC_DIR)/external/shaderc
+endif
 LOCAL_MODULE := VkLayerValidationTests
 LOCAL_SRC_FILES += $(SRC_DIR)/tests/layer_validation_tests.cpp \
                    $(SRC_DIR)/tests/vktestbinding.cpp \
@@ -177,7 +232,7 @@
                     $(SRC_DIR)/libs \
                     $(SRC_DIR)/common \
                     $(SRC_DIR)/icd/common \
-                    $(SRC_DIR)/external/shaderc/libshaderc/include
+                    $(EXTERNAL_INCLUDE)/libshaderc/include
 
 LOCAL_STATIC_LIBRARIES := googletest_main layer_utils
 LOCAL_SHARED_LIBRARIES += shaderc-prebuilt glslang-prebuilt OGLCompiler-prebuilt OSDependent-prebuilt HLSL-prebuilt shaderc_util-prebuilt SPIRV-prebuilt SPIRV-Tools-prebuilt
@@ -187,6 +242,11 @@
 
 # Note: The following module is similar in name to the executable, but differs so that loader won't enumerate the resulting .so
 include $(CLEAR_VARS)
+ifdef EXTERNAL_INCLUDE_PATH
+    EXTERNAL_INCLUDE := $(EXTERNAL_INCLUDE_PATH)
+else
+    EXTERNAL_INCLUDE := $(SRC_DIR)/external/shaderc
+endif
 LOCAL_MODULE := VulkanLayerValidationTests
 LOCAL_SRC_FILES += $(SRC_DIR)/tests/layer_validation_tests.cpp \
                    $(SRC_DIR)/tests/vktestbinding.cpp \
@@ -198,7 +258,7 @@
                     $(SRC_DIR)/libs \
                     $(SRC_DIR)/common \
                     $(SRC_DIR)/icd/common \
-                    $(SRC_DIR)/external/shaderc/libshaderc/include
+                    $(EXTERNAL_INCLUDE)/libshaderc/include
 
 LOCAL_STATIC_LIBRARIES := googletest_main layer_utils
 LOCAL_SHARED_LIBRARIES += shaderc-prebuilt glslang-prebuilt OGLCompiler-prebuilt OSDependent-prebuilt HLSL-prebuilt shaderc_util-prebuilt SPIRV-prebuilt SPIRV-Tools-prebuilt
diff --git a/build-android/shaderc_revision_android b/build-android/shaderc_revision_android
index 0c161a0..1f7391f 100644
--- a/build-android/shaderc_revision_android
+++ b/build-android/shaderc_revision_android
@@ -1 +1 @@
-c63df792b2d535734cd0d1e6111de7ca29dcb555
+master
diff --git a/build-android/spirv-headers_revision_android b/build-android/spirv-headers_revision_android
index 74846cc..1f7391f 100644
--- a/build-android/spirv-headers_revision_android
+++ b/build-android/spirv-headers_revision_android
@@ -1 +1 @@
-3814effb879ab5a98a7b9288a4b4c7849d2bc8ac
+master
diff --git a/build-android/spirv-tools_revision_android b/build-android/spirv-tools_revision_android
index 2ce5d17..1f7391f 100644
--- a/build-android/spirv-tools_revision_android
+++ b/build-android/spirv-tools_revision_android
@@ -1 +1 @@
-e7a9e007384db16bc39dae01fadf4b73e754ab7e
+master
diff --git a/build-android/update_external_sources_android.sh b/build-android/update_external_sources_android.sh
index ba5153c..f525086 100755
--- a/build-android/update_external_sources_android.sh
+++ b/build-android/update_external_sources_android.sh
@@ -36,7 +36,7 @@
    echo "Creating local glslang repository ($BASEDIR/glslang)."
    mkdir -p $BASEDIR/glslang
    cd $BASEDIR/glslang
-   git clone https://github.com/KhronosGroup/glslang.git .
+   git clone persistent-https://android.git.corp.google.com/platform/external/shaderc/glslang .
    git checkout $GLSLANG_REVISION
 }
 
@@ -52,7 +52,7 @@
    echo "Creating local spirv-tools repository ($BASEDIR/spirv-tools)."
    mkdir -p $BASEDIR/spirv-tools
    cd $BASEDIR/spirv-tools
-   git clone https://github.com/KhronosGroup/SPIRV-Tools.git .
+   git clone persistent-https://android.git.corp.google.com/platform/external/shaderc/spirv-tools .
    git checkout $SPIRV_TOOLS_REVISION
 }
 
@@ -68,7 +68,7 @@
    echo "Creating local spirv-headers repository ($BASEDIR/spirv-tools/external/spirv-headers)."
    mkdir -p $BASEDIR/spirv-tools/external/spirv-headers
    cd $BASEDIR/spirv-tools/external/spirv-headers
-   git clone https://github.com/KhronosGroup/SPIRV-Headers.git .
+   git clone persistent-https://android.git.corp.google.com/platform/external/shaderc/spirv-headers .
    git checkout $SPIRV_HEADERS_REVISION
 }
 
@@ -83,7 +83,7 @@
    rm -rf $BASEDIR/shaderc
    echo "Creating local shaderc repository ($BASEDIR/shaderc)."
    cd $BASEDIR
-   git clone https://github.com/google/shaderc.git
+   git clone persistent-https://android.git.corp.google.com/platform/external/shaderc/shaderc
    cd shaderc
    git checkout $SHADERC_REVISION
 }
