[sdk][bazel] Enable SpaceDart by default.

Test: bazel run flutter:package -- app --ssh-keys $PATH_TO_SSH_KEY
      Verified that "[INFO:component.cc(205)] Found pkg/data/enable_interpreter. Passing --enable_interpreter" was in the log
Bug: DX-886

Change-Id: Iae7d76d368c518810c622fb153c02197d1eadcfd
diff --git a/sdk/bazel/base/dart/build_defs/dart.bzl b/sdk/bazel/base/dart/build_defs/dart.bzl
index 7979032..a226746 100644
--- a/sdk/bazel/base/dart/build_defs/dart.bzl
+++ b/sdk/bazel/base/dart/build_defs/dart.bzl
@@ -32,6 +32,10 @@
         mandatory = False,
         providers = ["dart"],
     ),
+    "space_dart": attr.bool(
+        doc = "Whether or not to use SpaceDart (defaults to true)",
+        default = True,
+    ),
     "_dart": attr.label(
         default = Label("//tools:dart"),
         allow_single_file = True,
@@ -85,10 +89,11 @@
         package = package_name,
         deps = deps,
     )
+    additional_args = []
 
     # 1. Create the .packages file.
     package_spec_path = context.label.name + ".packages"
-    package_spec = context.new_file(package_spec_path)
+    package_spec = context.actions.declare_file(package_spec_path)
     package_spec_action(
         ctx = context,
         output = package_spec,
@@ -143,9 +148,11 @@
     # And current directory as it was ignored in the previous logic
     roots_dict["."] = True
 
-    roots_param = []
     for root in roots_dict.keys():
-        roots_param += ["--filesystem-root", root]
+        additional_args += ["--filesystem-root", root]
+
+    if context.attr.space_dart:
+        additional_args += ["--gen-bytecode"]
 
     # 5. Compile the kernel.
     multi_root_scheme = "main-root"
@@ -161,7 +168,7 @@
             sdk_root.path,
             "--filesystem-scheme",
             multi_root_scheme,
-        ] + roots_param + [
+        ] + additional_args + [
             "--packages",
             "%s:///%s" % (multi_root_scheme, package_spec.short_path),
             "--no-link-platform",
@@ -189,4 +196,20 @@
     )
     mappings[data_root + "main.dilp"] = main_dilp_file
     mappings[data_root + "app.dilplist"] = dilp_list_file
+
+    if context.attr.space_dart:
+        enable_interpreter = context.actions.declare_file(
+            context.label.name + "_enable_interpreter",
+        )
+        context.actions.write(
+            output = enable_interpreter,
+            # The existence of this file is enough to enable SpaceDart, we add
+            # a random string to prevent the `package` rule from removing this
+            # file when empty.
+            # See:
+            #   https://fuchsia.googlesource.com/topaz/+/2a6073f931edc4136761c5b8dcfd2245efc79d45/runtime/flutter_runner/component.cc#57
+            content = "No content",
+        )
+        mappings["data/enable_interpreter"] = enable_interpreter
+
     return mappings