cmake: More cmake reorganization, including Linux
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a45ddcc..2b1556d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -44,7 +44,7 @@
 
 # Enable cmake folders
 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-set(LVL_TARGET_FOLDER lvl_cmake_targets)
+set(VVL_TARGET_FOLDER vl_cmake_targets)
 
 if(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Darwin")
     set(FALLBACK_CONFIG_DIRS "/etc/xdg" CACHE STRING
@@ -81,8 +81,8 @@
     # This option can be used to suppress the installation of artifacts from the
     # Vulkan-LoaderAndValidationLayers repo while running "make install" for the
     # VulkanTools and VulkanSamples repos.  This can be used to prevent the
-    # overwriting of LVL artifacts when installing these downstream repos.
-    option(INSTALL_LVL_FILES "Install content from LoaderAndValidationLayers repo" ON)
+    # overwriting of VL artifacts when installing these downstream repos.
+    option(INSTALL_VL_FILES "Install content from ValidationLayers repo" ON)
 endif()
 
 # TODO: Add option to override this with env var, or even to use SDK
@@ -131,9 +131,6 @@
     set (BINDATA_DIR Bin)
     set (LIBSOURCE_DIR Lib)
 else()
-    # is WIN32
-    option(ENABLE_WIN10_ONECORE "Link the loader with OneCore umbrella libraries" OFF)
-
     # For Windows, since 32-bit and 64-bit items can co-exist, we build each in its own build directory.
     # 32-bit target data goes in build32, and 64-bit target data goes into build.  So, include/link the
     # appropriate data at build time.
@@ -157,25 +154,148 @@
 
 set(VULKAN_SDK $ENV{VULKAN_SDK})
 
-find_program(GLSLANG_VALIDATOR NAMES glslangValidator
-             HINTS "${EXTERNAL_SOURCE_ROOT}/glslang/${BUILDTGT_DIR}/install/bin"
-                   "${VULKAN_SDK}/${BINDATA_DIR}"
-                   "${GLSLANG_BINARY_ROOT}/StandAlone"
-                   "${PROJECT_SOURCE_DIR}/external/${BINDATA_DIR}")
+# Set GLSLANG_REPO_ROOT to define the path to the glslang binaries for this project
 
-find_path(GLSLANG_SPIRV_INCLUDE_DIR SPIRV/spirv.hpp
-             HINTS "${EXTERNAL_SOURCE_ROOT}/glslang"
-                   "${CMAKE_SOURCE_DIR}/../glslang"
-                   "${VULKAN_SDK}/include/vulkan"
-                   DOC "Path to SPIRV/spirv.hpp")
+# These paths assume that the update_glslang_sources.py script was run in the indicated glslang repo and the repo was built
+set(SPIRV_TOOLS_BINARY_ROOT "${GLSLANG_REPO_ROOT}/${BUILDTGT_DIR}/External/spirv-tools/source" CACHE STRING "User defined path to the SPIRV-Tools binaries for this project")
+set(SPIRV_TOOLS_OPT_BINARY_ROOT "${GLSLANG_REPO_ROOT}/${BUILDTGT_DIR}/External/spirv-tools/source/opt" CACHE STRING "User defined path to the SPIRV-Tools-opt binaries for this project")
 
-message("XXXXXXXXXXXXXX vksdkpath = ${VULKAN_SDK}")
+if (WIN32)
+    set(GSLANG_FINAL_BINARY_PATH ${GLSLANG_REPO_ROOT}/${BUILDTGT_DIR})
 
-find_path(SPIRV_TOOLS_INCLUDE_DIR spirv-tools/libspirv.h
-             HINTS "${EXTERNAL_SOURCE_ROOT}/glslang/External/spirv-tools/include"
-                   "${CMAKE_SOURCE_DIR}/../glslang/External/spirv-tools/include"
-                   "${VULKAN_SDK}/spirv-tools/include"
-                   DOC "Path to spirv-tools/libspirv.h")
+    if(DISABLE_BUILD_PATH_DECORATION)
+        set (DEBUG_DECORATION "")
+        set (RELEASE_DECORATION "")
+    else()
+        set (DEBUG_DECORATION "Debug")
+        set (RELEASE_DECORATION "Release")
+    endif()
+
+    # Take some steps to set up a variable pointing to the final glslang binaries given the variety of input options
+    set (GLSLANG_SEARCH_PATH "${GSLANG_FINAL_BINARY_PATH}/glslang/${RELEASE_DECORATION}"
+                             "${GSLANG_FINAL_BINARY_PATH}/glslang/OSDependent/Windows/${RELEASE_DECORATION}"
+                             "${GSLANG_FINAL_BINARY_PATH}/hlsl/${RELEASE_DECORATION}"
+                             "${GSLANG_FINAL_BINARY_PATH}/OGLCompilersDLL/${RELEASE_DECORATION}"
+                             "${GSLANG_FINAL_BINARY_PATH}/SPIRV/${RELEASE_DECORATION}" )
+
+    set (GLSLANG_DEBUG_SEARCH_PATH "${GSLANG_FINAL_BINARY_PATH}/glslang/${DEBUG_DECORATION}"
+                                   "${GSLANG_FINAL_BINARY_PATH}/glslang/OSDependent/Windows/${DEBUG_DECORATION}"
+                                   "${GSLANG_FINAL_BINARY_PATH}/hlsl/${DEBUG_DECORATION}"
+                                   "${GSLANG_FINAL_BINARY_PATH}/OGLCompilersDLL/${DEBUG_DECORATION}"
+                                   "${GSLANG_FINAL_BINARY_PATH}/SPIRV/${DEBUG_DECORATION}")
+
+    set (SPIRV_TOOLS_SEARCH_PATH "${SPIRV_TOOLS_BINARY_ROOT}/${RELEASE_DECORATION}")
+    set (SPIRV_TOOLS_DEBUG_SEARCH_PATH "${SPIRV_TOOLS_BINARY_ROOT}/${DEBUG_DECORATION}")
+    set (SPIRV_TOOLS_OPT_SEARCH_PATH "${SPIRV_TOOLS_OPT_BINARY_ROOT}/${RELEASE_DECORATION}")
+    set (SPIRV_TOOLS_OPT_DEBUG_SEARCH_PATH "${SPIRV_TOOLS_OPT_BINARY_ROOT}/${DEBUG_DECORATION}")
+else()
+    # not WIN32
+    set (GLSLANG_SEARCH_PATH "${GLSLANG_REPO_ROOT}/${BUILDTGT_DIR}/install/lib"
+                             "${GLSLANG_REPO_ROOT}/${BUILDTGT_DIR}/glslang"
+                             "${GLSLANG_REPO_ROOT}/${BUILDTGT_DIR}/glslang/OSDependent/Unix"
+                             "${GLSLANG_REPO_ROOT}/${BUILDTGT_DIR}/OGLCompilersDLL"
+                             "${GLSLANG_REPO_ROOT}/${BUILDTGT_DIR}/SPIRV"
+                             "${GLSLANG_REPO_ROOT}/${BUILDTGT_DIR}/hlsl"
+                             "${GLSLANG_REPO_ROOT}/${BUILDTGT_DIR}/StandAlone")
+
+    set (SPIRV_TOOLS_SEARCH_PATH "${SPIRV_TOOLS_BINARY_ROOT}" )
+    set (SPIRV_TOOLS_OPT_SEARCH_PATH "${SPIRV_TOOLS_OPT_BINARY_ROOT}" )
+endif()
+
+find_path(GLSLANG_SPIRV_INCLUDE_DIR SPIRV/spirv.hpp HINTS
+         "${GLSLANG_REPO_ROOT}"
+         "${CMAKE_SOURCE_DIR}/../glslang"
+         DOC "Path to SPIRV/spirv.hpp")
+
+find_path(SPIRV_TOOLS_INCLUDE_DIR spirv-tools/libspirv.h HINTS
+          "${GLSLANG_REPO_ROOT}/External/spirv-tools/include"
+          "${CMAKE_SOURCE_DIR}/../glslang/External/spirv-tools/include"
+          DOC "Path to spirv-tools/libspirv.h")
+                                             
+find_library(GLSLANG_LIB NAMES glslang
+             HINTS ${GLSLANG_SEARCH_PATH} )
+
+find_library(OGLCompiler_LIB NAMES OGLCompiler
+             HINTS ${GLSLANG_SEARCH_PATH} )
+
+find_library(OSDependent_LIB NAMES OSDependent
+             HINTS ${GLSLANG_SEARCH_PATH} )
+
+find_library(HLSL_LIB NAMES HLSL
+             HINTS ${GLSLANG_SEARCH_PATH} )
+
+find_library(SPIRV_LIB NAMES SPIRV
+             HINTS ${GLSLANG_SEARCH_PATH} )
+
+find_library(SPIRV_REMAPPER_LIB NAMES SPVRemapper
+             HINTS ${GLSLANG_SEARCH_PATH} )
+
+find_library(SPIRV_TOOLS_LIB NAMES SPIRV-Tools
+             HINTS ${SPIRV_TOOLS_SEARCH_PATH} )
+
+find_library(SPIRV_TOOLS_OPT_LIB NAMES SPIRV-Tools-opt
+             HINTS ${SPIRV_TOOLS_OPT_SEARCH_PATH} )
+
+if (WIN32)
+    add_library(glslang         STATIC IMPORTED)
+    add_library(OGLCompiler     STATIC IMPORTED)
+    add_library(OSDependent     STATIC IMPORTED)
+    add_library(HLSL            STATIC IMPORTED)
+    add_library(SPIRV           STATIC IMPORTED)
+    add_library(SPVRemapper     STATIC IMPORTED)
+    add_library(Loader          STATIC IMPORTED)
+    add_library(SPIRV-Tools-opt STATIC IMPORTED)
+    add_library(SPIRV-Tools     STATIC IMPORTED)
+
+    find_library(GLSLANG_DLIB NAMES glslangd
+                 HINTS ${GLSLANG_DEBUG_SEARCH_PATH} )
+    find_library(OGLCompiler_DLIB NAMES OGLCompilerd
+                 HINTS ${GLSLANG_DEBUG_SEARCH_PATH} )
+    find_library(OSDependent_DLIB NAMES OSDependentd
+                 HINTS ${GLSLANG_DEBUG_SEARCH_PATH} )
+    find_library(HLSL_DLIB NAMES HLSLd
+                 HINTS ${GLSLANG_DEBUG_SEARCH_PATH} )
+    find_library(SPIRV_DLIB NAMES SPIRVd
+                 HINTS ${GLSLANG_DEBUG_SEARCH_PATH} )
+    find_library(SPIRV_REMAPPER_DLIB NAMES SPVRemapperd
+                 HINTS ${GLSLANG_DEBUG_SEARCH_PATH} )
+    find_library(SPIRV_TOOLS_DLIB NAMES SPIRV-Toolsd
+                 HINTS ${SPIRV_TOOLS_DEBUG_SEARCH_PATH} )
+    find_library(SPIRV_TOOLS_OPT_DLIB NAMES SPIRV-Tools-optd
+                 HINTS ${SPIRV_TOOLS_OPT_DEBUG_SEARCH_PATH} )
+
+    set_target_properties(glslang PROPERTIES
+                         IMPORTED_LOCATION       "${GLSLANG_LIB}"
+                         IMPORTED_LOCATION_DEBUG "${GLSLANG_DLIB}")
+    set_target_properties(OGLCompiler PROPERTIES
+                         IMPORTED_LOCATION       "${OGLCompiler_LIB}"
+                         IMPORTED_LOCATION_DEBUG "${OGLCompiler_DLIB}")
+    set_target_properties(OSDependent PROPERTIES
+                         IMPORTED_LOCATION       "${OSDependent_LIB}"
+                         IMPORTED_LOCATION_DEBUG "${OSDependent_DLIB}")
+    set_target_properties(HLSL PROPERTIES
+                         IMPORTED_LOCATION       "${HLSL_LIB}"
+                         IMPORTED_LOCATION_DEBUG "${HLSL_DLIB}")
+    set_target_properties(SPIRV PROPERTIES
+                         IMPORTED_LOCATION       "${SPIRV_LIB}"
+                         IMPORTED_LOCATION_DEBUG "${SPIRV_DLIB}")
+    set_target_properties(SPVRemapper PROPERTIES
+                         IMPORTED_LOCATION       "${SPIRV_REMAPPER_LIB}"
+                         IMPORTED_LOCATION_DEBUG "${SPIRV_REMAPPER_DLIB}")
+    set_target_properties(SPIRV-Tools PROPERTIES
+                         IMPORTED_LOCATION       "${SPIRV_TOOLS_LIB}"
+                         IMPORTED_LOCATION_DEBUG "${SPIRV_TOOLS_DLIB}")
+    set_target_properties(SPIRV-Tools-opt PROPERTIES
+                         IMPORTED_LOCATION       "${SPIRV_TOOLS_OPT_LIB}"
+                         IMPORTED_LOCATION_DEBUG "${SPIRV_TOOLS_OPT_DLIB}")
+
+    set (SPIRV_TOOLS_LIBRARIES SPIRV-Tools-opt SPIRV-Tools)
+    set (GLSLANG_LIBRARIES glslang OGLCompiler OSDependent HLSL SPIRV SPVRemapper ${SPIRV_TOOLS_LIBRARIES})
+else ()
+    # not WIN32
+    set (SPIRV_TOOLS_LIBRARIES ${SPIRV_TOOLS_OPT_LIB} ${SPIRV_TOOLS_LIB})
+    set (GLSLANG_LIBRARIES ${GLSLANG_LIB} ${OGLCompiler_LIB} ${OSDependent_LIB} ${HLSL_LIB} ${SPIRV_LIB} ${SPIRV_REMAPPER_LIB} ${SPIRV_TOOLS_LIBRARIES})
+endif()
 
 set (PYTHON_CMD ${PYTHON_EXECUTABLE})
 
@@ -193,7 +313,7 @@
 endif()
 
 if(UNIX)
-    if(INSTALL_LVL_FILES)
+    if(INSTALL_VL_FILES)
         install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/vulkan" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
         install(FILES "${CMAKE_CURRENT_BINARY_DIR}/vk_layer_dispatch_table.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/vulkan")
     endif()
diff --git a/layers/CMakeLists.txt b/layers/CMakeLists.txt
index cb1369c..b6068ed 100644
--- a/layers/CMakeLists.txt
+++ b/layers/CMakeLists.txt
@@ -2,7 +2,7 @@
 if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
     add_definitions(-DVK_USE_PLATFORM_WIN32_KHR -DVK_USE_PLATFORM_WIN32_KHX -DWIN32_LEAN_AND_MEAN)
     add_custom_target(mk_layer_config_dir ALL COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
-    set_target_properties(mk_layer_config_dir PROPERTIES FOLDER ${LVL_TARGET_FOLDER})
+    set_target_properties(mk_layer_config_dir PROPERTIES FOLDER ${VVL_TARGET_FOLDER})
     set(DisplayServer Win32)
 elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
     add_definitions(-DVK_USE_PLATFORM_ANDROID_KHR -DVK_USE_PLATFORM_ANDROID_KHX)
@@ -34,7 +34,6 @@
 
 set (PYTHON_CMD ${PYTHON_EXECUTABLE})
 set(SCRIPTS_DIR "${PROJECT_SOURCE_DIR}/scripts")
-message("xXXXxxXXxX scrips_dir is ${SCRIPTS_DIR}")
 
 # Define macro used for building vkxml generated files
 macro(run_vk_xml_generate dependency output)
@@ -50,16 +49,16 @@
     # NOTE: If you modify this call to use --rev_file instead of --git_dir (to read the commit ID from a file instead of
     # parsing from a Git repository), you probably also want to add the revision file to the list of DEPENDS on the
     # subsequent line (to ensure that the script is re-run when the revision file is modified).
-    COMMAND ${PYTHON_CMD} ${SCRIPTS_DIR}/external_revision_generator.py --git_dir ${source_dir} -s ${symbol_name} -o ${output}
+  # COMMAND ${PYTHON_CMD} ${SCRIPTS_DIR}/external_revision_generator.py --git_dir ${source_dir} -s ${symbol_name} -o ${output}
+    COMMAND ${PYTHON_CMD} ${SCRIPTS_DIR}/external_revision_generator.py --rev_file ${source_dir} -s ${symbol_name} -o ${output}
     DEPENDS ${SCRIPTS_DIR}/external_revision_generator.py ${source_dir}/.git/HEAD ${source_dir}/.git/index
     )
 endmacro()
 
-# Custom target for generated vulkan helper file dependencies
-set(generate_helper_files_DEPENDS)
-if(BUILD_LAYERS)
-    LIST(APPEND generate_helper_files_DEPENDS spirv_tools_commit_id.h)
-endif()
+# Custom targets for generated validation layer helper file dependencies
+add_custom_target(spirv_tools_revision_file DEPENDS
+    spirv_tools_commit_id.h
+    )
 add_custom_target(generate_helper_files DEPENDS
     vk_enum_string_helper.h
     vk_safe_struct.h
@@ -69,9 +68,9 @@
     vk_dispatch_table_helper.h
     vk_extension_helper.h
     vk_typemap_helper.h
-    ${generate_helper_files_DEPENDS}
     )
-set_target_properties(generate_helper_files PROPERTIES FOLDER ${LVL_TARGET_FOLDER})
+set_target_properties(spirv_tools_revision_file PROPERTIES FOLDER ${VVL_TARGET_FOLDER})
+set_target_properties(generate_helper_files PROPERTIES FOLDER ${VVL_TARGET_FOLDER})
 
 # Rules to build generated helper files
 run_vk_xml_generate(loader_extension_generator.py vk_layer_dispatch_table.h)
@@ -83,8 +82,9 @@
 run_vk_xml_generate(helper_file_generator.py vk_extension_helper.h)
 run_vk_xml_generate(helper_file_generator.py vk_typemap_helper.h)
 if(BUILD_LAYERS)
-    # TODO: fix this or find out if we can nuke it.VUID-VkImageCreateInfo-tiling-00977
-    #run_external_revision_generate(${EXTERNAL_SOURCE_ROOT}/glslang/External/spirv-tools SPIRV_TOOLS_COMMIT_ID spirv_tools_commit_id.h)
+   #run_external_revision_generate(${EXTERNAL_SOURCE_ROOT}/glslang/External/spirv-tools SPIRV_TOOLS_COMMIT_ID spirv_tools_commit_id.h)
+    #run_external_revision_generate(${SPIRV_TOOLS_INCLUDE_DIR} SPIRV_TOOLS_COMMIT_ID spirv_tools_commit_id.h)
+    #### TODO LUGMAL FIX THIS!!!! run_external_revision_generate(${SPIRV_TOOLS_INCLUDE_DIR}/.. SPIRV_TOOLS_COMMIT_ID spirv_tools_commit_id.h)
 endif()
 
 
@@ -104,7 +104,7 @@
     target_compile_definitions(VkLayer_utils PUBLIC _CRT_SECURE_NO_WARNINGS)
 else()
     add_library(VkLayer_utils SHARED ${VKLAYER_UTILS_VLF_SOURCES})
-    if(INSTALL_LVL_FILES)
+    if(INSTALL_VL_FILES)
         install(TARGETS VkLayer_utils DESTINATION ${CMAKE_INSTALL_LIBDIR})
     endif()
 endif()
@@ -113,13 +113,11 @@
     VkLayer_utils PUBLIC
     ${CMAKE_CURRENT_SOURCE_DIR}/loader
     ${VULKAN_HEADERS_LOCATION}/include
-    ${VULKAN_HEADERS_LOCATION}/include/vulkan
+    ${VULKAN_HEADERS_LOCATION}/interfaces
     ${CMAKE_CURRENT_BINARY_DIR}
+    ${PROJECT_BINARY_DIR}
     )
 
-message("OOOOOOOOOOOO vulkan hdrs loc = ${VULKAN_HEADERS_LOCATION}")
-
-
 set(LAYER_JSON_FILES_WITH_DEPENDENCIES
     VkLayer_core_validation
     VkLayer_object_tracker
@@ -144,7 +142,7 @@
                     COMMAND copy ${src_json} ${dst_json}
                     VERBATIM
                     )
-                set_target_properties(${config_file}-json PROPERTIES FOLDER ${LVL_TARGET_FOLDER})
+                set_target_properties(${config_file}-json PROPERTIES FOLDER ${VVL_TARGET_FOLDER})
             endforeach(config_file)
         else()
             foreach (config_file ${LAYER_JSON_FILES})
@@ -164,7 +162,7 @@
             COMMAND copy ${src_val_msgs} ${dst_val_msgs}
             VERBATIM
             )
