Refactoring build rules to support custom tools.

PiperOrigin-RevId: 285470582
diff --git a/iree/tools/BUILD b/iree/tools/BUILD
index cacd36f..0ec5cab 100644
--- a/iree/tools/BUILD
+++ b/iree/tools/BUILD
@@ -32,8 +32,8 @@
     "//iree/compiler/Dialect/HAL/Target/VulkanSPIRV",
 ]
 
-cc_binary(
-    name = "iree-opt",
+cc_library(
+    name = "iree_opt_library",
     deps = [
         "//integrations/tensorflow/compiler:tensorflow",
         "//iree/compiler/Dialect",
@@ -56,12 +56,20 @@
         "@llvm//:support",
         "@local_config_mlir//:AffineDialectRegistration",
         "@local_config_mlir//:MlirOptLib",
-        "@local_config_mlir//:MlirOptMain",
         "@local_config_mlir//:StandardDialectRegistration",
         "@org_tensorflow//tensorflow/compiler/mlir/xla:hlo",
         "@org_tensorflow//tensorflow/compiler/mlir/xla:xla_dialect_registration",
         "@org_tensorflow//tensorflow/compiler/mlir/xla:xla_legalize_control_flow",
     ] + TARGET_COMPILER_BACKENDS,
+    alwayslink = 1,
+)
+
+cc_binary(
+    name = "iree-opt",
+    deps = [
+        ":iree_opt_library",
+        "@local_config_mlir//:MlirOptMain",
+    ],
 )
 
 cc_binary(
@@ -108,8 +116,8 @@
     ],
 )
 
-cc_binary(
-    name = "iree-translate",
+cc_library(
+    name = "iree_translate_library",
     srcs = ["iree_translate_main.cc"],
     deps = [
         "//iree/compiler/Dialect/VM/Target/Bytecode",
@@ -127,6 +135,14 @@
         "@local_config_mlir//:Translation",
         "@org_tensorflow//tensorflow/compiler/mlir/xla:xla_dialect_registration",
     ] + TARGET_COMPILER_BACKENDS,
+    alwayslink = 1,
+)
+
+cc_binary(
+    name = "iree-translate",
+    deps = [
+        ":iree_translate_library",
+    ],
 )
 
 cc_binary(
diff --git a/iree/tools/compilation.bzl b/iree/tools/compilation.bzl
index 5978bb0..6fdcc23 100644
--- a/iree/tools/compilation.bzl
+++ b/iree/tools/compilation.bzl
@@ -21,6 +21,7 @@
         name,
         src,
         translation = "-mlir-to-iree-module",
+        translate_tool = "//iree/tools:iree-translate",
         cc_namespace = None,
         visibility = None):
     native.genrule(
@@ -31,15 +32,13 @@
         ],
         cmd = " && ".join([
             " ".join([
-                "$(location //iree/tools:iree-translate)",
+                "$(location %s)" % (translate_tool),
                 translation,
                 "-o $(location %s.emod)" % (name),
                 "$(location %s)" % (src),
             ]),
         ]),
-        tools = [
-            "//iree/tools:iree-translate",
-        ],
+        tools = [translate_tool],
         message = "Compiling IREE module %s..." % (name),
         output_to_bindir = 1,
     )