Merge "Merge branch 'remotes/upstream/vulkan-cts-1.0.2' into master"
diff --git a/fuchsia/BUILD.gn b/fuchsia/BUILD.gn
index 264571e..410024b 100644
--- a/fuchsia/BUILD.gn
+++ b/fuchsia/BUILD.gn
@@ -5,6 +5,12 @@
 action("build") {
   script = "build.sh"
   args = [ rebase_path(root_out_dir) ]
+  deps = [
+    "//third_party/vulkan_loader_and_validation_layers:vulkan",
+    "//garnet/public/sdk:zircon_sysroot",
+  ]
+
+  depfile = "$root_out_dir/build-vulkancts/vulkan-cts.d"
   outputs = [ "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk" ]
 }
 
diff --git a/fuchsia/build.sh b/fuchsia/build.sh
index c4b1c4d..159b631 100755
--- a/fuchsia/build.sh
+++ b/fuchsia/build.sh
@@ -37,6 +37,7 @@
 export FUCHSIA_LIB_DIR=$fuchsia_lib_path
 
 mkdir -p $build_dir
+$fuchsia_root/third_party/vulkan-cts/fuchsia/gendepsfile.py $build_dir/vulkan-cts.d $fuchsia_root/third_party/vulkan-cts
 pushd $build_dir
 cmake $fuchsia_root/third_party/vulkan-cts -GNinja  -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=$tools_path/ninja -DFUCHSIA_SYSROOT=$sysroot -DCMAKE_TOOLCHAIN_FILE=$fuchsia_root/build/Fuchsia.cmake -DDE_OS=DE_OS_FUCHSIA -DDEQP_TARGET=fuchsia $extra_args
 $tools_path/ninja
diff --git a/fuchsia/gen.py b/fuchsia/gen.py
index c39ba9b..f06cb69 100644
--- a/fuchsia/gen.py
+++ b/fuchsia/gen.py
@@ -7,34 +7,42 @@
 
 out_file = open("BUILD.gn", "w")
 
-out_file.write('### NOTE: This file auto-generated from gen.py\n')
-out_file.write('\n')
-out_file.write('import("//build/package.gni")\n')
-out_file.write('\n')
-out_file.write('action("build") {\n')
-out_file.write('  script = "build.sh"\n')
-out_file.write('  args = [ rebase_path(root_out_dir) ]\n')
-out_file.write('  outputs = [ "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk" ]\n')
-out_file.write('}\n')
-out_file.write('\n')
-out_file.write('copy("copy") {\n')
-out_file.write('  sources = [ "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk" ]\n')
-out_file.write('  outputs = [ "$root_build_dir/deqp-vk" ]\n')
-out_file.write('  deps = [ ":build" ]\n')
-out_file.write('}\n')
-out_file.write('\n')
-out_file.write('package("vulkan-cts") {\n')
-out_file.write('  deps = [ ":copy" ]\n')
-out_file.write('  binary = "deqp-vk"\n')
-out_file.write('  meta = [ {\n')
-out_file.write('    path = rebase_path("meta/sandbox")\n')
-out_file.write('    dest = "sandbox"\n')
-out_file.write('  } ]\n')
-out_file.write('  resources = [\n')
-out_file.write('  {\n')
-out_file.write('    path=rebase_path("../external/vulkancts/mustpass/1.0.2/vk-default.txt")\n')
-out_file.write('    dest="vk-default.txt"\n')
-out_file.write('  },\n')
+out_file.write("""\
+### NOTE: This file auto-generated from gen.py
+
+import("//build/package.gni")
+
+action("build") {
+  script = "build.sh"
+  args = [ rebase_path(root_out_dir) ]
+  deps = [
+    "//third_party/vulkan_loader_and_validation_layers:vulkan",
+    "//garnet/public/sdk:zircon_sysroot",
+  ]
+
+  depfile = "$root_out_dir/build-vulkancts/vulkan-cts.d"
+  outputs = [ "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk" ]
+}
+
+copy("copy") {
+  sources = [ "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk" ]
+  outputs = [ "$root_build_dir/deqp-vk" ]
+  deps = [ ":build" ]
+}
+
+package("vulkan-cts") {
+  deps = [ ":copy" ]
+  binary = "deqp-vk"
+  meta = [ {
+    path = rebase_path("meta/sandbox")
+    dest = "sandbox"
+  } ]
+  resources = [
+  {
+    path=rebase_path("../external/vulkancts/mustpass/1.0.2/vk-default.txt")
+    dest="vk-default.txt"
+  },
+""")
 
 files = subprocess.check_output(["find", "../external/vulkancts/data/vulkan", "-type", "f"])
 file_lines = files.splitlines()
diff --git a/fuchsia/gendepsfile.py b/fuchsia/gendepsfile.py
new file mode 100755
index 0000000..3b069cf
--- /dev/null
+++ b/fuchsia/gendepsfile.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import argparse
+import os
+import subprocess
+import sys
+import pipes
+
+
+def main():
+  parser = argparse.ArgumentParser("Generate vulkan cts dep file")
+  parser.add_argument("depsfile")
+  parser.add_argument("input_dir")
+  args = parser.parse_args()
+
+  files = subprocess.check_output([
+      "find", args.input_dir, "-path", "*/.git", "-prune", "-o", "-type", "f",
+      "-print"
+  ])
+  file_lines = files.splitlines()
+
+  with open(args.depsfile, "w") as depsfile:
+    depsfile.write("build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk: ")
+    depsfile.write(" ".join(x.replace(' ', '\\ ') for x in file_lines))
+  return 0
+
+
+if __name__ == "__main__":
+  sys.exit(main())