# Copyright 2016 The Fuchsia 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("//build/fidl/fidl.gni")
import("//build/package.gni")

executable("bin") {
  output_name = "term"

  sources = [
    "app.cc",
    "app.h",
    "key_util.cc",
    "key_util.h",
    "main.cc",
    "pty_client.cc",
    "pty_client.h",
    "pty_server.cc",
    "pty_server.h",
    "term_model.cc",
    "term_model.h",
    "term_params.cc",
    "term_params.h",
    "view_controller.cc",
    "view_controller.h",
  ]

  deps = [
    ":fuchsia.term",
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/ui/input/cpp",
    "//sdk/fidl/fuchsia.fonts",
    "//sdk/fidl/fuchsia.images",
    "//sdk/fidl/fuchsia.ui.gfx",
    "//sdk/fidl/fuchsia.ui.input",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/ui/scenic/cpp",
    "//src/lib/fxl",
    "//third_party/freetype2",
    "//third_party/libteken",
    "//third_party/skia",
    "//topaz/examples/ui/lib:skia_fonts",
    "//topaz/examples/ui/lib:skia_view",
    "//zircon/public/fidl/fuchsia-hardware-pty:fuchsia-hardware-pty_c",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/hid",
    "//zircon/public/lib/trace-provider-with-fdio",
  ]
}

fidl("fuchsia.term") {
  sdk_category = "internal"

  sources = [
    "term.fidl",
  ]
}

package("term") {
  deps = [
    ":bin",
  ]

  binary = "term"

  meta = [
    {
      path = rebase_path("meta/term.cmx")
      dest = "term.cmx"
    },
  ]
}

package("config") {
  deprecated_system_image = true
  package_name = "term_config"
  resources = [
    {
      dest = "sysmgr/term.config"
      path = rebase_path("config/term.config")
    },
  ]
}
