Merge remote-tracking branch 'khronos-public/master' into 160811b-merge-master-to-android_layers

Update build-android/build.py and build-android/jni/Android.mk
to adjust for new shaderc build infrastructure.
Now pull shaderc from aosp to stay in sync with NDK builds.
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
 }