# Copyright 2018 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/package.gni")

executable("bin") {
  output_name = "sshd-host"

  sources = [
    "sshd-host.cc",
  ]

  deps = [
    "//garnet/lib/chrealm",
    "//garnet/public/lib/fsl",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/zx",
  ]
}

package("sshd-host") {
  deps = [
    ":bin",
    "//third_party/openssh-portable:hostkeygen",
    "//third_party/openssh-portable:scp",
    "//third_party/openssh-portable:sftp-server",
    "//third_party/openssh-portable:sshd",
  ]

  binaries = [
    {
      name = "sshd-host"
    },
    {
      name = "hostkeygen"
    },
    {
      name = "scp"
    },
    {
      name = "sftp-server"
    },
    {
      name = "sshd"
    },
  ]

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

  resources = [
    {
      path = rebase_path("//third_party/openssh-portable/fuchsia/sshd_config")
      dest = "ssh/sshd_config"
    },
  ]
}