-        set_target_properties(vk_validation_error_messages PROPERTIES FOLDER ${LVL_TARGET_FOLDER})
+        set_target_properties(vk_validation_error_messages PROPERTIES FOLDER ${VVL_TARGET_FOLDER})
     endif()
 elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
     # extra setup for out-of-tree builds
@@ -207,6 +205,7 @@
             )
     endif()
 endif()
+
 # If a layer has a direct dependency on a project with the same name, use it.
 if ((Win32) OR (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)))
     foreach (config_file ${LAYER_JSON_FILES_WITH_DEPENDENCIES})
@@ -221,7 +220,7 @@
 # Add targets for JSON file install on Linux.
 # Need to remove the "./" from the library path before installing to system directories.
 if(UNIX)
-    if(INSTALL_LVL_FILES)
+    if(INSTALL_VL_FILES)
         foreach (config_file ${LAYER_JSON_FILES})
             add_custom_target(${config_file}-staging-json ALL
                 COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/staging-json
@@ -242,7 +241,7 @@
         COMMAND ${CMAKE_COMMAND} -E copy_if_different ${DEF_FILE} VkLayer_${target}.def
         VERBATIM
     )
-    set_target_properties(copy-${target}-def-file PROPERTIES FOLDER ${LVL_TARGET_FOLDER})
+    set_target_properties(copy-${target}-def-file PROPERTIES FOLDER ${VVL_TARGET_FOLDER})
     add_library(VkLayer_${target} SHARED ${ARGN} VkLayer_${target}.def)
     add_dependencies(VkLayer_${target} generate_helper_files)
     target_link_Libraries(VkLayer_${target} VkLayer_utils)
