Flutter 1.20 candidate.3 (#19499)

* Revert "fuchsia:  Fix profile build (#19399)" (#19493)

This reverts commit a974b78117dca341473207eb63b8d6ccb06587c3.

* Revert "Add tests & --unopt to build_fuchsia_artifacts (#18625)" (#19494)

This reverts commit fae8141f9f5f64bd9aad8d53f031f2416bf82ec8.
diff --git a/BUILD.gn b/BUILD.gn
index 35d364a..edac93a 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -169,16 +169,10 @@
       "//flutter/fml:fml_tests",
       "//flutter/runtime:runtime_tests",
       "//flutter/runtime:runtime_tests_next",
+      "//flutter/shell/common:shell_tests",
+      "//flutter/shell/common:shell_tests_next",
       "//flutter/shell/platform/fuchsia/flutter:flutter_runner_scenic_tests",
       "//flutter/shell/platform/fuchsia/flutter:flutter_runner_tests",
     ]
-
-    # TODO(fxb/55353): These break with LTO enabled
-    if (!enable_lto) {
-      deps += [
-        "//flutter/shell/common:shell_tests",
-        "//flutter/shell/common:shell_tests_next",
-      ]
-    }
   }
 }
diff --git a/shell/platform/fuchsia/dart_runner/BUILD.gn b/shell/platform/fuchsia/dart_runner/BUILD.gn
index 9f67cf3..197eabe 100644
--- a/shell/platform/fuchsia/dart_runner/BUILD.gn
+++ b/shell/platform/fuchsia/dart_runner/BUILD.gn
@@ -14,22 +14,11 @@
   assert(defined(invoker.product), "The parameter 'product' must be defined")
   assert(defined(invoker.output_name),
          "The parameter 'output_name' must be defined")
-  assert(defined(invoker.extra_deps),
-         "The parameter 'extra_deps' must be defined")
 
   invoker_output_name = invoker.output_name
+  extra_defines = invoker.extra_defines
   extra_deps = invoker.extra_deps
 
-  extra_configs = []
-  if (is_debug) {
-    extra_configs += [ "//third_party/dart/build/config:debug" ]
-  }
-
-  extra_defines = []
-  if (defined(invoker.extra_defines)) {
-    extra_defines += invoker.extra_defines
-  }
-
   executable(target_name) {
     output_name = invoker_output_name
 
@@ -46,8 +35,6 @@
       "service_isolate.h",
     ]
 
-    configs += extra_configs
-
     defines = extra_defines
 
     dart_deps = []
