# Copyright (c) 2024, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

import("../../runtime/runtime_args.gni")
import("../aot_snapshot.gni")
import("../application_snapshot.gni")

group("dtd_aot") {
  public_deps = [
    ":dtd_aot_product_snapshot",
    ":dtd_aot_snapshot",
  ]
}

aot_snapshot("dtd_aot_snapshot") {
  main_dart = "../../pkg/dtd_impl/bin/dtd.dart"
  output = "$root_out_dir/dart_tooling_daemon_aot.dart.snapshot"
}

aot_snapshot("dtd_aot_product_snapshot") {
  main_dart = "../../pkg/dtd_impl/bin/dtd.dart"
  output = "$root_out_dir/dart_tooling_daemon_aot_product.dart.snapshot"

  # dartaotruntime has dart_product_config applied to it,
  # so it is built in product mode in both release and
  # product builds, and is only built in debug mode in debug
  # builds. The following line ensures that the dartaotruntime
  # and dartdevc_aot snapshot in an SDK build are
  # always compatible with each other.
  force_product_mode = !dart_debug
}

group("dtd") {
  public_deps = [ ":copy_dtd_snapshot" ]
}

copy("copy_dtd_snapshot") {
  visibility = [ ":dtd" ]
  public_deps = [ ":generate_dtd_snapshot" ]
  sources = [ "$root_gen_dir/dart_tooling_daemon.dart.snapshot" ]
  outputs = [ "$root_out_dir/dart_tooling_daemon.dart.snapshot" ]
}

application_snapshot("generate_dtd_snapshot") {
  main_dart = "../../pkg/dtd_impl/bin/dtd.dart"
  training_args = [ "--train" ]

  vm_args = []
  output = "$root_gen_dir/dart_tooling_daemon.dart.snapshot"
}
