Move iree/samples/ -> samples/ (#8958)

Progress on #8958
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8dbf9b8..5921cd7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -636,10 +636,6 @@
   add_subdirectory(iree/compiler)
 endif()
 
-if(IREE_BUILD_SAMPLES)
-  add_subdirectory(iree/samples)
-endif()
-
 add_subdirectory(iree/tools)
 
 if(IREE_BUILD_TRACY)
@@ -704,3 +700,6 @@
 # many things into top-level APIs). This should resolve once we finish
 # relayering everything.
 add_subdirectory(runtime)
+if(IREE_BUILD_SAMPLES)
+  add_subdirectory(samples)
+endif()
diff --git a/build_tools/bazel/build_core.sh b/build_tools/bazel/build_core.sh
index 9e9e761..ddc3e9d 100755
--- a/build_tools/bazel/build_core.sh
+++ b/build_tools/bazel/build_core.sh
@@ -83,7 +83,7 @@
   --bazelrc=build_tools/bazel/iree.bazelrc \
   query \
     --config=non_darwin \
-    //iree/... + //runtime/... + //build_tools/... + \
+    //iree/... + //runtime/... + //samples/... + //build_tools/... + \
     //llvm-external-projects/iree-dialects/... | \
       xargs --max-args 1000000 --max-chars 1000000 --exit \
         bazel \
diff --git a/build_tools/bazel/iree_bytecode_module.bzl b/build_tools/bazel/iree_bytecode_module.bzl
index a1fe171..20c561e 100644
--- a/build_tools/bazel/iree_bytecode_module.bzl
+++ b/build_tools/bazel/iree_bytecode_module.bzl
@@ -19,6 +19,7 @@
         translate_tool = "//iree/tools:iree-compile",
         linker_tool = "@llvm-project//lld:lld",
         c_identifier = "",
+        deps = [],
         **kwargs):
     """Builds an IREE bytecode module.
 
@@ -33,6 +34,7 @@
             Defaults to the lld from the llvm-project directory.
         module: Optional. Specifies the  path to use for the enerated IREE module (.vmfb).
         c_identifier: Optional. Enables embedding the module as C data.
+        deps: Optional. Dependencies to add to the generated library.
         **kwargs: any additional attributes to pass to the underlying rules.
     """
 
@@ -71,5 +73,6 @@
             c_file_output = "%s_c.c" % (name),
             h_file_output = "%s_c.h" % (name),
             flatten = True,
+            deps = deps,
             **kwargs
         )
diff --git a/build_tools/bazel_to_cmake/bazel_to_cmake.py b/build_tools/bazel_to_cmake/bazel_to_cmake.py
index d8d1a03..a9acae9 100755
--- a/build_tools/bazel_to_cmake/bazel_to_cmake.py
+++ b/build_tools/bazel_to_cmake/bazel_to_cmake.py
@@ -81,7 +81,7 @@
       nargs="+",
       help=
       "Converts all BUILD files under a root directory (defaults to iree, runtime)",
-      default=["iree", "runtime"])
+      default=["iree", "runtime", "samples"])
 
   args = parser.parse_args()
 
diff --git a/build_tools/bazel_to_cmake/bazel_to_cmake_converter.py b/build_tools/bazel_to_cmake/bazel_to_cmake_converter.py
index ffd3255..93d485b 100644
--- a/build_tools/bazel_to_cmake/bazel_to_cmake_converter.py
+++ b/build_tools/bazel_to_cmake/bazel_to_cmake_converter.py
@@ -453,6 +453,7 @@
                            flags=None,
                            translate_tool=None,
                            c_identifier=None,
+                           deps=None,
                            testonly=None):
     name_block = _convert_string_arg_block("NAME", name, quote=False)
     src_block = _convert_string_arg_block("SRC", src)
@@ -460,6 +461,7 @@
     translate_tool_block = _convert_target_block("TRANSLATE_TOOL",
                                                  translate_tool)
     flags_block = _convert_string_list_block("FLAGS", flags)
+    deps_block = _convert_target_list_block("DEPS", deps)
     testonly_block = _convert_option_block("TESTONLY", testonly)
 
     self.converter.body += (f"iree_bytecode_module(\n"
@@ -468,6 +470,7 @@
                             f"{c_identifier_block}"
                             f"{translate_tool_block}"
                             f"{flags_block}"
+                            f"{deps_block}"
                             f"{testonly_block}"
                             f"  PUBLIC\n)\n\n")
 
diff --git a/build_tools/bazel_to_cmake/bazel_to_cmake_targets.py b/build_tools/bazel_to_cmake/bazel_to_cmake_targets.py
index f65a2ab..32a572a 100644
--- a/build_tools/bazel_to_cmake/bazel_to_cmake_targets.py
+++ b/build_tools/bazel_to_cmake/bazel_to_cmake_targets.py
@@ -231,16 +231,24 @@
   if target.startswith("//llvm-external-projects/iree-dialects"):
     return _convert_iree_dialects_target(target)
 
+  # IREE root paths map to package names based on explicit rules.
+  # If changing these, make the corresponding change in iree_macros.cmake
+  # (iree_package_ns function).
   # Map //runtime/src/iree/(.*) -> iree::\1
   m = re.match("^//runtime/src/iree/(.+)", target)
   if m:
     return ["iree::" + _convert_bazel_path(m.group(1))]
 
-  # Map //runtime/bindings/(.*) -> iree::bindings\1
+  # Map //runtime/bindings/(.*) -> iree::bindings::\1
   m = re.match("^//runtime/bindings/(.+)", target)
   if m:
     return ["iree::bindings::" + _convert_bazel_path(m.group(1))]
 
+  # Map //samples/(.*) -> iree::samples::\1
+  m = re.match("^//samples[/|:](.+)", target)
+  if m:
+    return ["iree::samples::" + _convert_bazel_path(m.group(1))]
+
   # Default (legacy) rewrite.
   if not target.startswith("@"):
     return [_convert_bazel_path(target)]
diff --git a/build_tools/cmake/iree_bytecode_module.cmake b/build_tools/cmake/iree_bytecode_module.cmake
index c3cc1a4..24ecae2 100644
--- a/build_tools/cmake/iree_bytecode_module.cmake
+++ b/build_tools/cmake/iree_bytecode_module.cmake
@@ -21,6 +21,7 @@
 # PUBLIC: Add this so that this library will be exported under ${PACKAGE}::
 #     Also in IDE, target will appear in ${PACKAGE} folder while non PUBLIC
 #     will be in ${PACKAGE}/internal.
+# DEPS: Library dependencies to add to the generated embed cc library.
 # TESTONLY: When added, this target will only be built if IREE_BUILD_TESTS=ON.
 # MODULE_FILE_NAME: Optional. When specified, sets the output bytecode module
 #    file name. When not specified, a default file name will be generated from
@@ -37,7 +38,7 @@
     _RULE
     "PUBLIC;TESTONLY"
     "NAME;SRC;TRANSLATE_TOOL;C_IDENTIFIER;MODULE_FILE_NAME;FRIENDLY_NAME"
-    "FLAGS;DEPENDS"
+    "FLAGS;DEPENDS;DEPS"
     ${ARGN}
   )
 
@@ -134,6 +135,8 @@
       FLATTEN
         "${_PUBLIC_ARG}"
         "${_TESTONLY_ARG}"
+      DEPS
+        ${_RULE_DEPS}
     )
   endif()
 endfunction()
diff --git a/build_tools/cmake/iree_cc_library.cmake b/build_tools/cmake/iree_cc_library.cmake
index 6f71f1d..9afb144 100644
--- a/build_tools/cmake/iree_cc_library.cmake
+++ b/build_tools/cmake/iree_cc_library.cmake
@@ -95,6 +95,11 @@
     set(_RULE_IS_INTERFACE 0)
   endif()
 
+  # Wrap user specified INCLUDES in the $<BUILD_INTERFACE:>
+  # generator.
+  list(TRANSFORM _RULE_INCLUDES PREPEND "$<BUILD_INTERFACE:")
+  list(TRANSFORM _RULE_INCLUDES APPEND ">")
+
   # Implicit deps.
   if(IREE_IMPLICIT_DEFS_CC_DEPS)
     list(APPEND _RULE_DEPS ${IREE_IMPLICIT_DEFS_CC_DEPS})
@@ -157,7 +162,7 @@
     )
     target_include_directories(${_NAME}
       PUBLIC
-        "$<BUILD_INTERFACE:${_RULE_INCLUDES}>"
+        ${_RULE_INCLUDES}
     )
     target_compile_options(${_NAME}
       PRIVATE
@@ -203,6 +208,7 @@
       INTERFACE
         "$<BUILD_INTERFACE:${IREE_SOURCE_DIR}>"
         "$<BUILD_INTERFACE:${IREE_BINARY_DIR}>"
+        ${_RULE_INCLUDES}
     )
     target_link_options(${_NAME}
       INTERFACE
diff --git a/build_tools/cmake/iree_macros.cmake b/build_tools/cmake/iree_macros.cmake
index f0606bf..ccb9c9b 100644
--- a/build_tools/cmake/iree_macros.cmake
+++ b/build_tools/cmake/iree_macros.cmake
@@ -60,10 +60,17 @@
   string(REPLACE ${IREE_ROOT_DIR} "" _RELATIVE_PATH ${CMAKE_CURRENT_LIST_DIR})
   string(SUBSTRING ${_RELATIVE_PATH} 1 -1 _RELATIVE_PATH)
 
+  # If changing the directory/package mapping rules, please also implement
+  # the corresponding rule in:
+  #   build_tools/bazel_to_cmake/bazel_to_cmake_targets.py
   # Some sub-trees form their own roots for package purposes. Rewrite them.
   if(_RELATIVE_PATH MATCHES "^runtime/src/(.*)")
     # runtime/src/iree/base -> iree/base
     set(_PACKAGE "${CMAKE_MATCH_1}")
+  elseif(_RELATIVE_PATH MATCHES "^samples/(.*)")
+    set(_PACKAGE "iree::samples::${CMAKE_MATCH_1}")
+  elseif(_RELATIVE_PATH MATCHES "^samples$")
+    set(_PACKAGE "iree::samples")
   else()
     # Default to pass-through. Examples:
     #   iree/compiler/API
@@ -72,6 +79,11 @@
   endif()
 
   string(REPLACE "/" "::" _PACKAGE_NS ${_PACKAGE})
+
+  if(_DEBUG_IREE_PACKAGE_NAME)
+    message(STATUS "iree_package_ns(): map ${_RELATIVE_PATH} -> ${_PACKAGE_NS}")
+  endif()
+
   set(${PACKAGE_NS} ${_PACKAGE_NS} PARENT_SCOPE)
 endfunction()
 
diff --git a/build_tools/kokoro/gcp_ubuntu/cmake/baremetal/riscv32/test.sh b/build_tools/kokoro/gcp_ubuntu/cmake/baremetal/riscv32/test.sh
index fceaab0..e02ecb9 100755
--- a/build_tools/kokoro/gcp_ubuntu/cmake/baremetal/riscv32/test.sh
+++ b/build_tools/kokoro/gcp_ubuntu/cmake/baremetal/riscv32/test.sh
@@ -22,7 +22,7 @@
 popd > /dev/null
 
 echo "Test simple_embedding binaries"
-pushd "${BUILD_RISCV_DIR?}/iree/samples/simple_embedding" > /dev/null
+pushd "${BUILD_RISCV_DIR?}/samples/iree_simple_embedding" > /dev/null
 
 "${QEMU_RV32_BIN?}" -cpu rv32,x-v=true,x-k=true,vlen=256,elen=64,vext_spec=v1.0 \
 simple_embedding_embedded_sync
diff --git a/build_tools/kokoro/gcp_ubuntu/cmake/linux/riscv64/tests/simple_embedded_tests.run b/build_tools/kokoro/gcp_ubuntu/cmake/linux/riscv64/tests/simple_embedded_tests.run
index 698a4bb..45bfb2f 100644
--- a/build_tools/kokoro/gcp_ubuntu/cmake/linux/riscv64/tests/simple_embedded_tests.run
+++ b/build_tools/kokoro/gcp_ubuntu/cmake/linux/riscv64/tests/simple_embedded_tests.run
@@ -1,3 +1,3 @@
-// RUN: ${TEST_CMD} ${BUILD_RISCV_DIR}/iree/samples/simple_embedding/simple_embedding_dylib
-// RUN: ${TEST_CMD} ${BUILD_RISCV_DIR}/iree/samples/simple_embedding/simple_embedding_embedded_sync
-// RUN: ${TEST_CMD} ${BUILD_RISCV_DIR}/iree/samples/simple_embedding/simple_embedding_vmvx_sync
+// RUN: ${TEST_CMD} ${BUILD_RISCV_DIR}/samples/iree_simple_embedding/simple_embedding_dylib
+// RUN: ${TEST_CMD} ${BUILD_RISCV_DIR}/samples/iree_simple_embedding/simple_embedding_embedded_sync
+// RUN: ${TEST_CMD} ${BUILD_RISCV_DIR}/samples/iree_simple_embedding/simple_embedding_vmvx_sync
diff --git a/iree/samples/CMakeLists.txt b/iree/samples/CMakeLists.txt
deleted file mode 100644
index 807099b..0000000
--- a/iree/samples/CMakeLists.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-################################################################################
-# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from           #
-# iree/samples/BUILD                                                           #
-#                                                                              #
-# Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary   #
-# CMake-only content.                                                          #
-#                                                                              #
-# To disable autogeneration for this file entirely, delete this header.        #
-################################################################################
-
-iree_add_all_subdirs()
-
-### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###
diff --git a/iree/samples/README.md b/iree/samples/README.md
deleted file mode 100644
index 1053293..0000000
--- a/iree/samples/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# IREE Samples
-
-Also see the [iree-samples](https://github.com/google/iree-samples) repository.
diff --git a/iree/samples/BUILD b/samples/BUILD
similarity index 77%
rename from iree/samples/BUILD
rename to samples/BUILD
index 236a474..6a18794 100644
--- a/iree/samples/BUILD
+++ b/samples/BUILD
@@ -9,3 +9,12 @@
     features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
+
+exports_files(["lit.cfg.py"])
+
+cc_library(
+    name = "defs",
+    includes = [
+        ".",
+    ],
+)
diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt
new file mode 100644
index 0000000..9a976db
--- /dev/null
+++ b/samples/CMakeLists.txt
@@ -0,0 +1,16 @@
+# Copyright 2022 The IREE Authors
+#
+# Licensed under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+iree_add_all_subdirs()
+
+iree_cc_library(
+  NAME
+    defs
+  INCLUDES
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_BINARY_DIR}
+  PUBLIC
+)
diff --git a/samples/README.md b/samples/README.md
new file mode 100644
index 0000000..92c628d
--- /dev/null
+++ b/samples/README.md
@@ -0,0 +1,8 @@
+# IREE Samples
+
+Also see the [iree-samples](https://github.com/google/iree-samples) repository.
+
+Note that for samples which include C/C++ code, the samples/ directory itself
+is added as an include directory if depending on the `defs` library.
+As such, samples that include headers should include "iree" in their name in
+some fashion so that paths are unique.
\ No newline at end of file
diff --git a/iree/samples/dynamic_shapes/CMakeLists.txt b/samples/dynamic_shapes/CMakeLists.txt
similarity index 100%
rename from iree/samples/dynamic_shapes/CMakeLists.txt
rename to samples/dynamic_shapes/CMakeLists.txt
diff --git a/iree/samples/dynamic_shapes/README.md b/samples/dynamic_shapes/README.md
similarity index 100%
rename from iree/samples/dynamic_shapes/README.md
rename to samples/dynamic_shapes/README.md
diff --git a/iree/samples/dynamic_shapes/dynamic_shapes.ipynb b/samples/dynamic_shapes/dynamic_shapes.ipynb
similarity index 100%
rename from iree/samples/dynamic_shapes/dynamic_shapes.ipynb
rename to samples/dynamic_shapes/dynamic_shapes.ipynb
diff --git a/iree/samples/dynamic_shapes/main.c b/samples/dynamic_shapes/main.c
similarity index 100%
rename from iree/samples/dynamic_shapes/main.c
rename to samples/dynamic_shapes/main.c
diff --git a/iree/samples/dynamic_shapes/test.sh b/samples/dynamic_shapes/test.sh
similarity index 100%
rename from iree/samples/dynamic_shapes/test.sh
rename to samples/dynamic_shapes/test.sh
diff --git a/iree/samples/custom_modules/BUILD b/samples/iree_custom_modules/BUILD
similarity index 94%
rename from iree/samples/custom_modules/BUILD
rename to samples/iree_custom_modules/BUILD
index 0366248..0433058 100644
--- a/iree/samples/custom_modules/BUILD
+++ b/samples/iree_custom_modules/BUILD
@@ -24,6 +24,7 @@
         "//runtime/src/iree/modules/hal",
         "//runtime/src/iree/vm",
         "//runtime/src/iree/vm:cc",
+        "//samples:defs",
     ],
 )
 