@@ -88,11 +75,10 @@
 runner("dart_jit_runner_bin") {
   output_name = "dart_jit_runner"
   product = false
-
+  extra_defines = []
   if (flutter_runtime_mode == "profile") {
-    extra_defines = [ "FLUTTER_PROFILE" ]
+    extra_defines += [ "FLUTTER_PROFILE" ]
   }
-
   extra_deps = [
     "//third_party/dart/runtime:libdart_jit",
     "//third_party/dart/runtime/platform:libdart_platform_jit",
@@ -102,9 +88,7 @@
 runner("dart_jit_product_runner_bin") {
   output_name = "dart_jit_product_runner"
   product = true
-
   extra_defines = [ "DART_PRODUCT" ]
-
   extra_deps = [
     "//third_party/dart/runtime:libdart_jit_product",
     "//third_party/dart/runtime/platform:libdart_platform_jit_product",
@@ -114,12 +98,10 @@
 runner("dart_aot_runner_bin") {
   output_name = "dart_aot_runner"
   product = false
-
   extra_defines = [ "AOT_RUNTIME" ]
   if (flutter_runtime_mode == "profile") {
     extra_defines += [ "FLUTTER_PROFILE" ]
   }
-
   extra_deps = [
     "embedder:dart_aot_snapshot_cc",
     "//third_party/dart/runtime:libdart_precompiled_runtime",
@@ -130,12 +112,10 @@
 runner("dart_aot_product_runner_bin") {
   output_name = "dart_aot_product_runner"
   product = true
-
   extra_defines = [
     "AOT_RUNTIME",
     "DART_PRODUCT",
   ]
-
   extra_deps = [
     "embedder:dart_aot_product_snapshot_cc",
     "//third_party/dart/runtime:libdart_precompiled_runtime_product",
diff --git a/shell/platform/fuchsia/flutter/BUILD.gn b/shell/platform/fuchsia/flutter/BUILD.gn
index 23a15f1..98befa7 100644
--- a/shell/platform/fuchsia/flutter/BUILD.gn
+++ b/shell/platform/fuchsia/flutter/BUILD.gn
@@ -12,176 +12,27 @@
 import("//flutter/tools/fuchsia/fuchsia_archive.gni")
 import("//flutter/tools/fuchsia/fuchsia_libs.gni")
 import("//flutter/vulkan/config.gni")
+import("engine_flutter_runner.gni")
 
 # Fuchsia uses its own custom Surface implementation.
-shell_gpu_configuration("fuchsia_gpu_configuration_legacy") {
+shell_gpu_configuration("fuchsia_legacy_gpu_configuration") {
   enable_software = false
   enable_gl = false
   enable_vulkan = false
   enable_metal = false
 }
 
-source_set("flutter_runner_sources") {
-  sources = [
-    "accessibility_bridge.cc",
-    "accessibility_bridge.h",
-    "component.cc",
-    "component.h",
-    "compositor_context.cc",
-    "compositor_context.h",
-    "engine.cc",
-    "engine.h",
-    "flutter_runner_product_configuration.cc",
-    "flutter_runner_product_configuration.h",
-    "fuchsia_intl.cc",
-    "fuchsia_intl.h",
-    "isolate_configurator.cc",
-    "isolate_configurator.h",
-    "logging.h",
-    "loop.cc",
-    "loop.h",
-    "platform_view.cc",
-    "platform_view.h",
-    "runner.cc",
-    "runner.h",
-    "session_connection.cc",
-    "session_connection.h",
-    "surface.cc",
-    "surface.h",
-    "task_observers.cc",
-    "task_observers.h",
-    "task_runner_adapter.cc",
-    "task_runner_adapter.h",
-    "thread.cc",
-    "thread.h",
-    "unique_fdio_ns.h",
-    "vsync_recorder.cc",
-    "vsync_recorder.h",
-    "vsync_waiter.cc",
-    "vsync_waiter.h",
-    "vulkan_surface.cc",
-    "vulkan_surface.h",
-    "vulkan_surface_pool.cc",
-    "vulkan_surface_pool.h",
-    "vulkan_surface_producer.cc",
-    "vulkan_surface_producer.h",
-  ]
-
-  # The use of these dependencies is temporary and will be moved behind the
-  # embedder API.
-  flutter_deps = [
-    ":fuchsia_gpu_configuration_legacy",
-    "//flutter/assets",
-    "//flutter/common",
-    "//flutter/flow:flow_fuchsia_legacy",
-    "//flutter/fml",
-    "//flutter/lib/ui:ui_fuchsia_legacy",
-    "//flutter/runtime:runtime_fuchsia_legacy",
-    "//flutter/shell/common:common_fuchsia_legacy",
-    "//flutter/third_party/txt",
-    "//flutter/vulkan",
-  ]
-
-  public_deps = [
-                  "$fuchsia_sdk_root/fidl:fuchsia.sys",
-                  "$fuchsia_sdk_root/pkg:async-loop-cpp",
-                  "$fuchsia_sdk_root/pkg:scenic_cpp",
-                  "$fuchsia_sdk_root/pkg:sys_cpp",
-                  "$fuchsia_sdk_root/pkg:trace",
-                  "$fuchsia_sdk_root/pkg:trace-engine",
-                  "$fuchsia_sdk_root/pkg:trace-provider-so",
-                  "//flutter/shell/platform/fuchsia/dart-pkg/fuchsia",
-                  "//flutter/shell/platform/fuchsia/dart-pkg/zircon",
-                  "//flutter/shell/platform/fuchsia/runtime/dart/utils",
-                ] + flutter_deps
-
-  deps = [
-    "$fuchsia_sdk_root/fidl:fuchsia.accessibility.semantics",
-    "$fuchsia_sdk_root/fidl:fuchsia.fonts",
-    "$fuchsia_sdk_root/fidl:fuchsia.images",
-    "$fuchsia_sdk_root/fidl:fuchsia.intl",
-    "$fuchsia_sdk_root/fidl:fuchsia.io",
-    "$fuchsia_sdk_root/fidl:fuchsia.ui.app",
-    "$fuchsia_sdk_root/fidl:fuchsia.ui.scenic",
-    "$fuchsia_sdk_root/pkg:async-cpp",
-    "$fuchsia_sdk_root/pkg:async-default",
-    "$fuchsia_sdk_root/pkg:async-loop",
-    "$fuchsia_sdk_root/pkg:fdio",
-    "$fuchsia_sdk_root/pkg:fidl_cpp",
-    "$fuchsia_sdk_root/pkg:syslog",
-    "$fuchsia_sdk_root/pkg:vfs_cpp",
-    "$fuchsia_sdk_root/pkg:zx",
-  ]
-}
-
 # Things that explicitly being excluded:
 # 1. Kernel snapshot framework mode.
 # 2. Profiler symbols.
 
-# Builds a flutter_runner
-#
-# Parameters:
-#
-#  output_name (required):
-#    The name of the resulting binary.
-#
-#  extra_deps (required):
-#    Any additional dependencies.
-#
-#  product (required):
-#    Whether to link against a Product mode Dart VM.
-#
-#  extra_defines (optional):
-#    Any additional preprocessor defines.
-template("flutter_runner") {
-  assert(defined(invoker.output_name), "flutter_runner must define output_name")
-  assert(defined(invoker.extra_deps), "flutter_runner must define extra_deps")
-  assert(defined(invoker.product), "flutter_runner must define product")
-
-  invoker_output_name = invoker.output_name
-  extra_deps = invoker.extra_deps
-
-  extra_configs = []
-  if (is_debug) {
-    extra_configs += [ "//third_party/dart/build/config:debug" ]
-  }
-
-  extra_defines = []
-  if (defined(invoker.extra_defines)) {
-    extra_defines += invoker.extra_defines
-  }
-
-  executable(target_name) {
-    output_name = invoker_output_name
-
-    sources = [
-      "main.cc",
-    ]
-
-    configs += extra_configs
-
-    defines = extra_defines
-
-    deps = [ ":flutter_runner_sources" ] + extra_deps
-
-    # The flags below are needed so that Dart's CPU profiler can walk the
-    # C++ stack.
-    cflags = [ "-fno-omit-frame-pointer" ]
-
-    if (!invoker.product) {
-      # This flag is needed so that the call to dladdr() in Dart's native symbol
-      # resolver can report good symbol information for the CPU profiler.
-      ldflags = [ "-rdynamic" ]
-    }
-  }
-}
-
 flutter_runner("jit") {
   output_name = "flutter_jit_runner"
   product = false
 
+  extra_defines = []
   if (flutter_runtime_mode == "profile") {
-    extra_defines = [ "FLUTTER_PROFILE" ]
+    extra_defines += [ "FLUTTER_PROFILE" ]
   }
 
   extra_deps = [
@@ -206,8 +57,9 @@
   output_name = "flutter_aot_runner"
   product = false
 
+  extra_defines = []
   if (flutter_runtime_mode == "profile") {
-    extra_defines = [ "FLUTTER_PROFILE" ]
+    extra_defines += [ "FLUTTER_PROFILE" ]
   }
 
   extra_deps = [
@@ -417,13 +269,41 @@
   output_name = "flutter_runner_tests"
 
   sources = [
+    "accessibility_bridge.cc",
+    "accessibility_bridge.h",
     "accessibility_bridge_unittest.cc",
+    "component.cc",
+    "component.h",
     "component_unittest.cc",
+    "flutter_runner_fakes.h",
+    "flutter_runner_product_configuration.cc",
+    "flutter_runner_product_configuration.h",
+    "fuchsia_intl.cc",
+    "fuchsia_intl.h",
     "fuchsia_intl_unittest.cc",
+    "logging.h",
+    "loop.cc",
+    "loop.h",
+    "platform_view.cc",
+    "platform_view.h",
     "platform_view_unittest.cc",
+    "runner.cc",
+    "runner.h",
     "runner_unittest.cc",
+    "surface.cc",
+    "surface.h",
+    "task_observers.cc",
+    "task_observers.h",
+    "task_runner_adapter.cc",
+    "task_runner_adapter.h",
     "tests/flutter_runner_product_configuration_unittests.cc",
     "tests/vsync_recorder_unittests.cc",
+    "thread.cc",
+    "thread.h",
+    "vsync_recorder.cc",
+    "vsync_recorder.h",
+    "vsync_waiter.cc",
+    "vsync_waiter.h",
     "vsync_waiter_unittests.cc",
   ]
 
@@ -433,7 +313,6 @@
   deps = [
     ":aot",
     ":flutter_runner_fixtures",
-    ":flutter_runner_sources",
     "//build/fuchsia/fidl:fuchsia.accessibility.semantics",
     "//build/fuchsia/pkg:async-default",
     "//build/fuchsia/pkg:async-loop-cpp",
@@ -450,10 +329,6 @@
     "//third_party/dart/runtime:libdart_jit",
     "//third_party/dart/runtime/platform:libdart_platform_jit",
   ]
-
-  if (is_debug) {
-    configs += [ "//third_party/dart/build/config:debug" ]
-  }
 }
 
 executable("flutter_runner_tzdata_unittests") {
@@ -462,6 +337,8 @@
   output_name = "flutter_runner_tzdata_tests"
 
   sources = [
+    "runner.cc",
+    "runner.h",
     "runner_tzdata_unittest.cc",
   ]
 
@@ -471,7 +348,6 @@
   deps = [
     ":aot",
     ":flutter_runner_fixtures",
-    ":flutter_runner_sources",
     "//build/fuchsia/fidl:fuchsia.accessibility.semantics",
     "//build/fuchsia/pkg:async-loop-cpp",
     "//build/fuchsia/pkg:async-loop-default",
@@ -488,10 +364,6 @@
     "//third_party/icu",
     "//third_party/skia",
   ]
-
-  if (is_debug) {
-    configs += [ "//third_party/dart/build/config:debug" ]
-  }
 }
 
 fuchsia_archive("flutter_runner_tests") {
@@ -571,8 +443,46 @@
   output_name = "flutter_runner_scenic_tests"
 
   sources = [
+    "component.cc",
+    "component.h",
+    "compositor_context.cc",
+    "compositor_context.h",
+    "engine.cc",
+    "engine.h",
+    "fuchsia_intl.cc",
+    "fuchsia_intl.h",
+    "isolate_configurator.cc",
+    "isolate_configurator.h",
+    "logging.h",
+    "loop.cc",
+    "loop.h",
+    "platform_view.cc",
+    "platform_view.h",
+    "runner.cc",
+    "runner.h",
+    "session_connection.cc",
+    "session_connection.h",
+    "surface.cc",
+    "surface.h",
+    "task_observers.cc",
+    "task_observers.h",
+    "task_runner_adapter.cc",
+    "task_runner_adapter.h",
     "tests/session_connection_unittests.cc",
+    "thread.cc",
+    "thread.h",
+    "unique_fdio_ns.h",
+    "vsync_recorder.cc",
+    "vsync_recorder.h",
+    "vsync_waiter.cc",
+    "vsync_waiter.h",
     "vsync_waiter_unittests.cc",
+    "vulkan_surface.cc",
+    "vulkan_surface.h",
+    "vulkan_surface_pool.cc",
+    "vulkan_surface_pool.h",
+    "vulkan_surface_producer.cc",
+    "vulkan_surface_producer.h",
   ]
 
   # This is needed for //third_party/googletest for linking zircon symbols.
@@ -580,9 +490,9 @@
 
   deps = [
     ":flutter_runner_fixtures",
-    ":flutter_runner_sources",
     ":jit",
     "$fuchsia_sdk_root/fidl:fuchsia.ui.policy",
+    "$fuchsia_sdk_root/pkg:trace-provider-so",
     "//build/fuchsia/fidl:fuchsia.accessibility.semantics",
     "//build/fuchsia/pkg:async-default",
     "//build/fuchsia/pkg:async-loop-cpp",
@@ -608,10 +518,6 @@
   public_deps = [
     "//third_party/googletest:gtest",
   ]
-
-  if (is_debug) {
-    configs += [ "//third_party/dart/build/config:debug" ]
-  }
 }
 
 fuchsia_archive("flutter_runner_scenic_tests") {
diff --git a/shell/platform/fuchsia/flutter/engine_flutter_runner.gni b/shell/platform/fuchsia/flutter/engine_flutter_runner.gni
new file mode 100644
index 0000000..57fd228
--- /dev/null
+++ b/shell/platform/fuchsia/flutter/engine_flutter_runner.gni
@@ -0,0 +1,150 @@
+# Copyright 2013 The Flutter Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+assert(is_fuchsia)
+
+import("//build/fuchsia/sdk.gni")
+
+# Builds a flutter_runner
+#
+# Parameters:
+#
+#  output_name (required):
+#    The name of the resulting binary.
+#
+#  extra_deps (required):
+#    Any additional dependencies.
+#
+#  product (required):
+#    Whether to link against a Product mode Dart VM.
+#
+#  extra_defines (optional):
+#    Any additional preprocessor defines.
+template("flutter_runner") {
+  assert(defined(invoker.output_name), "flutter_runner must define output_name")
+  assert(defined(invoker.extra_deps), "flutter_runner must define extra_deps")
+  assert(defined(invoker.product), "flutter_runner must define product")
+
+  invoker_output_name = invoker.output_name
+  extra_deps = invoker.extra_deps
+
+  extra_defines = []
+  if (defined(invoker.extra_defines)) {
+    extra_defines += invoker.extra_defines
+  }
+
+  executable(target_name) {
+    output_name = invoker_output_name
+
+    defines = extra_defines
+
+    libs = []
+
+    sources = [
+      "accessibility_bridge.cc",
+      "accessibility_bridge.h",
+      "component.cc",
+      "component.h",
+      "compositor_context.cc",
+      "compositor_context.h",
+      "engine.cc",
+      "engine.h",
+      "flutter_runner_product_configuration.cc",
+      "flutter_runner_product_configuration.h",
+      "fuchsia_intl.cc",
+      "fuchsia_intl.h",
+      "isolate_configurator.cc",
+      "isolate_configurator.h",
+      "logging.h",
+      "loop.cc",
+      "loop.h",
+      "main.cc",
+      "platform_view.cc",
+      "platform_view.h",
+      "runner.cc",
+      "runner.h",
+      "session_connection.cc",
+      "session_connection.h",
+      "surface.cc",
+      "surface.h",
+      "task_observers.cc",
+      "task_observers.h",
+      "task_runner_adapter.cc",
+      "task_runner_adapter.h",
+      "thread.cc",
+      "thread.h",
+      "unique_fdio_ns.h",
+      "vsync_recorder.cc",
+      "vsync_recorder.h",
+      "vsync_waiter.cc",
+      "vsync_waiter.h",
+      "vulkan_surface.cc",
+      "vulkan_surface.h",
+      "vulkan_surface_pool.cc",
+      "vulkan_surface_pool.h",
+      "vulkan_surface_producer.cc",
+      "vulkan_surface_producer.h",
+    ]
+
+    # The use of these dependencies is temporary and will be moved behind the
+    # embedder API.
+    flutter_deps = [
+      "../flutter:fuchsia_legacy_gpu_configuration",
+      "//flutter/assets",
+      "//flutter/common",
+      "//flutter/fml",
+      "//flutter/flow:flow_fuchsia_legacy",
+      "//flutter/lib/ui:ui_fuchsia_legacy",
+      "//flutter/runtime:runtime_fuchsia_legacy",
+      "//flutter/shell/common:common_fuchsia_legacy",
+      "//flutter/vulkan",
+    ]
+
+    _fuchsia_platform = "//flutter/shell/platform/fuchsia"
+
+    # TODO(kaushikiska) evaluate if all of these are needed.
+    fuchsia_deps = [
+      "${_fuchsia_platform}/dart-pkg/fuchsia",
+      "${_fuchsia_platform}/dart-pkg/zircon",
+      "${_fuchsia_platform}/runtime/dart/utils",
+    ]
+
+    deps = [
+             "$fuchsia_sdk_root/fidl:fuchsia.accessibility.semantics",
+             "$fuchsia_sdk_root/fidl:fuchsia.fonts",
+             "$fuchsia_sdk_root/fidl:fuchsia.images",
+             "$fuchsia_sdk_root/fidl:fuchsia.intl",
+             "$fuchsia_sdk_root/fidl:fuchsia.io",
+             "$fuchsia_sdk_root/fidl:fuchsia.sys",
+             "$fuchsia_sdk_root/fidl:fuchsia.ui.app",
+             "$fuchsia_sdk_root/fidl:fuchsia.ui.scenic",
+             "$fuchsia_sdk_root/pkg:async-cpp",
+             "$fuchsia_sdk_root/pkg:async-default",
+             "$fuchsia_sdk_root/pkg:async-loop",
+             "$fuchsia_sdk_root/pkg:async-loop-cpp",
+             "$fuchsia_sdk_root/pkg:fdio",
+             "$fuchsia_sdk_root/pkg:fidl_cpp",
+             "$fuchsia_sdk_root/pkg:scenic_cpp",
+             "$fuchsia_sdk_root/pkg:sys_cpp",
+             "$fuchsia_sdk_root/pkg:syslog",
+             "$fuchsia_sdk_root/pkg:trace",
+             "$fuchsia_sdk_root/pkg:trace-engine",
+             "$fuchsia_sdk_root/pkg:trace-provider-so",
+             "$fuchsia_sdk_root/pkg:vfs_cpp",
+             "$fuchsia_sdk_root/pkg:zx",
+             "//third_party/skia",
+             "//flutter/third_party/tonic",
+           ] + fuchsia_deps + flutter_deps + extra_deps
+
+    # The flags below are needed so that Dart's CPU profiler can walk the
+    # C++ stack.
+    cflags = [ "-fno-omit-frame-pointer" ]
+
+    if (!invoker.product) {
+      # This flag is needed so that the call to dladdr() in Dart's native symbol
+      # resolver can report good symbol information for the CPU profiler.
+      ldflags = [ "-rdynamic" ]
+    }
+  }
+}
diff --git a/tools/fuchsia/build_fuchsia_artifacts.py b/tools/fuchsia/build_fuchsia_artifacts.py
index ae38e73..09ac668 100755
--- a/tools/fuchsia/build_fuchsia_artifacts.py
+++ b/tools/fuchsia/build_fuchsia_artifacts.py
@@ -23,10 +23,6 @@
 _out_dir = os.path.join(_src_root_dir, 'out')
 _bucket_directory = os.path.join(_out_dir, 'fuchsia_bucket')
 _fuchsia_base = 'flutter/shell/platform/fuchsia'
-_default_targets = [
-    'flutter:flutter',
-    'flutter:fuchsia_tests',
-]
 
 
 def IsLinux():
@@ -168,7 +164,8 @@
   deps_bucket_path = os.path.join(_bucket_directory, dst)
   FindFileAndCopyTo('icudtl.dat', source_root, deps_bucket_path)
 
-def BuildBucket(out_dir, runtime_mode, arch, product):
+def BuildBucket(runtime_mode, arch, product):
+  out_dir = 'fuchsia_%s_%s/' % (runtime_mode, arch)
   bucket_dir = 'flutter/%s/%s/' % (arch, runtime_mode)
   deps_dir = 'flutter/%s/deps/' % (arch)
   CopyToBucket(out_dir, bucket_dir, product)
@@ -222,7 +219,16 @@
   target += 'runner'
   return base + target
 
-def BuildTarget(out_dir, runtime_mode, arch, enable_opt, enable_lto, additional_targets=[]):
+
+def GetTargetsToBuild(product=False, additional_targets=[]):
+  targets_to_build = [
+      'flutter/shell/platform/fuchsia:fuchsia',
+  ] + additional_targets
+  return targets_to_build
+
+
+def BuildTarget(runtime_mode, arch, product, enable_lto, additional_targets=[]):
+  out_dir = 'fuchsia_%s_%s' % (runtime_mode, arch)
   flags = [
       '--fuchsia',
       '--fuchsia-cpu',
@@ -231,14 +237,11 @@
       runtime_mode,
   ]
 
-  if not enable_opt:
-    flags.append('--unoptimized')
-
   if not enable_lto:
     flags.append('--no-lto')
 
   RunGN(out_dir, flags)
-  BuildNinjaTargets(out_dir, _default_targets + additional_targets)
+  BuildNinjaTargets(out_dir, GetTargetsToBuild(product))
 
   return
 
@@ -267,12 +270,6 @@
       '--archs', type=str, choices=['x64', 'arm64', 'all'], default='all')
 
   parser.add_argument(
-      '--unoptimized',
-      action='store_true',
-      default=False,
-      help='If set, disables compiler optimizations for the build.')
-
-  parser.add_argument(
       '--no-lto',
       action='store_true',
       default=False,
@@ -298,7 +295,6 @@
   runtime_modes = ['debug', 'profile', 'release']
   product_modes = [False, False, True]
 
-  enable_opt = not args.unoptimized
   enable_lto = not args.no_lto
 
   for arch in archs:
@@ -306,11 +302,10 @@
       runtime_mode = runtime_modes[i]
       product = product_modes[i]
       if build_mode == 'all' or runtime_mode == build_mode:
-        out_dir = 'fuchsia_%s_%s%s' % (runtime_mode, '' if enable_opt else 'unopt_', arch)
         if not args.skip_build:
-          BuildTarget(out_dir, runtime_mode, arch, enable_opt, enable_lto,
+          BuildTarget(runtime_mode, arch, product, enable_lto,
                       args.targets.split(","))
-        BuildBucket(out_dir, runtime_mode, arch, product)
+        BuildBucket(runtime_mode, arch, product)
 
   if args.upload:
     if args.engine_version is None: