# Copyright (c) 2025, 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")

group("dart_mcp_server_aot") {
  public_deps = [
    ":dart_mcp_server_aot_product_snapshot",
    ":dart_mcp_server_aot_snapshot",
  ]
}

aot_snapshot("dart_mcp_server_aot_snapshot") {
  main_dart = "../../third_party/pkg/ai/pkgs/dart_mcp_server/bin/main.dart"
  output = "$root_gen_dir/dart_mcp_server_aot.dart.snapshot"
}

aot_snapshot("dart_mcp_server_aot_product_snapshot") {
  main_dart = "../../third_party/pkg/ai/pkgs/dart_mcp_server/bin/main.dart"
  output = "$root_gen_dir/dart_mcp_server_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 dart_mcp_server_aot snapshot in an SDK build are
  # always compatible with each other.
  force_product_mode = !dart_debug
}