@@ -44,7 +45,7 @@
         "-iree-mlir-to-vm-bytecode-module",
         "-iree-hal-target-backends=vmvx",
     ],
-    translate_tool = "//iree/samples/custom_modules/dialect:custom-translate",
+    translate_tool = "//samples/iree_custom_modules/dialect:custom-translate",
 )
 
 cc_test(
diff --git a/iree/samples/custom_modules/CMakeLists.txt b/samples/iree_custom_modules/CMakeLists.txt
similarity index 91%
rename from iree/samples/custom_modules/CMakeLists.txt
rename to samples/iree_custom_modules/CMakeLists.txt
index d30204e..a57d218 100644
--- a/iree/samples/custom_modules/CMakeLists.txt
+++ b/samples/iree_custom_modules/CMakeLists.txt
@@ -1,6 +1,6 @@
 ################################################################################
 # Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from           #
-# iree/samples/custom_modules/BUILD                                            #
+# samples/iree_custom_modules/BUILD                                            #
 #                                                                              #
 # Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary   #
 # CMake-only content.                                                          #
@@ -27,6 +27,7 @@
     iree::base::cc
     iree::hal
     iree::modules::hal
+    iree::samples::defs
     iree::vm
     iree::vm::cc
   PUBLIC
@@ -40,7 +41,7 @@
   C_IDENTIFIER
     "iree_samples_custom_modules_test_module"
   TRANSLATE_TOOL
-    iree_samples_custom_modules_dialect_custom-translate
+    iree_samples_iree_custom_modules_dialect_custom-translate
   FLAGS
     "-iree-mlir-to-vm-bytecode-module"
     "-iree-hal-target-backends=vmvx"
diff --git a/iree/samples/custom_modules/custom_modules_test.cc b/samples/iree_custom_modules/custom_modules_test.cc
similarity index 98%
rename from iree/samples/custom_modules/custom_modules_test.cc
rename to samples/iree_custom_modules/custom_modules_test.cc
index 0f024ad..6c2d687 100644
--- a/iree/samples/custom_modules/custom_modules_test.cc
+++ b/samples/iree_custom_modules/custom_modules_test.cc
@@ -10,13 +10,13 @@
 #include "iree/hal/api.h"
 #include "iree/hal/vmvx/registration/driver_module.h"
 #include "iree/modules/hal/module.h"
-#include "iree/samples/custom_modules/custom_modules_test_module_c.h"
-#include "iree/samples/custom_modules/module.h"
 #include "iree/testing/gtest.h"
 #include "iree/testing/status_matchers.h"
 #include "iree/vm/api.h"
 #include "iree/vm/bytecode_module.h"
 #include "iree/vm/ref_cc.h"
+#include "iree_custom_modules/custom_modules_test_module_c.h"
+#include "iree_custom_modules/module.h"
 
 namespace {
 
diff --git a/iree/samples/custom_modules/custom_modules_test.mlir b/samples/iree_custom_modules/custom_modules_test.mlir
similarity index 100%
rename from iree/samples/custom_modules/custom_modules_test.mlir
rename to samples/iree_custom_modules/custom_modules_test.mlir
diff --git a/iree/samples/custom_modules/dialect/BUILD b/samples/iree_custom_modules/dialect/BUILD
similarity index 96%
rename from iree/samples/custom_modules/dialect/BUILD
rename to samples/iree_custom_modules/dialect/BUILD
index 86c88be..295f5b6 100644
--- a/iree/samples/custom_modules/dialect/BUILD
+++ b/samples/iree_custom_modules/dialect/BUILD
@@ -46,6 +46,7 @@
         "//iree/compiler/Dialect/HAL/IR",
         "//iree/compiler/Dialect/Util/IR",
         "//iree/compiler/Dialect/VM/Conversion",
+        "//samples:defs",
         "@llvm-project//llvm:Support",
         "@llvm-project//mlir:IR",
         "@llvm-project//mlir:Parser",
@@ -86,6 +87,7 @@
     hdrs = ["init_dialect.h"],
     deps = [
         ":dialect",
+        "//samples:defs",
         "@llvm-project//mlir:IR",
     ],
 )
@@ -97,6 +99,7 @@
         ":init_dialect",
         "//iree/tools:init_passes_and_dialects",
         "//iree/tools:init_targets",
+        "//samples:defs",
         "@llvm-project//llvm:Support",
         "@llvm-project//mlir:IR",
         "@llvm-project//mlir:MlirOptLib",
@@ -118,6 +121,7 @@
         "//iree/tools:init_targets",
         "//iree/tools:init_translations",
         "//iree/tools:init_xla_dialects",
+        "//samples:defs",
         "@llvm-project//llvm:Support",
         "@llvm-project//mlir:IR",
         "@llvm-project//mlir:Pass",
diff --git a/iree/samples/custom_modules/dialect/CMakeLists.txt b/samples/iree_custom_modules/dialect/CMakeLists.txt
similarity index 93%
rename from iree/samples/custom_modules/dialect/CMakeLists.txt
rename to samples/iree_custom_modules/dialect/CMakeLists.txt
index 8068228..ebedb7c 100644
--- a/iree/samples/custom_modules/dialect/CMakeLists.txt
+++ b/samples/iree_custom_modules/dialect/CMakeLists.txt
@@ -1,6 +1,6 @@
 ################################################################################
 # Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from           #
-# iree/samples/custom_modules/dialect/BUILD                                    #
+# samples/iree_custom_modules/dialect/BUILD                                    #
 #                                                                              #
 # Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary   #
 # CMake-only content.                                                          #
@@ -34,6 +34,7 @@
     iree::compiler::Dialect::HAL::IR
     iree::compiler::Dialect::Util::IR
     iree::compiler::Dialect::VM::Conversion
+    iree::samples::defs
   PUBLIC
 )
 
