build: Update GN build for offline codegen

Remove generated targets and update source paths for generated files

Change-Id: Ic696178619c926c975c89e41f901a7dcc99d8c8c
diff --git a/BUILD.gn b/BUILD.gn
index 03413b7..7acacb4 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -19,15 +19,6 @@
 # to build it from upstream sources.
 assert(!is_fuchsia)
 
-vulkan_registry_script_files = [
-  "$vulkan_headers_dir/registry/cgenerator.py",
-  "$vulkan_headers_dir/registry/conventions.py",
-  "$vulkan_headers_dir/registry/generator.py",
-  "$vulkan_headers_dir/registry/reg.py",
-  "$vulkan_headers_dir/registry/vkconventions.py",
-  "$vulkan_headers_dir/registry/vk.xml",
-]
-
 vulkan_undefine_configs = []
 if (is_win) {
   vulkan_undefine_configs += [
@@ -36,8 +27,6 @@
   ]
 }
 
-raw_vulkan_headers_dir = rebase_path("$vulkan_headers_dir", root_build_dir)
-
 vulkan_gen_dir = "$target_gen_dir/$vulkan_gen_subdir"
 raw_vulkan_gen_dir = rebase_path(vulkan_gen_dir, root_build_dir)
 
@@ -46,139 +35,6 @@
 
 raw_root_out_dir = rebase_path(root_out_dir, root_build_dir)
 
-# Vulkan helper scripts
-# ---------------------
-
-helper_script_and_deps = [
-  [
-    "vulkan_gen_dispatch_table_helper_h",
-    "vk_dispatch_table_helper.h",
-    "dispatch_table_helper_generator.py",
-  ],
-  [
-    "vulkan_gen_enum_string_helper",
-    "vk_enum_string_helper.h",
-    "helper_file_generator.py",
-  ],
-  [
-    "vulkan_gen_extension_helper",
-    "vk_extension_helper.h",
-    "helper_file_generator.py",
-  ],
-  [
-    "vulkan_gen_layer_dispatch_table_h",
-    "vk_layer_dispatch_table.h",
-    "layer_dispatch_table_generator.py",
-  ],
-  [
-    "vulkan_gen_object_types_h",
-    "vk_object_types.h",
-    "helper_file_generator.py",
-  ],
-  [
-    "vulkan_gen_safe_struct_cpp",
-    "vk_safe_struct.cpp",
-    "helper_file_generator.py",
-  ],
-  [
-    "vulkan_gen_safe_struct_h",
-    "vk_safe_struct.h",
-    "helper_file_generator.py",
-  ],
-  [
-    "vulkan_gen_thread_safety_h",
-    "thread_safety.h",
-    "thread_safety_generator.py",
-  ],
-  [
-    "vulkan_gen_thread_safety_cpp",
-    "thread_safety.cpp",
-    "thread_safety_generator.py",
-  ],
-  [
-    "vulkan_gen_typemap_helper",
-    "vk_typemap_helper.h",
-    "helper_file_generator.py",
-  ],
-  [
-    "vulkan_gen_object_tracker_h",
-    "object_tracker.h",
-    "object_tracker_generator.py",
-  ],
-  [
-    "vulkan_gen_object_tracker_cpp",
-    "object_tracker.cpp",
-    "object_tracker_generator.py",
-  ],
-  [
-    "vulkan_gen_parameter_validation_cpp",
-    "parameter_validation.cpp",
-    "parameter_validation_generator.py",
-  ],
-  [
-    "vulkan_gen_parameter_validation_h",
-    "parameter_validation.h",
-    "parameter_validation_generator.py",
-  ],
-  [
-    "vulkan_gen_layer_chassis_h",
-    "chassis.h",
-    "layer_chassis_generator.py",
-  ],
-  [
-    "vulkan_gen_layer_chassis_cpp",
-    "chassis.cpp",
-    "layer_chassis_generator.py",
-  ],
-  [
-    "vulkan_gen_layer_chassis_dispatch_h",
-    "layer_chassis_dispatch.h",
-    "layer_chassis_dispatch_generator.py",
-  ],
-  [
-    "vulkan_gen_layer_chassis_dispatch_cpp",
-    "layer_chassis_dispatch.cpp",
-    "layer_chassis_dispatch_generator.py",
-  ],
-]
-
-# Python scripts needed for codegen, copy them to a temp dir
-# so that all dependencies are together
-copy("python_gen_deps") {
-  sources = vulkan_registry_script_files + [
-              "scripts/common_codegen.py",
-              "scripts/dispatch_table_helper_generator.py",
-              "scripts/helper_file_generator.py",
-              "scripts/layer_dispatch_table_generator.py",
-              "scripts/lvl_genvk.py",
-              "scripts/object_tracker_generator.py",
-              "scripts/parameter_validation_generator.py",
-              "scripts/thread_safety_generator.py",
-              "scripts/layer_chassis_generator.py",
-              "scripts/layer_chassis_dispatch_generator.py",
-            ]
-  outputs = [
-    "$vulkan_gen_dir/{{source_file_part}}",
-  ]
-}
-
-# This special action is needed to remove previously-generated header files.
-# Otherwise the cpp files can pick up the old header files and cause build
-# failures.
-action("vulkan_clean_gen_headers") {
-  script = "build-gn/remove_files.py"
-  deps = [
-    ":python_gen_deps",
-  ]
-  outputs = [
-    "$vulkan_gen_dir/vk_validation_error_messages_h_is_removed",
-  ]
-  args = [
-    "$raw_vulkan_gen_dir/vk_validation_error_messages_h_is_removed",
-    "$raw_vulkan_gen_dir/vk_validation_error_messages.h",
-  ]
-}
-
 # This special action is needed to remove old VVL objects that are now renamed.
 action("vulkan_clean_old_validation_layer_objects") {
   script = "build-gn/remove_files.py"
@@ -198,90 +54,6 @@
   ]
 }
 
-foreach(script_and_dep, helper_script_and_deps) {
-  target_name = script_and_dep[0]
-  file = script_and_dep[1]
-  dep = script_and_dep[2]
-  target("action", target_name) {
-    public_deps = [
-      ":python_gen_deps",
-      ":vulkan_clean_gen_headers",
-      ":vulkan_clean_old_validation_layer_objects",
-    ]
-    script = "$vulkan_gen_dir/lvl_genvk.py"
-    inputs = [
-      "$vulkan_gen_dir/$dep",
-      "$vulkan_gen_dir/common_codegen.py",
-      "layers/vk_validation_error_messages.h",
-    ]
-    outputs = [
-      "$vulkan_gen_dir/$file",
-    ]
-    args = [
-      "-o",
-      raw_vulkan_gen_dir,
-      "-registry",
-      "$raw_vulkan_headers_dir/registry/vk.xml",
-      "-scripts",
-      "$raw_vulkan_headers_dir/registry",
-      "$file",
-      "-quiet",
-    ]
-  }
-}
-
-raw_spirv_tools_dir = rebase_path("${vvl_spirv_tools_dir}", root_build_dir)
-
-spirv_git_is_present = exec_script("build-gn/commit_id.py",
-                                   [
-                                     "check",
-                                     raw_spirv_tools_dir,
-                                   ],
-                                   "value")
-
-# This could be generalized to a foreach if other revisions are added.
-action("spirv_tools_external_revision_generate") {
-  script = "scripts/external_revision_generator.py"
-  public_deps = [
-    "${vvl_spirv_tools_dir}:spvtools",
-    "${vvl_spirv_tools_dir}:spvtools_opt",
-    "${vvl_spirv_tools_dir}:spvtools_val",
-  ]
-  outputs = [
-    "$vulkan_gen_dir/spirv_tools_commit_id.h",
-  ]
-  args = [
-    "-s",
-    "SPIRV_TOOLS_COMMIT_ID",
-    "-o",
-    "$raw_vulkan_gen_dir/spirv_tools_commit_id.h",
-  ]
-  if (spirv_git_is_present == 1) {
-    args += [
-      "--git_dir",
-      "$raw_spirv_tools_dir",
-    ]
-  } else {
-    args += [ "--from_uuid" ]
-  }
-}
-
-config("vulkan_generated_files_config") {
-  include_dirs = [ vulkan_gen_dir ]
-}
-
-group("vulkan_generate_helper_files") {
-  public_deps = [
-    ":spirv_tools_external_revision_generate",
-    "$vulkan_headers_dir:vulkan_headers",
-  ]
-  public_configs = [ ":vulkan_generated_files_config" ]
-  foreach(script_and_dep, helper_script_and_deps) {
-    target_name = script_and_dep[0]
-    public_deps += [ ":$target_name" ]
-  }
-}
-
 config("vulkan_internal_config") {
   defines = [
     "VULKAN_NON_CMAKE_BUILD",
@@ -303,13 +75,16 @@
 # ---------------------
 
 config("vulkan_layer_config") {
-  include_dirs = [ "layers" ]
+  include_dirs = [
+    "layers",
+    "layers/generated",
+  ]
 }
 
 core_validation_sources = [
   # This file is manually included in the layer
-  # "$vulkan_gen_dir/vk_safe_struct.cpp",
-  "$vulkan_gen_dir/vk_safe_struct.h",
+  # "layers/generated/vk_safe_struct.cpp",
+  "layers/generated/vk_safe_struct.h",
   "layers/buffer_validation.cpp",
   "layers/buffer_validation.h",
   "layers/core_validation.cpp",
@@ -327,83 +102,60 @@
 ]
 
 object_lifetimes_sources = [
-  "$vulkan_gen_dir/object_tracker.cpp",
-  "$vulkan_gen_dir/object_tracker.h",
+  "layers/generated/object_tracker.cpp",
+  "layers/generated/object_tracker.h",
   "layers/object_tracker_utils.cpp",
 ]
 
 stateless_validation_sources = [
-  "$vulkan_gen_dir/parameter_validation.cpp",
-  "$vulkan_gen_dir/parameter_validation.h",
+  "layers/generated/parameter_validation.cpp",
+  "layers/generated/parameter_validation.h",
   "layers/parameter_validation_utils.cpp",
 ]
 
 thread_safety_sources = [
-  "$vulkan_gen_dir/thread_safety.cpp",
-  "$vulkan_gen_dir/thread_safety.h",
+  "layers/generated/thread_safety.cpp",
+  "layers/generated/thread_safety.h",
 ]
 
 unique_objects_sources = []
 
 chassis_sources = [
-  "$vulkan_gen_dir/chassis.cpp",
-  "$vulkan_gen_dir/chassis.h",
-  "$vulkan_gen_dir/layer_chassis_dispatch.cpp",
-  "$vulkan_gen_dir/layer_chassis_dispatch.h",
-]
-
-core_validation_deps = [ ":vulkan_core_validation_glslang" ]
-
-object_lifetimes_deps = [
-  ":vulkan_gen_object_tracker_cpp",
-  ":vulkan_gen_object_tracker_h",
-]
-
-stateless_validation_deps = [ ":vulkan_gen_stateless_validation" ]
-
-thread_safety_deps = [
-  ":vulkan_gen_thread_safety_cpp",
-  ":vulkan_gen_thread_safety_h",
-]
-
-unique_objects_deps = []
-
-chassis_deps = [
-  ":vulkan_gen_layer_chassis_cpp",
-  ":vulkan_gen_layer_chassis_h",
-  ":vulkan_gen_layer_chassis_dispatch_cpp",
-  ":vulkan_gen_layer_chassis_dispatch_h",
+  "layers/generated/chassis.cpp",
+  "layers/generated/chassis.h",
+  "layers/generated/layer_chassis_dispatch.cpp",
+  "layers/generated/layer_chassis_dispatch.h",
 ]
 
 layers = [
   [
     "core_validation",
     core_validation_sources + chassis_sources,
-    core_validation_deps + chassis_deps,
+    [ ":vulkan_core_validation_glslang" ],
     [ "BUILD_CORE_VALIDATION" ],
   ],
   [
     "object_lifetimes",
     object_lifetimes_sources + chassis_sources,
-    object_lifetimes_deps + chassis_deps,
+    [],
     [ "BUILD_OBJECT_TRACKER" ],
   ],
   [
     "stateless_validation",
     stateless_validation_sources + chassis_sources,
-    stateless_validation_deps + chassis_deps,
+    [],
     [ "BUILD_PARAMETER_VALIDATION" ],
   ],
   [
     "thread_safety",
     thread_safety_sources + chassis_sources,
-    thread_safety_deps + chassis_deps,
+    [],
     [ "BUILD_THREAD_SAFETY" ],
   ],
   [
     "unique_objects",
     unique_objects_sources + chassis_sources,
-    unique_objects_deps + chassis_deps,
+    [],
     [ "LAYER_CHASSIS_CAN_WRAP_HANDLES" ],
   ],
   [
@@ -411,8 +163,7 @@
     core_validation_sources + object_lifetimes_sources +
         stateless_validation_sources + thread_safety_sources +
         unique_objects_sources + chassis_sources,
-    core_validation_deps + object_lifetimes_deps + stateless_validation_deps +
-        thread_safety_deps + unique_objects_deps + chassis_deps,
+    [ ":vulkan_core_validation_glslang" ],
     [
       "BUILD_KHRONOS_VALIDATION",
       "BUILD_CORE_VALIDATION",
@@ -458,7 +209,10 @@
 }
 
 source_set("vulkan_layer_utils") {
-  include_dirs = [ "layers" ]
+  include_dirs = [
+    "layers",
+    "layers/generated",
+  ]
   sources = [
     "layers/vk_format_utils.cpp",
     "layers/vk_format_utils.h",
@@ -475,9 +229,7 @@
   ]
   configs -= [ "//build/config/compiler:chromium_code" ]
   configs += [ "//build/config/compiler:no_chromium_code" ]
-  public_deps = [
-    ":vulkan_generate_helper_files",
-  ]
+  public_deps = []
   configs -= vulkan_undefine_configs
 }
 
@@ -503,14 +255,6 @@
   }
 }
 
-source_set("vulkan_gen_stateless_validation") {
-  deps = [
-    ":vulkan_gen_parameter_validation_cpp",
-    ":vulkan_gen_parameter_validation_h",
-  ]
-  public_configs = [ ":vulkan_stateless_validation_config" ]
-}
-
 foreach(layer_info, layers) {
   name = layer_info[0]
   shared_library("VkLayer_$name") {