diff --git a/BUILD.gn b/BUILD.gn
index c6cc155..46bb075 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -15,15 +15,6 @@
 
 import("//build_overrides/vulkan_tools.gni")
 
-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-tools isn't ported to Fuchsia yet.
 # TODO(spang): Port mock ICD to Fuchsia.
 assert(!is_fuchsia)
@@ -37,93 +28,10 @@
 }
 
 raw_vulkan_icd_dir = rebase_path("icd", root_build_dir)
-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)
 
 vulkan_data_dir = "$root_out_dir/$vulkan_data_subdir"
 raw_vulkan_data_dir = rebase_path(vulkan_data_dir, root_build_dir)
 
-# Vulkan helper scripts
-# ---------------------
-
-helper_script_and_deps = [
-  [
-    "vulkan_gen_typemap_helper",
-    "vk_typemap_helper.h",
-    "vulkan_tools_helper_file_generator.py",
-  ],
-  [
-    "vulkan_mock_icd_cpp",
-    "mock_icd.cpp",
-    "mock_icd_generator.py",
-  ],
-  [
-    "vulkan_mock_icd_h",
-    "mock_icd.h",
-    "mock_icd_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/kvt_genvk.py",
-              "scripts/mock_icd_generator.py",
-              "scripts/vulkan_tools_helper_file_generator.py",
-            ]
-  outputs = [
-    "$vulkan_gen_dir/{{source_file_part}}",
-  ]
-}
-
-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",
-    ]
-    script = "$vulkan_gen_dir/kvt_genvk.py"
-    inputs = [
-      "$vulkan_gen_dir/$dep",
-      "$vulkan_gen_dir/common_codegen.py",
-    ]
-    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",
-    ]
-  }
-}
-
-config("vulkan_generated_files_config") {
-  include_dirs = [ vulkan_gen_dir ]
-}
-
-group("vulkan_generate_helper_files") {
-  public_deps = [
-    "$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" ]
   if (is_clang || !is_win) {
@@ -138,42 +46,21 @@
   }
 }
 
