# 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.

import("//third_party/dart/build/dart/dart_action.gni")
import("//third_party/dart/utils/application_snapshot.gni")
import("//third_party/dart/utils/compile_platform.gni")

application_snapshot("kernel_compiler") {
  main_dart = "compiler.dart"

  deps = [
    "../flutter/kernel:kernel_platform_files($host_toolchain)",
  ]

  dot_packages =
      rebase_path("//third_party/dart/.dart_tool/package_config.json")

  training_args = [
    "--train",
    rebase_path(main_dart),
  ]

  kernel_compiler_files =
      exec_script("//third_party/dart/tools/list_dart_files.py",
                  [
                    "absolute",
                    rebase_path("."),
                  ],
                  "list lines")

  kernel_compiler_files +=
      exec_script("//third_party/dart/tools/list_dart_files.py",
                  [
                    "absolute",
                    rebase_path("//third_party/dart/pkg"),
                  ],
                  "list lines")

  inputs = kernel_compiler_files
}

application_snapshot("list_libraries") {
  main_dart = "//third_party/dart/pkg/vm/bin/list_libraries.dart"
  training_args = [
    # train against the dill file which is generated for this snapshot. If this build file
    # changes location this path will need to be updated.
    rebase_path(
        root_gen_dir +
        "/flutter/shell/platform/fuchsia/dart/list_libraries.dart.dill"),
  ]
}