@@ -70,6 +71,7 @@
   DEPS
     ::dialect
     MLIRIR
+    iree::samples::defs
   PUBLIC
 )
 
@@ -84,6 +86,7 @@
     MLIRIR
     MLIROptLib
     MLIRSupport
+    iree::samples::defs
     iree::tools::init_passes_and_dialects
     iree::tools::init_targets
 )
@@ -104,6 +107,7 @@
     iree::compiler::Dialect::VM::Target::Bytecode
     iree::compiler::Dialect::VM::Target::init_targets
     iree::compiler::Translation::IREEVM
+    iree::samples::defs
     iree::tools::init_compiler_modules
     iree::tools::init_iree_passes_and_dialects
     iree::tools::init_mlir_passes_and_dialects
diff --git a/iree/samples/custom_modules/dialect/conversion_patterns.cc b/samples/iree_custom_modules/dialect/conversion_patterns.cc
similarity index 94%
rename from iree/samples/custom_modules/dialect/conversion_patterns.cc
rename to samples/iree_custom_modules/dialect/conversion_patterns.cc
index 99de453..4639952 100644
--- a/iree/samples/custom_modules/dialect/conversion_patterns.cc
+++ b/samples/iree_custom_modules/dialect/conversion_patterns.cc
@@ -4,11 +4,11 @@
 // See https://llvm.org/LICENSE.txt for license information.
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
-#include "iree/samples/custom_modules/dialect/conversion_patterns.h"
+#include "iree_custom_modules/dialect/conversion_patterns.h"
 
 #include "iree/compiler/Dialect/HAL/Conversion/ConversionTarget.h"
 #include "iree/compiler/Dialect/VM/Conversion/ImportUtils.h"
-#include "iree/samples/custom_modules/dialect/custom_dialect.h"
+#include "iree_custom_modules/dialect/custom_dialect.h"
 
 namespace mlir {
 namespace iree_compiler {
diff --git a/iree/samples/custom_modules/dialect/conversion_patterns.h b/samples/iree_custom_modules/dialect/conversion_patterns.h
similarity index 100%
rename from iree/samples/custom_modules/dialect/conversion_patterns.h
rename to samples/iree_custom_modules/dialect/conversion_patterns.h
diff --git a/iree/samples/custom_modules/dialect/custom-opt-main.cc b/samples/iree_custom_modules/dialect/custom-opt-main.cc
similarity index 94%
rename from iree/samples/custom_modules/dialect/custom-opt-main.cc
rename to samples/iree_custom_modules/dialect/custom-opt-main.cc
index b383d02..c94a887 100644
--- a/iree/samples/custom_modules/dialect/custom-opt-main.cc
+++ b/samples/iree_custom_modules/dialect/custom-opt-main.cc
@@ -10,10 +10,10 @@
 // We need this entry function because we want to register the custom
 // dialect, which is missing in IREE's opt main entry function.
 
-#include "iree/samples/custom_modules/dialect/init_dialect.h"
 #include "iree/tools/init_dialects.h"
 #include "iree/tools/init_passes.h"
 #include "iree/tools/init_targets.h"
+#include "iree_custom_modules/dialect/init_dialect.h"
 #include "llvm/Support/InitLLVM.h"
 #include "mlir/IR/Dialect.h"
 #include "mlir/Tools/mlir-opt/MlirOptMain.h"
diff --git a/iree/samples/custom_modules/dialect/custom-translate-main.cc b/samples/iree_custom_modules/dialect/custom-translate-main.cc
similarity index 98%
rename from iree/samples/custom_modules/dialect/custom-translate-main.cc
rename to samples/iree_custom_modules/dialect/custom-translate-main.cc
index b8f0c55..7b84fb6 100644
--- a/iree/samples/custom_modules/dialect/custom-translate-main.cc
+++ b/samples/iree_custom_modules/dialect/custom-translate-main.cc
@@ -11,13 +11,13 @@
 // dialect, which is missing in IREE's translation main entry function.
 
 #include "iree/compiler/Dialect/VM/Target/init_targets.h"
-#include "iree/samples/custom_modules/dialect/init_dialect.h"
 #include "iree/tools/init_compiler_modules.h"
 #include "iree/tools/init_iree_dialects.h"
 #include "iree/tools/init_mlir_dialects.h"
 #include "iree/tools/init_targets.h"
 #include "iree/tools/init_translations.h"
 #include "iree/tools/init_xla_dialects.h"
+#include "iree_custom_modules/dialect/init_dialect.h"
 #include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/SourceMgr.h"
diff --git a/iree/samples/custom_modules/dialect/custom.imports.mlir b/samples/iree_custom_modules/dialect/custom.imports.mlir
similarity index 100%
rename from iree/samples/custom_modules/dialect/custom.imports.mlir
rename to samples/iree_custom_modules/dialect/custom.imports.mlir
diff --git a/iree/samples/custom_modules/dialect/custom_dialect.cc b/samples/iree_custom_modules/dialect/custom_dialect.cc
similarity index 90%
rename from iree/samples/custom_modules/dialect/custom_dialect.cc
rename to samples/iree_custom_modules/dialect/custom_dialect.cc
index 6e2a41c..d370f3c 100644
--- a/iree/samples/custom_modules/dialect/custom_dialect.cc
+++ b/samples/iree_custom_modules/dialect/custom_dialect.cc
@@ -4,12 +4,12 @@
 // See https://llvm.org/LICENSE.txt for license information.
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
-#include "iree/samples/custom_modules/dialect/custom_dialect.h"
+#include "iree_custom_modules/dialect/custom_dialect.h"
 
 #include "iree/compiler/Dialect/HAL/Conversion/ConversionDialectInterface.h"
 #include "iree/compiler/Dialect/VM/Conversion/ConversionDialectInterface.h"
-#include "iree/samples/custom_modules/dialect/conversion_patterns.h"
-#include "iree/samples/custom_modules/dialect/custom.imports.h"
+#include "iree_custom_modules/dialect/conversion_patterns.h"
+#include "iree_custom_modules/dialect/custom.imports.h"
 #include "llvm/ADT/StringSwitch.h"
 #include "mlir/IR/DialectImplementation.h"
 #include "mlir/IR/SymbolTable.h"
@@ -70,7 +70,7 @@
 
 #define GET_OP_LIST
   addOperations<
-#include "iree/samples/custom_modules/dialect/custom_ops.cc.inc"
+#include "iree_custom_modules/dialect/custom_ops.cc.inc"
       >();
 }
 
@@ -101,4 +101,4 @@
 }  // namespace mlir
 
 #define GET_OP_CLASSES
-#include "iree/samples/custom_modules/dialect/custom_ops.cc.inc"
+#include "iree_custom_modules/dialect/custom_ops.cc.inc"
diff --git a/iree/samples/custom_modules/dialect/custom_dialect.h b/samples/iree_custom_modules/dialect/custom_dialect.h
similarity index 94%
rename from iree/samples/custom_modules/dialect/custom_dialect.h
rename to samples/iree_custom_modules/dialect/custom_dialect.h
index 8ad6d1d..7d6aafe 100644
--- a/iree/samples/custom_modules/dialect/custom_dialect.h
+++ b/samples/iree_custom_modules/dialect/custom_dialect.h
@@ -38,6 +38,6 @@
 }  // namespace mlir
 
 #define GET_OP_CLASSES