-# Copy icd header to gen dir
-copy("icd_header_dep") {
-  sources = [
-    "$vulkan_headers_dir/include/vulkan/vk_icd.h",
-  ]
-  outputs = [
-    "$vulkan_gen_dir/vk_icd.h",
-  ]
-}
-
 if (!is_android) {
   # Vulkan Mock ICD
   # ---------------
-  group("vulkan_generate_mock_icd_files") {
-    public_deps = [
-      ":icd_header_dep",
-      ":vulkan_generate_helper_files",
-      ":vulkan_mock_icd_cpp",
-      ":vulkan_mock_icd_h",
-    ]
-  }
-
-  mock_icd_sources = [
-    "$vulkan_gen_dir/mock_icd.cpp",
-    "$vulkan_gen_dir/mock_icd.h",
-  ]
-
   shared_library("VkICD_mock_icd") {
     configs -= vulkan_undefine_configs
-    deps = [
-      ":vulkan_generate_mock_icd_files",
+    public_deps = [
+      "$vulkan_headers_dir:vulkan_headers",
     ]
     data_deps = [
       ":vulkan_gen_icd_json_file",
     ]
-    sources = mock_icd_sources
+    sources = [
+      "icd/generated/mock_icd.cpp",
+      "icd/generated/mock_icd.h",
+    ]
     if (is_win) {
       sources += [ "icd/VkICD_mock_icd.def" ]
     }
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e6ba640..ae4b2e3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,7 +27,7 @@
 
 # find_package(), include() and global project settings --------------------------------------------------------------------------
 
-find_package(PythonInterp 3 REQUIRED)
+find_package(PythonInterp 3 QUIET)
 
 # User-interface declarations ----------------------------------------------------------------------------------------------------
 # This section contains variables that affect development GUIs (e.g. CMake GUI and IDEs), such as option(), folders, and variables
diff --git a/icd/CMakeLists.txt b/icd/CMakeLists.txt
index b569ab3..278536b 100644
--- a/icd/CMakeLists.txt
+++ b/icd/CMakeLists.txt
@@ -15,20 +15,6 @@
 # limitations under the License.
 # ~~~
 
-set(SCRIPTS_DIR "${PROJECT_SOURCE_DIR}/scripts")
-
-# Define macro used for building vk.xml generated files
-macro(run_vk_xml_generate dependency output)
-    add_custom_command(OUTPUT ${output}
-                       COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/kvt_genvk.py -registry ${VulkanRegistry_DIR}/vk.xml -scripts
-                               ${VulkanRegistry_DIR} ${output}
-                       DEPENDS ${VulkanRegistry_DIR}/vk.xml
-                               ${VulkanRegistry_DIR}/generator.py
-                               ${SCRIPTS_DIR}/${dependency}
-                               ${SCRIPTS_DIR}/kvt_genvk.py
-                               ${VulkanRegistry_DIR}/reg.py)
-endmacro()
-
 if(WIN32)
     add_definitions(-DVK_USE_PLATFORM_WIN32_KHR -DVK_USE_PLATFORM_WIN32_KHX -DWIN32_LEAN_AND_MEAN)
 elseif(ANDROID)
@@ -105,12 +91,6 @@
     endif()
 endif()
 
-# Custom target for generated vulkan helper file dependencies
-set(icd_generate_helper_files_DEPENDS)
-add_custom_target(icd_generate_helper_files DEPENDS vk_typemap_helper.h)
-set_target_properties(icd_generate_helper_files PROPERTIES FOLDER ${TOOLS_HELPER_FOLDER})
-run_vk_xml_generate(vulkan_tools_helper_file_generator.py vk_typemap_helper.h)
-
 # For ICD with a direct dependency on a project with the same name, use it.
 if(NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
     foreach(config_file ${ICD_JSON_FILES})
@@ -128,8 +108,6 @@
                           VERBATIM)
         set_target_properties(copy-${target}-def-file PROPERTIES FOLDER ${TOOLS_HELPER_FOLDER})
         add_library(VkICD_${target} SHARED ${ARGN} VkICD_${target}.def)
-        add_dependencies(VkICD_${target} icd_generate_helper_files generate_icd_files)
-        # target_link_Libraries(VkICD_${target} VkICD_utils)
         if(INSTALL_ICD)
             install(TARGETS VkICD_${target} DESTINATION ${CMAKE_INSTALL_LIBDIR})
         endif()
@@ -137,8 +115,6 @@
 elseif(APPLE)
     macro(add_vk_icd target)
         add_library(VkICD_${target} SHARED ${ARGN})
-        # target_link_Libraries(VkICD_${target} VkICD_utils)
-        add_dependencies(VkICD_${target} icd_generate_helper_files generate_icd_files)
         set_target_properties(VkICD_${target} PROPERTIES LINK_FLAGS "-Wl")
         if(INSTALL_ICD)
             install(TARGETS VkICD_${target} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
@@ -147,8 +123,6 @@
 else()
     macro(add_vk_icd target)
         add_library(VkICD_${target} SHARED ${ARGN})
-        # target_link_Libraries(VkICD_${target} VkICD_utils)
-        add_dependencies(VkICD_${target} icd_generate_helper_files generate_icd_files)
         set_target_properties(VkICD_${target} PROPERTIES LINK_FLAGS "-Wl,-export-dynamic,-Bsymbolic,--exclude-libs,ALL")
         if((UNIX AND NOT APPLE) AND INSTALL_ICD) # i.e. Linux
             install(TARGETS VkICD_${target} DESTINATION ${CMAKE_INSTALL_LIBDIR})
@@ -178,10 +152,7 @@
     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith -Wno-unused-function -Wno-sign-compare")
 endif()
 
-run_vk_xml_generate(mock_icd_generator.py mock_icd.h)
-run_vk_xml_generate(mock_icd_generator.py mock_icd.cpp)
-
-add_vk_icd(mock_icd mock_icd.cpp mock_icd.h)
+add_vk_icd(mock_icd generated/mock_icd.cpp generated/mock_icd.h)
 
 # JSON file(s) install targets. For Linux, need to remove the "./" from the library path before installing to system directories.
 if((UNIX AND NOT APPLE) AND INSTALL_ICD) # i.e. Linux
