# 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/config.gni")
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") {
  deprecated_shell = "//topaz"

  deps = [
    ":bin",
  ]

  binary = "term"

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

config_data("config") {
  for_pkg = "sysmgr"

  sources = [
    "config/term.config",
  ]
}