-#include "iree/samples/custom_modules/dialect/custom_ops.h.inc"
+#include "iree_custom_modules/dialect/custom_ops.h.inc"
 
 #endif  // IREE_SAMPLES_CUSTOM_MODULES_DIALECT_CUSTOM_DIALECT_H_
diff --git a/iree/samples/custom_modules/dialect/custom_ops.td b/samples/iree_custom_modules/dialect/custom_ops.td
similarity index 100%
rename from iree/samples/custom_modules/dialect/custom_ops.td
rename to samples/iree_custom_modules/dialect/custom_ops.td
diff --git a/iree/samples/custom_modules/dialect/init_dialect.h b/samples/iree_custom_modules/dialect/init_dialect.h
similarity index 92%
rename from iree/samples/custom_modules/dialect/init_dialect.h
rename to samples/iree_custom_modules/dialect/init_dialect.h
index a234193..bfc7eb1 100644
--- a/iree/samples/custom_modules/dialect/init_dialect.h
+++ b/samples/iree_custom_modules/dialect/init_dialect.h
@@ -12,7 +12,7 @@
 #ifndef IREE_SAMPLES_CUSTOM_MODULES_DIALECT_INIT_DIALECT_H_
 #define IREE_SAMPLES_CUSTOM_MODULES_DIALECT_INIT_DIALECT_H_
 
-#include "iree/samples/custom_modules/dialect/custom_dialect.h"
+#include "iree_custom_modules/dialect/custom_dialect.h"
 #include "mlir/IR/Dialect.h"
 
 namespace mlir {
diff --git a/iree/samples/custom_modules/dialect/test/BUILD b/samples/iree_custom_modules/dialect/test/BUILD
similarity index 88%
rename from iree/samples/custom_modules/dialect/test/BUILD
rename to samples/iree_custom_modules/dialect/test/BUILD
index 5d7f742..d2bd44b 100644
--- a/iree/samples/custom_modules/dialect/test/BUILD
+++ b/samples/iree_custom_modules/dialect/test/BUILD
@@ -22,8 +22,9 @@
         ],
         include = ["*.mlir"],
     ),
+    cfg = "//samples:lit.cfg.py",
     tools = [
-        "//iree/samples/custom_modules/dialect:custom-opt",
+        "//samples/iree_custom_modules/dialect:custom-opt",
         "@llvm-project//llvm:FileCheck",
     ],
 )
diff --git a/iree/samples/custom_modules/dialect/test/CMakeLists.txt b/samples/iree_custom_modules/dialect/test/CMakeLists.txt
similarity index 87%
rename from iree/samples/custom_modules/dialect/test/CMakeLists.txt
rename to samples/iree_custom_modules/dialect/test/CMakeLists.txt
index 66b0c31..858871d 100644
--- a/iree/samples/custom_modules/dialect/test/CMakeLists.txt
+++ b/samples/iree_custom_modules/dialect/test/CMakeLists.txt
@@ -1,6 +1,6 @@
 ################################################################################
 # Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from           #
-# iree/samples/custom_modules/dialect/test/BUILD                               #
+# samples/iree_custom_modules/dialect/test/BUILD                               #
 #                                                                              #
 # Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary   #
 # CMake-only content.                                                          #
@@ -18,7 +18,7 @@
     "custom_ops.mlir"
   TOOLS
     FileCheck
-    iree::samples::custom_modules::dialect::custom-opt
+    iree::samples::iree_custom_modules::dialect::custom-opt
 )
 
 ### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###
diff --git a/iree/samples/custom_modules/dialect/test/conversion.mlir b/samples/iree_custom_modules/dialect/test/conversion.mlir
similarity index 100%
rename from iree/samples/custom_modules/dialect/test/conversion.mlir
rename to samples/iree_custom_modules/dialect/test/conversion.mlir
diff --git a/iree/samples/custom_modules/dialect/test/custom_ops.mlir b/samples/iree_custom_modules/dialect/test/custom_ops.mlir
similarity index 100%
rename from iree/samples/custom_modules/dialect/test/custom_ops.mlir
rename to samples/iree_custom_modules/dialect/test/custom_ops.mlir
diff --git a/iree/samples/custom_modules/module.cc b/samples/iree_custom_modules/module.cc
similarity index 99%
rename from iree/samples/custom_modules/module.cc
rename to samples/iree_custom_modules/module.cc
index abaca89..554ab87 100644
--- a/iree/samples/custom_modules/module.cc
+++ b/samples/iree_custom_modules/module.cc
@@ -4,7 +4,7 @@
 // See https://llvm.org/LICENSE.txt for license information.
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
-#include "iree/samples/custom_modules/module.h"
+#include "iree_custom_modules/module.h"
 
 #include <atomic>
 #include <cstdint>
diff --git a/iree/samples/custom_modules/module.h b/samples/iree_custom_modules/module.h
similarity index 100%
rename from iree/samples/custom_modules/module.h
rename to samples/iree_custom_modules/module.h
diff --git a/iree/samples/emitc_modules/CMakeLists.txt b/samples/iree_emitc_modules/CMakeLists.txt
similarity index 88%
rename from iree/samples/emitc_modules/CMakeLists.txt
rename to samples/iree_emitc_modules/CMakeLists.txt
index 6033299..503e96d 100644
--- a/iree/samples/emitc_modules/CMakeLists.txt
+++ b/samples/iree_emitc_modules/CMakeLists.txt
@@ -5,6 +5,10 @@
 # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
 if(IREE_ENABLE_EMITC)
+  # Configures all iree_cc_* targets to take this implicit dep,
+  # which provides common includes and copts for this directory.
+  set(IREE_IMPLICIT_DEFS_CC_DEPS iree::samples::defs)
+
   iree_c_module(
     NAME
       add_module
diff --git a/iree/samples/emitc_modules/add.mlir b/samples/iree_emitc_modules/add.mlir
similarity index 100%
rename from iree/samples/emitc_modules/add.mlir
rename to samples/iree_emitc_modules/add.mlir
diff --git a/iree/samples/emitc_modules/add_module_test.cc b/samples/iree_emitc_modules/add_module_test.cc
similarity index 98%
rename from iree/samples/emitc_modules/add_module_test.cc
rename to samples/iree_emitc_modules/add_module_test.cc
index 3b28999..c4ff57e 100644
--- a/iree/samples/emitc_modules/add_module_test.cc
+++ b/samples/iree_emitc_modules/add_module_test.cc
@@ -4,7 +4,7 @@
 // See https://llvm.org/LICENSE.txt for license information.
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
-#include "iree/samples/emitc_modules/add_module.h"
+#include "iree_emitc_modules/add_module.h"
 
 #include "iree/base/status_cc.h"
 #include "iree/testing/gtest.h"
diff --git a/iree/samples/emitc_modules/import_module_a.mlir b/samples/iree_emitc_modules/import_module_a.mlir
similarity index 100%
rename from iree/samples/emitc_modules/import_module_a.mlir
rename to samples/iree_emitc_modules/import_module_a.mlir
diff --git a/iree/samples/emitc_modules/import_module_b.mlir b/samples/iree_emitc_modules/import_module_b.mlir
similarity index 100%
rename from iree/samples/emitc_modules/import_module_b.mlir
rename to samples/iree_emitc_modules/import_module_b.mlir
diff --git a/iree/samples/emitc_modules/import_module_test.cc b/samples/iree_emitc_modules/import_module_test.cc
similarity index 96%
rename from iree/samples/emitc_modules/import_module_test.cc
rename to samples/iree_emitc_modules/import_module_test.cc
index b8218b6..4455f08 100644
--- a/iree/samples/emitc_modules/import_module_test.cc
+++ b/samples/iree_emitc_modules/import_module_test.cc
@@ -5,12 +5,12 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
 #include "iree/base/status_cc.h"
-#include "iree/samples/emitc_modules/import_module_a.h"
-#include "iree/samples/emitc_modules/import_module_b.h"
 #include "iree/testing/gtest.h"
 #include "iree/testing/status_matchers.h"
 #include "iree/vm/api.h"
 #include "iree/vm/ref_cc.h"
+#include "iree_emitc_modules/import_module_a.h"
+#include "iree_emitc_modules/import_module_b.h"
 
 namespace iree {
 namespace {
diff --git a/iree/samples/simple_embedding/BUILD b/samples/iree_simple_embedding/BUILD
similarity index 96%
rename from iree/samples/simple_embedding/BUILD
rename to samples/iree_simple_embedding/BUILD
index 3bd66ed..04e7b43 100644
--- a/iree/samples/simple_embedding/BUILD
+++ b/samples/iree_simple_embedding/BUILD
@@ -50,6 +50,9 @@
         "-iree-mlir-to-vm-bytecode-module",
         "-iree-hal-target-backends=vmvx",
     ],
+    deps = [
+        "//samples:defs",
+    ],
 )
 
 native_test(
@@ -108,6 +111,9 @@
         "-iree-vm-bytecode-module-strip-source-map=true",
         "-iree-vm-emit-polyglot-zip=false",
     ],
+    deps = [
+        "//samples:defs",
+    ],
 )
 
 iree_bytecode_module(
@@ -126,6 +132,9 @@
         "-iree-vm-bytecode-module-strip-source-map=true",
         "-iree-vm-emit-polyglot-zip=false",
     ],
+    deps = [
+        "//samples:defs",
+    ],
 )
 
 iree_bytecode_module(
@@ -144,6 +153,9 @@
         "-iree-vm-bytecode-module-strip-source-map=true",
         "-iree-vm-emit-polyglot-zip=false",
     ],
+    deps = [
+        "//samples:defs",
+    ],
 )
 
 iree_bytecode_module(
@@ -160,6 +172,9 @@
         "-iree-vm-bytecode-module-strip-source-map=true",
         "-iree-vm-emit-polyglot-zip=false",
     ],
+    deps = [
+        "//samples:defs",
+    ],
 )
 
 iree_bytecode_module(
@@ -175,6 +190,9 @@
         "-iree-vm-bytecode-module-strip-source-map=true",
         "-iree-vm-emit-polyglot-zip=false",
     ],
+    deps = [
+        "//samples:defs",
+    ],
 )
 
 native_test(
@@ -259,6 +277,9 @@
         "-iree-hal-target-backends=vulkan-spirv",
         "-iree-llvm-debug-symbols=false",
     ],
+    deps = [
+        "//samples:defs",
+    ],
 )
 
 native_test(
diff --git a/iree/samples/simple_embedding/CMakeLists.txt b/samples/iree_simple_embedding/CMakeLists.txt
similarity index 95%
rename from iree/samples/simple_embedding/CMakeLists.txt
rename to samples/iree_simple_embedding/CMakeLists.txt
index e9dfde1..c93e9a1 100644
--- a/iree/samples/simple_embedding/CMakeLists.txt
+++ b/samples/iree_simple_embedding/CMakeLists.txt
@@ -1,6 +1,6 @@
 ################################################################################
 # Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from           #
-# iree/samples/simple_embedding/BUILD                                          #
+# samples/iree_simple_embedding/BUILD                                          #
 #                                                                              #
 # Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary   #
 # CMake-only content.                                                          #
@@ -42,6 +42,8 @@
     "-iree-input-type=mhlo"
     "-iree-mlir-to-vm-bytecode-module"
     "-iree-hal-target-backends=vmvx"
+  DEPS
+    iree::samples::defs
   PUBLIC
 )
 
@@ -94,6 +96,8 @@
     "-iree-llvm-debug-symbols=false"
     "-iree-vm-bytecode-module-strip-source-map=true"
     "-iree-vm-emit-polyglot-zip=false"
+  DEPS
+    iree::samples::defs
   PUBLIC
 )
 
@@ -115,6 +119,8 @@
     "-iree-llvm-debug-symbols=false"
     "-iree-vm-bytecode-module-strip-source-map=true"
     "-iree-vm-emit-polyglot-zip=false"
+  DEPS
+    iree::samples::defs
   PUBLIC
 )
 
@@ -136,6 +142,8 @@
     "-iree-llvm-debug-symbols=false"
     "-iree-vm-bytecode-module-strip-source-map=true"
     "-iree-vm-emit-polyglot-zip=false"
+  DEPS
+    iree::samples::defs
   PUBLIC
 )
 
@@ -155,6 +163,8 @@
     "-iree-llvm-debug-symbols=false"
     "-iree-vm-bytecode-module-strip-source-map=true"
     "-iree-vm-emit-polyglot-zip=false"
+  DEPS
+    iree::samples::defs
   PUBLIC
 )
 
@@ -173,6 +183,8 @@
     "-iree-llvm-debug-symbols=false"
     "-iree-vm-bytecode-module-strip-source-map=true"
     "-iree-vm-emit-polyglot-zip=false"
+  DEPS
+    iree::samples::defs
   PUBLIC
 )
 
@@ -247,6 +259,8 @@
     "-iree-mlir-to-vm-bytecode-module"
     "-iree-hal-target-backends=vulkan-spirv"
     "-iree-llvm-debug-symbols=false"
+  DEPS
+    iree::samples::defs
   PUBLIC
 )
 
diff --git a/iree/samples/simple_embedding/README.md b/samples/iree_simple_embedding/README.md
similarity index 100%
rename from iree/samples/simple_embedding/README.md
rename to samples/iree_simple_embedding/README.md
diff --git a/iree/samples/simple_embedding/device_cuda.c b/samples/iree_simple_embedding/device_cuda.c
similarity index 94%
rename from iree/samples/simple_embedding/device_cuda.c
rename to samples/iree_simple_embedding/device_cuda.c
index 06f439d..0e273f4 100644
--- a/iree/samples/simple_embedding/device_cuda.c
+++ b/samples/iree_simple_embedding/device_cuda.c
@@ -13,7 +13,7 @@
 #include "iree/hal/cuda/registration/driver_module.h"
 
 // Compiled module embedded here to avoid file IO:
-#include "iree/samples/simple_embedding/simple_embedding_test_bytecode_module_cuda_c.h"
+#include "iree_simple_embedding/simple_embedding_test_bytecode_module_cuda_c.h"
 
 iree_status_t create_sample_device(iree_allocator_t host_allocator,
                                    iree_hal_device_t** out_device) {
diff --git a/iree/samples/simple_embedding/device_dylib.c b/samples/iree_simple_embedding/device_dylib.c
similarity index 90%
rename from iree/samples/simple_embedding/device_dylib.c
rename to samples/iree_simple_embedding/device_dylib.c
index e8ab727..0e19c33 100644
--- a/iree/samples/simple_embedding/device_dylib.c
+++ b/samples/iree_simple_embedding/device_dylib.c
@@ -16,9 +16,9 @@
 #include "iree/task/api.h"
 
 // Compiled module embedded here to avoid file IO:
-#include "iree/samples/simple_embedding/simple_embedding_test_bytecode_module_dylib_arm_64_c.h"
-#include "iree/samples/simple_embedding/simple_embedding_test_bytecode_module_dylib_riscv_64_c.h"
-#include "iree/samples/simple_embedding/simple_embedding_test_bytecode_module_dylib_x86_64_c.h"
+#include "iree_simple_embedding/simple_embedding_test_bytecode_module_dylib_arm_64_c.h"
+#include "iree_simple_embedding/simple_embedding_test_bytecode_module_dylib_riscv_64_c.h"
+#include "iree_simple_embedding/simple_embedding_test_bytecode_module_dylib_x86_64_c.h"
 
 iree_status_t create_sample_device(iree_allocator_t host_allocator,
                                    iree_hal_device_t** out_device) {
diff --git a/iree/samples/simple_embedding/device_embedded_sync.c b/samples/iree_simple_embedding/device_embedded_sync.c
similarity index 84%
rename from iree/samples/simple_embedding/device_embedded_sync.c
rename to samples/iree_simple_embedding/device_embedded_sync.c
index edd6565..d400394 100644
--- a/iree/samples/simple_embedding/device_embedded_sync.c
+++ b/samples/iree_simple_embedding/device_embedded_sync.c
@@ -16,15 +16,15 @@
 
 // Compiled module embedded here to avoid file IO:
 #if IREE_ARCH_ARM_32
-#include "iree/samples/simple_embedding/simple_embedding_test_bytecode_module_dylib_arm_32_c.h"
+#include "iree_simple_embedding/simple_embedding_test_bytecode_module_dylib_arm_32_c.h"
 #elif IREE_ARCH_ARM_64
-#include "iree/samples/simple_embedding/simple_embedding_test_bytecode_module_dylib_arm_64_c.h"
+#include "iree_simple_embedding/simple_embedding_test_bytecode_module_dylib_arm_64_c.h"
 #elif IREE_ARCH_RISCV_32
-#include "iree/samples/simple_embedding/simple_embedding_test_bytecode_module_dylib_riscv_32_c.h"
+#include "iree_simple_embedding/simple_embedding_test_bytecode_module_dylib_riscv_32_c.h"
 #elif IREE_ARCH_RISCV_64
-#include "iree/samples/simple_embedding/simple_embedding_test_bytecode_module_dylib_riscv_64_c.h"
+#include "iree_simple_embedding/simple_embedding_test_bytecode_module_dylib_riscv_64_c.h"
 #elif IREE_ARCH_X86_64
-#include "iree/samples/simple_embedding/simple_embedding_test_bytecode_module_dylib_x86_64_c.h"
+#include "iree_simple_embedding/simple_embedding_test_bytecode_module_dylib_x86_64_c.h"
 #endif
 
 iree_status_t create_sample_device(iree_allocator_t host_allocator,
diff --git a/iree/samples/simple_embedding/device_vmvx_sync.c b/samples/iree_simple_embedding/device_vmvx_sync.c
similarity index 95%
rename from iree/samples/simple_embedding/device_vmvx_sync.c
rename to samples/iree_simple_embedding/device_vmvx_sync.c
index 44f2a72..417c48d 100644
--- a/iree/samples/simple_embedding/device_vmvx_sync.c
+++ b/samples/iree_simple_embedding/device_vmvx_sync.c
@@ -15,7 +15,7 @@
 #include "iree/hal/local/sync_device.h"
 
 // Compiled module embedded here to avoid file IO:
-#include "iree/samples/simple_embedding/simple_embedding_test_bytecode_module_vmvx_c.h"
+#include "iree_simple_embedding/simple_embedding_test_bytecode_module_vmvx_c.h"
 
 iree_status_t create_sample_device(iree_allocator_t host_allocator,
                                    iree_hal_device_t** out_device) {
diff --git a/iree/samples/simple_embedding/device_vulkan.c b/samples/iree_simple_embedding/device_vulkan.c
similarity index 94%
rename from iree/samples/simple_embedding/device_vulkan.c
rename to samples/iree_simple_embedding/device_vulkan.c
index c77e164..e0a6004 100644
--- a/iree/samples/simple_embedding/device_vulkan.c
+++ b/samples/iree_simple_embedding/device_vulkan.c
@@ -13,7 +13,7 @@
 #include "iree/hal/vulkan/registration/driver_module.h"
 
 // Compiled module embedded here to avoid file IO:
-#include "iree/samples/simple_embedding/simple_embedding_test_bytecode_module_vulkan_c.h"
+#include "iree_simple_embedding/simple_embedding_test_bytecode_module_vulkan_c.h"
 
 iree_status_t create_sample_device(iree_allocator_t host_allocator,
                                    iree_hal_device_t** out_device) {
diff --git a/iree/samples/simple_embedding/simple_embedding.c b/samples/iree_simple_embedding/simple_embedding.c
similarity index 100%
rename from iree/samples/simple_embedding/simple_embedding.c
rename to samples/iree_simple_embedding/simple_embedding.c
diff --git a/iree/samples/simple_embedding/simple_embedding_test.mlir b/samples/iree_simple_embedding/simple_embedding_test.mlir
similarity index 100%
rename from iree/samples/simple_embedding/simple_embedding_test.mlir
rename to samples/iree_simple_embedding/simple_embedding_test.mlir
diff --git a/iree/samples/static_library/CMakeLists.txt b/samples/iree_static_library/CMakeLists.txt
similarity index 96%
rename from iree/samples/static_library/CMakeLists.txt
rename to samples/iree_static_library/CMakeLists.txt
index 9e0c3a7..7faf056 100644
--- a/iree/samples/static_library/CMakeLists.txt
+++ b/samples/iree_static_library/CMakeLists.txt
@@ -10,6 +10,11 @@
   return()
 endif()
 
+
+# Configures all iree_cc_* targets to take this implicit dep,
+# which provides common includes and copts for this directory.
+set(IREE_IMPLICIT_DEFS_CC_DEPS iree::samples::defs)
+
 # Set iree-compile binary.
 set(_COMPILE_TOOL_EXECUTABLE $<TARGET_FILE:iree_tools_iree-compile>)
 
diff --git a/iree/samples/static_library/README.md b/samples/iree_static_library/README.md
similarity index 100%
rename from iree/samples/static_library/README.md
rename to samples/iree_static_library/README.md
diff --git a/iree/samples/static_library/create_bytecode_module.c b/samples/iree_static_library/create_bytecode_module.c
similarity index 93%
rename from iree/samples/static_library/create_bytecode_module.c
rename to samples/iree_static_library/create_bytecode_module.c
index 70e31f2..1689015 100644
--- a/iree/samples/static_library/create_bytecode_module.c
+++ b/samples/iree_static_library/create_bytecode_module.c
@@ -5,8 +5,8 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 #include <stdio.h>
 
-#include "iree/samples/static_library/simple_mul_c.h"
 #include "iree/vm/bytecode_module.h"
+#include "iree_static_library/simple_mul_c.h"
 
 // A function to create the bytecode module.
 iree_status_t create_module(iree_vm_module_t** module) {
diff --git a/iree/samples/static_library/create_c_module.c b/samples/iree_static_library/create_c_module.c
similarity index 88%
rename from iree/samples/static_library/create_c_module.c
rename to samples/iree_static_library/create_c_module.c
index c4939f2..8a1b1a4 100644
--- a/iree/samples/static_library/create_c_module.c
+++ b/samples/iree_static_library/create_c_module.c
@@ -5,7 +5,7 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 #include <stdio.h>
 
-#include "iree/samples/static_library/simple_mul_emitc.h"
+#include "iree_static_library/simple_mul_emitc.h"
 
 // A function to create the C module.
 iree_status_t create_module(iree_vm_module_t** module) {
diff --git a/iree/samples/static_library/simple_mul.mlir b/samples/iree_static_library/simple_mul.mlir
similarity index 100%
rename from iree/samples/static_library/simple_mul.mlir
rename to samples/iree_static_library/simple_mul.mlir
diff --git a/iree/samples/static_library/static_library_demo.c b/samples/iree_static_library/static_library_demo.c
similarity index 100%
rename from iree/samples/static_library/static_library_demo.c
rename to samples/iree_static_library/static_library_demo.c
diff --git a/iree/samples/static_library/static_library_demo_c_test.txt b/samples/iree_static_library/static_library_demo_c_test.txt
similarity index 100%
rename from iree/samples/static_library/static_library_demo_c_test.txt
rename to samples/iree_static_library/static_library_demo_c_test.txt
diff --git a/iree/samples/static_library/static_library_demo_test.txt b/samples/iree_static_library/static_library_demo_test.txt
similarity index 100%
rename from iree/samples/static_library/static_library_demo_test.txt
rename to samples/iree_static_library/static_library_demo_test.txt
diff --git a/iree/samples/vision/CMakeLists.txt b/samples/iree_vision_inference/CMakeLists.txt
similarity index 92%
rename from iree/samples/vision/CMakeLists.txt
rename to samples/iree_vision_inference/CMakeLists.txt
index e44fd2b..890980b 100644
--- a/iree/samples/vision/CMakeLists.txt
+++ b/samples/iree_vision_inference/CMakeLists.txt
@@ -20,6 +20,8 @@
     "-iree-input-type=mhlo"
     "-iree-mlir-to-vm-bytecode-module"
     "-iree-hal-target-backends=dylib-llvm-aot"
+  DEPS
+    iree::samples::defs
   PUBLIC
 )
 
@@ -31,7 +33,7 @@
   SRCS
     "iree-run-mnist-module.c"
   DATA
-    "iree/samples/vision/mnist_test.png"
+    "samples/iree_vision_inference/mnist_test.png"
   DEPS
     ::mnist_bytecode_module_c
     iree::runtime
diff --git a/iree/samples/vision/iree-run-mnist-module.c b/samples/iree_vision_inference/iree-run-mnist-module.c
similarity index 98%
rename from iree/samples/vision/iree-run-mnist-module.c
rename to samples/iree_vision_inference/iree-run-mnist-module.c
index 9168e8f..b7a9cb8 100644
--- a/iree/samples/vision/iree-run-mnist-module.c
+++ b/samples/iree_vision_inference/iree-run-mnist-module.c
@@ -11,8 +11,8 @@
 #include <float.h>
 
 #include "iree/runtime/api.h"
-#include "iree/samples/vision/mnist_bytecode_module_c.h"
 #include "iree/tools/utils/image_util.h"
+#include "iree_vision_inference/mnist_bytecode_module_c.h"
 
 iree_status_t Run(const iree_string_view_t image_path) {
   iree_runtime_instance_options_t instance_options;
diff --git a/iree/samples/vision/mnist_test.png b/samples/iree_vision_inference/mnist_test.png
similarity index 100%
rename from iree/samples/vision/mnist_test.png
rename to samples/iree_vision_inference/mnist_test.png
Binary files differ
diff --git a/iree/samples/vision/mnist_test.txt b/samples/iree_vision_inference/mnist_test.txt
similarity index 100%
rename from iree/samples/vision/mnist_test.txt
rename to samples/iree_vision_inference/mnist_test.txt
diff --git a/samples/lit.cfg.py b/samples/lit.cfg.py
new file mode 100644
index 0000000..77a0498
--- /dev/null
+++ b/samples/lit.cfg.py
@@ -0,0 +1,32 @@
+# Copyright 2022 The IREE Authors
+#
+# Licensed under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+"""Lit config for IREE."""
+
+# Lint for undefined variables is disabled as config is not defined inside this
+# file, instead config is injected by way of evaluating runlit.cfg.py from
+# runlit.site.cfg.py which in turn is evaluated by lit.py.
+# pylint: disable=undefined-variable
+
+import os
+import tempfile
+
+import lit.formats
+
+config.name = "IREE"
+config.suffixes = [".mlir", ".txt"]
+config.test_format = lit.formats.ShTest(execute_external=True)
+# Forward all IREE environment variables
+passthrough_env_vars = ["VK_ICD_FILENAMES"]
+config.environment.update({
+    k: v
+    for k, v in os.environ.items()
+    if k.startswith("IREE_") or k in passthrough_env_vars
+})
+
+# Use the most preferred temp directory.
+config.test_exec_root = (os.environ.get("TEST_UNDECLARED_OUTPUTS_DIR") or
+                         os.environ.get("TEST_TMPDIR") or
+                         os.path.join(tempfile.gettempdir(), "lit"))
diff --git a/iree/samples/models/README.md b/samples/models/README.md
similarity index 100%
rename from iree/samples/models/README.md
rename to samples/models/README.md
diff --git a/iree/samples/models/mnist.mlir b/samples/models/mnist.mlir
similarity index 100%
rename from iree/samples/models/mnist.mlir
rename to samples/models/mnist.mlir
diff --git a/iree/samples/models/simple_abs.mlir b/samples/models/simple_abs.mlir
similarity index 100%
rename from iree/samples/models/simple_abs.mlir
rename to samples/models/simple_abs.mlir
diff --git a/iree/samples/variables_and_state/CMakeLists.txt b/samples/variables_and_state/CMakeLists.txt
similarity index 100%
rename from iree/samples/variables_and_state/CMakeLists.txt
rename to samples/variables_and_state/CMakeLists.txt
diff --git a/iree/samples/variables_and_state/README.md b/samples/variables_and_state/README.md
similarity index 100%
rename from iree/samples/variables_and_state/README.md
rename to samples/variables_and_state/README.md
diff --git a/iree/samples/variables_and_state/main.c b/samples/variables_and_state/main.c
similarity index 100%
rename from iree/samples/variables_and_state/main.c
rename to samples/variables_and_state/main.c
diff --git a/iree/samples/variables_and_state/test.sh b/samples/variables_and_state/test.sh
similarity index 100%
rename from iree/samples/variables_and_state/test.sh
rename to samples/variables_and_state/test.sh
diff --git a/iree/samples/variables_and_state/variables_and_state.ipynb b/samples/variables_and_state/variables_and_state.ipynb
similarity index 100%
rename from iree/samples/variables_and_state/variables_and_state.ipynb
rename to samples/variables_and_state/variables_and_state.ipynb
diff --git a/iree/samples/vulkan/CMakeLists.txt b/samples/vulkan/CMakeLists.txt
similarity index 100%
rename from iree/samples/vulkan/CMakeLists.txt
rename to samples/vulkan/CMakeLists.txt
diff --git a/iree/samples/vulkan/simple_mul.mlir b/samples/vulkan/simple_mul.mlir
similarity index 100%
rename from iree/samples/vulkan/simple_mul.mlir
rename to samples/vulkan/simple_mul.mlir
diff --git a/iree/samples/vulkan/vulkan_inference_gui.cc b/samples/vulkan/vulkan_inference_gui.cc
similarity index 100%
rename from iree/samples/vulkan/vulkan_inference_gui.cc
rename to samples/vulkan/vulkan_inference_gui.cc