@@ -265,29 +264,25 @@
     target_link_Libraries(VkLayer_${target} VkLayer_utils)
     add_dependencies(VkLayer_${target} generate_helper_files VkLayer_utils)
     set_target_properties(VkLayer_${target} PROPERTIES LINK_FLAGS "-Wl,-Bsymbolic,--exclude-libs,ALL")
-    if(INSTALL_LVL_FILES)
+    if(INSTALL_VL_FILES)
         install(TARGETS VkLayer_${target} DESTINATION ${CMAKE_INSTALL_LIBDIR})
     endif()
     endmacro()
 endif()
 
-# TODO: cut down this list, maybe add target includes?
 include_directories(
     ${CMAKE_CURRENT_SOURCE_DIR}
-    ${CMAKE_CURRENT_BINARY_DIR}
     ${VULKAN_HEADERS_LOCATION}/include
     ${VULKAN_HEADERS_LOCATION}/include/vulkan
-    ${PROJECT_BINARY_DIR}
-    ${CMAKE_BINARY_DIR}
     )
-message("FFFFFFFFFF cmake_current_binary_dir is ${CMAKE_CURRENT_BINARY_DIR}")
 
 if (WIN32)
     # Applies to all configurations
     add_definitions(-D_CRT_SECURE_NO_WARNINGS)
     # Avoid: fatal error C1128: number of sections exceeded object file format limit: compile with /bigobj
     set_source_files_properties(core_validation.cpp threading.cpp
-        PROPERTIES COMPILE_FLAGS "/bigobj")
+        PROPERTIES COMPILE_FLAGS "/bigobj"
+        )
     # Turn off transitional "changed behavior" warning message for Visual Studio versions prior to 2015.
     # The changed behavior is that constructor initializers are now fixed to clear the struct members.
     add_compile_options("$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<VERSION_LESS:$<CXX_COMPILER_VERSION>,19>>:/wd4351>")
@@ -296,9 +291,7 @@
     set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith -Wno-unused-function -Wno-sign-compare")
 endif()
 
-# Clang (and not gcc) warns about unused const variables.
-# Generated files may purposely contain unused consts, so
-# silence this warning in Clang.
+# Clang warns about unused const variables. Generated files may purposely contain unused consts, so silence this warning in Clang
 if (CMAKE_C_COMPILER_ID MATCHES "Clang")
    set_source_files_properties(parameter_validation.cpp PROPERTIES
         COMPILE_FLAGS "-Wno-unused-const-variable")
@@ -312,7 +305,6 @@
 
 add_vk_layer(core_validation core_validation.cpp vk_layer_table.cpp descriptor_sets.cpp buffer_validation.cpp shader_validation.cpp xxhash.c)
 add_vk_layer(object_tracker object_tracker.cpp object_tracker_utils.cpp vk_layer_table.cpp)
-# generated
 add_vk_layer(threading threading.cpp thread_check.h vk_layer_table.cpp)
 add_vk_layer(unique_objects unique_objects.cpp unique_objects_wrappers.h vk_layer_table.cpp)
 add_vk_layer(parameter_validation parameter_validation.cpp parameter_validation_utils.cpp parameter_validation.h vk_layer_table.cpp vk_validation_error_messages.h)
