# 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("../aot_snapshot.gni")
import("../application_snapshot.gni")

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"
}
