Add CMake guards to allow building just IREE's runtime (#4279) The runtime can be built by setting IREE_BUILD_COMPILER=OFF and IREE_ENABLE_MLIR=OFF. Fixes #4155 * Add CMake guards to allow building just IREE's runtime * Clean up iree_lit_tests and iree_check_tests by adding guards against building them directly, rather than in the files that use them * Load iree_cmake_extra_content in BUILD files * Update CMake guards to return from the file to avoid weird indents
diff --git a/CMakeLists.txt b/CMakeLists.txt index b9f3888..4915a0f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -501,11 +501,7 @@ add_subdirectory(iree/schemas) add_subdirectory(iree/testing) add_subdirectory(iree/test) - -if(${IREE_ENABLE_MLIR}) - # The VM requires LLVM to build its op definitions. - add_subdirectory(iree/vm) -endif() +add_subdirectory(iree/vm) if(${IREE_BUILD_COMPILER}) add_subdirectory(iree/compiler)
diff --git a/bindings/javatests/CMakeLists.txt b/bindings/javatests/CMakeLists.txt index 268f43b..cec74ee 100644 --- a/bindings/javatests/CMakeLists.txt +++ b/bindings/javatests/CMakeLists.txt
@@ -12,4 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +if (NOT ${IREE_BUILD_TESTS}) + return() +endif() + add_subdirectory(com/google/iree)
diff --git a/bindings/javatests/com/google/iree/CMakeLists.txt b/bindings/javatests/com/google/iree/CMakeLists.txt index 15f9896..1d983f2 100644 --- a/bindings/javatests/com/google/iree/CMakeLists.txt +++ b/bindings/javatests/com/google/iree/CMakeLists.txt
@@ -12,25 +12,27 @@ # See the License for the specific language governing permissions and # limitations under the License. -iree_bytecode_module( - NAME - simple_mul_bytecode_module - SRC - "simple_mul.mlir" - CC_NAMESPACE - "iree::java" - FLAGS - "-iree-mlir-to-vm-bytecode-module" - "-iree-hal-target-backends=vmla" -) +if(${IREE_BUILD_COMPILER}) + iree_bytecode_module( + NAME + simple_mul_bytecode_module + SRC + "simple_mul.mlir" + CC_NAMESPACE + "iree::java" + FLAGS + "-iree-mlir-to-vm-bytecode-module" + "-iree-hal-target-backends=vmla" + ) -iree_cc_binary( - NAME - integration_test - SRCS - "integration_test.cc" - DEPS - bindings::java::com::google::iree::native::cc_wrappers - bindings::javatests::com::google::iree::simple_mul_bytecode_module_cc - iree::base::status -) + iree_cc_binary( + NAME + integration_test + SRCS + "integration_test.cc" + DEPS + bindings::java::com::google::iree::native::cc_wrappers + bindings::javatests::com::google::iree::simple_mul_bytecode_module_cc + iree::base::status + ) +endif()
diff --git a/build_tools/cmake/iree_check_test.cmake b/build_tools/cmake/iree_check_test.cmake index 2974a93..e2a69ed 100644 --- a/build_tools/cmake/iree_check_test.cmake +++ b/build_tools/cmake/iree_check_test.cmake
@@ -32,7 +32,7 @@ # LABELS: Additional labels to apply to the test. The package path and # "driver=${DRIVER}" are added automatically. function(iree_check_test) - if(NOT IREE_BUILD_TESTS) + if(NOT IREE_BUILD_TESTS OR NOT IREE_BUILD_COMPILER) return() endif() @@ -180,7 +180,7 @@ # LABELS: Additional labels to apply to the generated tests. The package path is # added automatically. function(iree_check_single_backend_test_suite) - if(NOT IREE_BUILD_TESTS) + if(NOT IREE_BUILD_TESTS OR NOT IREE_BUILD_COMPILER) return() endif() @@ -249,7 +249,7 @@ # LABELS: Additional labels to apply to the generated tests. The package path is # added automatically. function(iree_check_test_suite) - if(NOT IREE_BUILD_TESTS) + if(NOT IREE_BUILD_TESTS OR NOT IREE_BUILD_COMPILER) return() endif()
diff --git a/build_tools/cmake/iree_lit_test.cmake b/build_tools/cmake/iree_lit_test.cmake index 1a80cb4..0a36455 100644 --- a/build_tools/cmake/iree_lit_test.cmake +++ b/build_tools/cmake/iree_lit_test.cmake
@@ -31,7 +31,7 @@ # TODO(gcmn): allow using alternative driver # A driver other than the default iree/tools/run_lit.sh is not currently supported. function(iree_lit_test) - if(NOT IREE_BUILD_TESTS) + if(NOT IREE_BUILD_TESTS OR NOT IREE_BUILD_COMPILER) return() endif() @@ -108,7 +108,7 @@ # TODO(gcmn): allow using alternative driver # A driver other than the default iree/tools/run_lit.sh is not currently supported. function(iree_lit_test_suite) - if(NOT IREE_BUILD_TESTS) + if(NOT IREE_BUILD_TESTS OR NOT IREE_BUILD_COMPILER) return() endif()
diff --git a/iree/modules/strings/BUILD b/iree/modules/strings/BUILD index fcb1a40..da6012d 100644 --- a/iree/modules/strings/BUILD +++ b/iree/modules/strings/BUILD
@@ -1,3 +1,4 @@ +load("//iree:build_defs.oss.bzl", "iree_cmake_extra_content") load("//iree/tools:compilation.bzl", "iree_bytecode_module") package( @@ -31,6 +32,15 @@ ], ) +iree_cmake_extra_content( + content = """ +if (NOT ${IREE_BUILD_COMPILER} OR NOT ${IREE_BUILD_TESTS}) + return() +endif() +""", + inline = True, +) + cc_test( name = "strings_module_test", srcs = ["strings_module_test.cc"],
diff --git a/iree/modules/strings/CMakeLists.txt b/iree/modules/strings/CMakeLists.txt index 5aac9ba..4dcbcf0 100644 --- a/iree/modules/strings/CMakeLists.txt +++ b/iree/modules/strings/CMakeLists.txt
@@ -38,6 +38,10 @@ PUBLIC ) +if (NOT ${IREE_BUILD_COMPILER} OR NOT ${IREE_BUILD_TESTS}) + return() +endif() + iree_cc_test( NAME strings_module_test
diff --git a/iree/modules/tensorlist/BUILD b/iree/modules/tensorlist/BUILD index 74deecd..86f1c2a 100644 --- a/iree/modules/tensorlist/BUILD +++ b/iree/modules/tensorlist/BUILD
@@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +load("//iree:build_defs.oss.bzl", "iree_cmake_extra_content") load("//iree/tools:compilation.bzl", "iree_bytecode_module") package( @@ -20,6 +21,32 @@ licenses = ["notice"], # Apache 2.0 ) +cc_library( + name = "native_module", + srcs = ["native_module.cc"], + hdrs = ["native_module.h"], + deps = [ + "//iree/base:api", + "//iree/base:ref_ptr", + "//iree/base:status", + "//iree/hal:api", + "//iree/modules/hal", + "//iree/vm", + "//iree/vm:cc", + "@com_google_absl//absl/container:inlined_vector", + "@com_google_absl//absl/types:span", + ], +) + +iree_cmake_extra_content( + content = """ +if (NOT ${IREE_BUILD_COMPILER} OR NOT ${IREE_BUILD_TESTS}) + return() +endif() +""", + inline = True, +) + iree_bytecode_module( name = "tensorlist_test_module", src = "tensorlist_test.mlir", @@ -49,20 +76,3 @@ "@com_google_absl//absl/types:span", ], ) - -cc_library( - name = "native_module", - srcs = ["native_module.cc"], - hdrs = ["native_module.h"], - deps = [ - "//iree/base:api", - "//iree/base:ref_ptr", - "//iree/base:status", - "//iree/hal:api", - "//iree/modules/hal", - "//iree/vm", - "//iree/vm:cc", - "@com_google_absl//absl/container:inlined_vector", - "@com_google_absl//absl/types:span", - ], -)
diff --git a/iree/modules/tensorlist/CMakeLists.txt b/iree/modules/tensorlist/CMakeLists.txt index 1092601..a82e5f5 100644 --- a/iree/modules/tensorlist/CMakeLists.txt +++ b/iree/modules/tensorlist/CMakeLists.txt
@@ -14,6 +14,30 @@ iree_add_all_subdirs() +iree_cc_library( + NAME + native_module + HDRS + "native_module.h" + SRCS + "native_module.cc" + DEPS + absl::inlined_vector + absl::span + iree::base::api + iree::base::ref_ptr + iree::base::status + iree::hal::api + iree::modules::hal + iree::vm + iree::vm::cc + PUBLIC +) + +if (NOT ${IREE_BUILD_COMPILER} OR NOT ${IREE_BUILD_TESTS}) + return() +endif() + iree_bytecode_module( NAME tensorlist_test_module @@ -49,23 +73,3 @@ iree::vm::bytecode_module iree::vm::cc ) - -iree_cc_library( - NAME - native_module - HDRS - "native_module.h" - SRCS - "native_module.cc" - DEPS - absl::inlined_vector - absl::span - iree::base::api - iree::base::ref_ptr - iree::base::status - iree::hal::api - iree::modules::hal - iree::vm - iree::vm::cc - PUBLIC -)
diff --git a/iree/vm/BUILD b/iree/vm/BUILD index e613f40..17d82ab 100644 --- a/iree/vm/BUILD +++ b/iree/vm/BUILD
@@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +load("//iree:build_defs.oss.bzl", "iree_cmake_extra_content") load("//iree/tools:compilation.bzl", "iree_bytecode_module") package( @@ -212,6 +213,13 @@ # ], # ) +iree_cmake_extra_content( + content = """ +if(${IREE_BUILD_COMPILER} AND ${IREE_BUILD_TESTS}) +""", + inline = True, +) + cc_test( name = "bytecode_module_test", srcs = [ @@ -271,6 +279,13 @@ flags = ["-iree-vm-ir-to-bytecode-module"], ) +iree_cmake_extra_content( + content = """ +endif() +""", + inline = True, +) + #===------------------------------------------------------------------------===# # Emit-C modules #===------------------------------------------------------------------------===#
diff --git a/iree/vm/CMakeLists.txt b/iree/vm/CMakeLists.txt index dd6d63e..88c3fb7 100644 --- a/iree/vm/CMakeLists.txt +++ b/iree/vm/CMakeLists.txt
@@ -177,6 +177,8 @@ PUBLIC ) +if(${IREE_BUILD_COMPILER} AND ${IREE_BUILD_TESTS}) + iree_cc_test( NAME bytecode_module_test @@ -247,6 +249,8 @@ PUBLIC ) +endif() + iree_cc_library( NAME c_funcs
diff --git a/iree/vm/test/BUILD b/iree/vm/test/BUILD index 616efd0..b2ed44d 100644 --- a/iree/vm/test/BUILD +++ b/iree/vm/test/BUILD
@@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +load("//iree:build_defs.oss.bzl", "iree_cmake_extra_content") load("//iree/tools:compilation.bzl", "iree_bytecode_module") load("//build_tools/embed_data:build_defs.bzl", "cc_embed_data") @@ -21,6 +22,15 @@ licenses = ["notice"], # Apache 2.0 ) +iree_cmake_extra_content( + content = """ +if (NOT ${IREE_BUILD_COMPILER} OR NOT ${IREE_BUILD_TESTS}) + return() +endif() +""", + inline = True, +) + cc_embed_data( name = "all_bytecode_modules_cc", srcs = [
diff --git a/iree/vm/test/CMakeLists.txt b/iree/vm/test/CMakeLists.txt index 282b4cf..3f86f3f 100644 --- a/iree/vm/test/CMakeLists.txt +++ b/iree/vm/test/CMakeLists.txt
@@ -14,6 +14,10 @@ iree_add_all_subdirs() +if (NOT ${IREE_BUILD_COMPILER} OR NOT ${IREE_BUILD_TESTS}) + return() +endif() + iree_cc_embed_data( NAME all_bytecode_modules_cc