@@ -321,3 +313,4 @@
 target_include_directories(VkLayer_core_validation PRIVATE ${GLSLANG_SPIRV_INCLUDE_DIR})
 target_include_directories(VkLayer_core_validation PRIVATE ${SPIRV_TOOLS_INCLUDE_DIR})
 target_link_libraries(VkLayer_core_validation ${SPIRV_TOOLS_LIBRARIES})
+add_dependencies(VkLayer_core_validation spirv_tools_revision_file)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 195c675..2832dc1 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -76,7 +76,7 @@
             COMMAND ${CMAKE_COMMAND} -E copy_if_different ${VALIDATE_DOC} vkvalidatelayerdoc.ps1
             VERBATIM
             )
-        set_target_properties(binary-dir-symlinks PROPERTIES FOLDER ${LVL_TARGET_FOLDER})
+        set_target_properties(binary-dir-symlinks PROPERTIES FOLDER ${VVL_TARGET_FOLDER})
     endif()
 endif()
 
@@ -92,18 +92,16 @@
 set_target_properties(vk_layer_validation_tests
    PROPERTIES
    COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
-# TODO: Winnow this list!!!!
-target_include_directories(vk_layer_validation_tests
+target_include_directories(vk_layer_validation_tests PUBLIC
     ${VULKAN_HEADERS_LOCATION}/include
-    ${VULKAN_HEADERS_LOCATION}/include/vulkan
-    ${PROJECT_SOURCE_DIR}/tests
-    ${PROJECT_SOURCE_DIR}/submodules/googletest/googletest/include
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/googletest/googletest/include
     ${PROJECT_SOURCE_DIR}/layers
     ${GLSLANG_SPIRV_INCLUDE_DIR}
-   #### ${LIBGLM_INCLUDE_DIR}
     ${CMAKE_CURRENT_BINARY_DIR}
     ${CMAKE_BINARY_DIR}
     ${PROJECT_BINARY_DIR}
+    ${PROJECT_BINARY_DIR}/layers
     )
 
 if(NOT WIN32)
@@ -117,31 +115,22 @@
     endif()
 endif()
 if(WIN32)
-   target_link_libraries(vk_layer_validation_tests ${LIBVK} gtest gtest_main ${GLSLANG_LIBRARIES})
+    target_link_libraries(vk_layer_validation_tests ${LIBVK} gtest gtest_main ${GLSLANG_LIBRARIES})
 endif()
-# TODO: change to add_target_dependencies
-# TODO: WHY DO THESE MATTER?  Seems silly
-#add_dependencies(vk_layer_validation_tests
-#   VkLayer_core_validation
-#   VkLayer_object_tracker
-#   VkLayer_threading
-#   VkLayer_unique_objects
-#   VkLayer_parameter_validation
-#)
 
 if (WIN32)
     # For Windows, copy necessary gtest DLLs to the right spot for the vk_layer_tests...
-    FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/../submodules/googletest/googletest/$<CONFIGURATION>/*.dll SRC_GTEST_DLLS)
+    FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/googletest/googletest/$<CONFIGURATION>/*.dll SRC_GTEST_DLLS)
     FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION> DST_GTEST_DLLS)
     add_custom_command(TARGET vk_layer_validation_tests POST_BUILD
         COMMAND xcopy /Y /I ${SRC_GTEST_DLLS} ${DST_GTEST_DLLS})
 endif()
 
-set (GTEST_RELATIVE_LOCATION ../submodules/googletest)
+set (GTEST_RELATIVE_LOCATION googletest)
 SET(BUILD_GTEST ON CACHE BOOL "Builds the googletest subproject")
 SET(BUILD_GMOCK OFF CACHE BOOL "Builds the googlemock subproject")
 SET(gtest_force_shared_crt ON CACHE BOOL "Link gtest runtimes dynamically")
 SET(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries")
-add_subdirectory(${GTEST_RELATIVE_LOCATION} ${CMAKE_CURRENT_BINARY_DIR}/../submodules/googletest)
+add_subdirectory(${GTEST_RELATIVE_LOCATION} ${CMAKE_CURRENT_BINARY_DIR}/googletest)
 
 add_subdirectory(layers)
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index 04292ab..e4dbd91 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -23417,8 +23417,7 @@
 
     vkCreatePipelineLayout(m_device->device(), &pipeline_layout_ci, NULL, &pipeline_layout);
 
-    // Create a dummy pipeline, since LVL inspects which bindings are
-    // actually used at draw time
+    // Create a dummy pipeline, since VL inspects which bindings are actually used at draw time
     char const *vsSource =
         "#version 450\n"
         "void main(){\n"
diff --git a/tests/layers/CMakeLists.txt b/tests/layers/CMakeLists.txt
index 3965b26..0fc16dc 100644
--- a/tests/layers/CMakeLists.txt
+++ b/tests/layers/CMakeLists.txt
@@ -21,7 +21,7 @@
                 VERBATIM
                 )
             add_dependencies(${config_file}-json ${config_file})
-            set_target_properties(${config_file}-json PROPERTIES FOLDER ${LVL_TARGET_FOLDER})
+            set_target_properties(${config_file}-json PROPERTIES FOLDER ${VVL_TARGET_FOLDER})
         endforeach(config_file)
     endif()
 elseif(APPLE)
@@ -58,24 +58,24 @@
 endif()
 
 if (WIN32)
-    macro(add_vk_layer target)
+    macro(add_test_layer target)
     FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/VkLayer_${target}.def DEF_FILE)
     add_custom_target(copy-${target}-def-file ALL
         COMMAND ${CMAKE_COMMAND} -E copy_if_different ${DEF_FILE} VkLayer_${target}.def
         VERBATIM
     )
-    set_target_properties(copy-${target}-def-file PROPERTIES FOLDER ${LVL_TARGET_FOLDER})
+    set_target_properties(copy-${target}-def-file PROPERTIES FOLDER ${VVL_TARGET_FOLDER})
     add_library(VkLayer_${target} SHARED ${ARGN} VkLayer_${target}.def)
     add_dependencies(VkLayer_${target} generate_helper_files VkLayer_utils)
     endmacro()
 elseif(APPLE)
-    macro(add_vk_layer target)
+    macro(add_test_layer target)
     add_library(VkLayer_${target} SHARED ${ARGN})
     add_dependencies(VkLayer_${target} generate_helper_files VkLayer_utils)
     set_target_properties(VkLayer_${target} PROPERTIES LINK_FLAGS "-Wl")
     endmacro()
 else()
-    macro(add_vk_layer target)
+    macro(add_test_layer target)
     add_library(VkLayer_${target} SHARED ${ARGN})
     add_dependencies(VkLayer_${target} generate_helper_files VkLayer_utils)
     set_target_properties(VkLayer_${target} PROPERTIES LINK_FLAGS "-Wl,-Bsymbolic")
@@ -83,12 +83,13 @@
 endif()
 
 include_directories(
+    ${VULKAN_HEADERS_LOCATION}/include
+    #TODO: Clear out this list
     ${CMAKE_CURRENT_SOURCE_DIR}
-    ${CMAKE_CURRENT_SOURCE_DIR}/../../layers
-    ${CMAKE_CURRENT_SOURCE_DIR}/../../loader
-    ${CMAKE_CURRENT_SOURCE_DIR}/../../include/vulkan
+    ${PROJECT_SOURCE_DIR}/layers
     ${CMAKE_CURRENT_BINARY_DIR}
     ${PROJECT_BINARY_DIR}
+    ${PROJECT_BINARY_DIR}/layers
     ${CMAKE_BINARY_DIR}
 )
 
@@ -103,12 +104,12 @@
 endif()
 
 set (DEVICE_PROFILE_API_SRCS
-       device_profile_api.cpp
-       ${CMAKE_CURRENT_SOURCE_DIR}/../../layers/vk_layer_table.cpp
-       ${CMAKE_CURRENT_SOURCE_DIR}/../../layers/vk_layer_extension_utils.cpp
-       )
+    device_profile_api.cpp
+    ${PROJECT_SOURCE_DIR}/layers/vk_layer_table.cpp
+    ${PROJECT_SOURCE_DIR}/layers/vk_layer_extension_utils.cpp
+    )
 
-add_vk_layer(device_profile_api ${DEVICE_PROFILE_API_SRCS})
+add_test_layer(device_profile_api ${DEVICE_PROFILE_API_SRCS})
 
 if (WIN32)
     # For Windows, copy necessary gtest DLLs to the right spot for the vk_layer_tests...
diff --git a/tests/test_common.h b/tests/test_common.h
index e1d8670..05eccba 100644
--- a/tests/test_common.h
+++ b/tests/test_common.h
@@ -64,7 +64,7 @@
 
 // Use the NDK's header on Android
 #ifndef __ANDROID__
-#include "../submodules/googletest/googletest/include/gtest/gtest.h"
+#include "googletest/googletest/include/gtest/gtest.h"
 #else
 #include "gtest/gtest.h"
 #endif