# 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/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/sys/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/system/fidl/fuchsia-hardware-pty:fuchsia-hardware-pty_c",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//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",
  ]
}
