# Copyright 2017 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")

package("openssh-tools") {
  deps = [
    ":scp",
    ":ssh",
    ":ssh-keygen",
  ]

  binaries = [
    {
      name = "scp"
      shell = true
    },
    {
      name = "ssh"
      shell = true
    },
    {
      name = "ssh-keygen"
      shell = true
    },
  ]
}

config("fuchsia") {
  include_dirs = [
    ".",
    "fuchsia",
  ]
  defines = [
    "u_int64_t=uint64_t",
    "SSHDIR=\"/pkg/data/ssh\"",
  ]
  cflags = [
    "-include",
    rebase_path("fuchsia/fuchsia-compat.h"),
    "-Wno-newline-eof",
    "-Wno-pointer-sign",
  ]

  configs = [
    "//third_party/boringssl:boringssl_config",
    "//third_party/zlib:zlib_config",
  ]
}

source_set("fuchsia-compat") {
  sources = [
    "fuchsia/fuchsia-compat.c",
    "fuchsia/fuchsia-compat.h",
  ]
  public_deps = [
    "//zircon/system/fidl/fuchsia-hardware-pty:fuchsia-hardware-pty_c",
    "//zircon/public/lib/async",
    "//zircon/public/lib/async-loop",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/loader-service",
  ]
  configs += [ ":fuchsia" ]
}

# This needs to be a static library because some of its symbols are replaced
# when it is linked into executables.
static_library("libopenssh") {
  sources = [
    "bitmap.c",
    "bitmap.h",
    "krl.c",
    "krl.h",
    "ssh_api.c",
    "ssh_api.h",
    "sshbuf-getput-basic.c",
    "sshbuf-getput-crypto.c",
    "sshbuf-misc.c",
    "sshbuf.c",
    "sshbuf.h",
    "ssherr.c",
    "ssherr.h",
    "sshkey.c",
    "sshkey.h",
  ]
  configs += [ ":fuchsia" ]

  deps = [
    "//third_party/boringssl",
    "//third_party/zlib:zlib_static",
  ]
}

config("umac128_config") {
  defines = [
    "UMAC_OUTPUT_LEN=16",
    "umac_new=umac128_new",
    "umac_update=umac128_update",
    "umac_final=umac128_final",
    "umac_delete=umac128_delete",
    "umac_ctx=umac128_ctx",
  ]
}

source_set("umac128") {
  sources = [
    "umac.c",
  ]
  configs += [
    ":umac128_config",
    ":fuchsia",
  ]
}

# This needs to be a static library because some of its symbols are replaced
# when it is linked into executables.
static_library("libssh") {
  sources = [
    "addrmatch.c",
    "atomicio.c",
    "atomicio.h",
    "authfd.c",
    "authfd.h",
    "authfile.c",
    "authfile.h",
    "canohost.c",
    "canohost.h",
    "chacha.c",
    "chacha.h",
    "channels.c",
    "channels.h",
    "cipher-aes.c",
    "cipher-aesctr.c",
    "cipher-aesctr.h",
    "cipher-chachapoly.c",
    "cipher-chachapoly.h",
    "cipher-ctr.c",
    "cipher.c",
    "cipher.h",
    "cleanup.c",
    "compat.c",
    "compat.h",
    "crc32.c",
    "crc32.h",
    "dh.c",
    "dh.h",
    "digest-libc.c",
    "digest-openssl.c",
    "dispatch.c",
    "dispatch.h",
    "dns.c",
    "dns.h",
    "ed25519.c",
    "entropy.c",
    "entropy.h",
    "fatal.c",
    "fe25519.c",
    "fe25519.h",
    "ge25519.c",
    "ge25519.h",
    "gss-genr.c",
    "hash.c",
    "hmac.c",
    "hmac.h",
    "hostfile.c",
    "hostfile.h",
    "kex.c",
    "kex.h",
    "kexc25519.c",
    "kexc25519c.c",
    "kexc25519s.c",
    "kexdh.c",
    "kexdhc.c",
    "kexdhs.c",
    "kexecdh.c",
    "kexecdhc.c",
    "kexecdhs.c",
    "kexgex.c",
    "kexgexc.c",
    "kexgexs.c",
    "key.h",
    "log.c",
    "log.h",
    "mac.c",
    "mac.h",
    "match.c",
    "match.h",
    "misc.c",
    "misc.h",
    "moduli.c",
    "monitor_fdpass.c",
    "monitor_fdpass.h",
    "msg.c",
    "msg.h",
    "nchan.c",
    "opacket.c",
    "opacket.h",
    "packet.c",
    "packet.h",
    "platform-misc.c",
    "platform-pledge.c",
    "platform-tracing.c",
    "poly1305.c",
    "poly1305.h",
    "progressmeter.c",
    "progressmeter.h",
    "readpass.c",
    "rijndael.c",
    "rijndael.h",
    "sc25519.c",
    "sc25519.h",
    "smult_curve25519_ref.c",
    "ssh-dss.c",
    "ssh-ecdsa.c",
    "ssh-ed25519.c",
    "ssh-pkcs11.c",
    "ssh-pkcs11.h",
    "ssh-rsa.c",
    "ttymodes.c",
    "ttymodes.h",
    "uidswap.c",
    "uidswap.h",
    "umac.c",
    "umac.h",
    "utf8.c",
    "utf8.h",
    "uuencode.c",
    "uuencode.h",
    "verify.c",
    "xmalloc.c",
    "xmalloc.h",
  ]

  deps = [
    ":fuchsia-compat",
    ":libopenssh",
    ":openbsd-compat",
    ":umac128",
    "//third_party/boringssl",
  ]
  configs += [ ":fuchsia" ]
}

config("openbsd-compat-config") {
  include_dirs = [ "openbsd-compat" ]
}

source_set("openbsd-compat") {
  sources = [
    "openbsd-compat/arc4random.c",
    "openbsd-compat/base64.c",
    "openbsd-compat/base64.h",
    "openbsd-compat/basename.c",
    "openbsd-compat/bcrypt_pbkdf.c",
    "openbsd-compat/bindresvport.c",
    "openbsd-compat/blowfish.c",
    "openbsd-compat/bsd-asprintf.c",
    "openbsd-compat/bsd-closefrom.c",
    "openbsd-compat/bsd-cygwin_util.c",
    "openbsd-compat/bsd-cygwin_util.h",
    "openbsd-compat/bsd-err.c",
    "openbsd-compat/bsd-getpeereid.c",
    "openbsd-compat/bsd-misc.c",
    "openbsd-compat/bsd-misc.h",
    "openbsd-compat/bsd-nextstep.c",
    "openbsd-compat/bsd-nextstep.h",
    "openbsd-compat/bsd-openpty.c",
    "openbsd-compat/bsd-poll.c",
    "openbsd-compat/bsd-poll.h",
    "openbsd-compat/bsd-setres_id.c",
    "openbsd-compat/bsd-setres_id.h",
    "openbsd-compat/bsd-snprintf.c",
    "openbsd-compat/bsd-statvfs.c",
    "openbsd-compat/bsd-statvfs.h",
    "openbsd-compat/bsd-waitpid.c",
    "openbsd-compat/bsd-waitpid.h",
    "openbsd-compat/daemon.c",
    "openbsd-compat/dirname.c",
    "openbsd-compat/explicit_bzero.c",
    "openbsd-compat/fake-rfc2553.c",
    "openbsd-compat/fake-rfc2553.h",
    "openbsd-compat/fmt_scaled.c",
    "openbsd-compat/freezero.c",
    "openbsd-compat/getcwd.c",
    "openbsd-compat/getgrouplist.c",
    "openbsd-compat/getopt_long.c",
    "openbsd-compat/getrrsetbyname-ldns.c",
    "openbsd-compat/getrrsetbyname.c",
    "openbsd-compat/getrrsetbyname.h",
    "openbsd-compat/glob.c",
    "openbsd-compat/glob.h",
    "openbsd-compat/inet_aton.c",
    "openbsd-compat/inet_ntoa.c",
    "openbsd-compat/inet_ntop.c",
    "openbsd-compat/kludge-fd_set.c",
    "openbsd-compat/md5.c",
    "openbsd-compat/md5.h",
    "openbsd-compat/mktemp.c",
    "openbsd-compat/openssl-compat.c",
    "openbsd-compat/openssl-compat.h",
    "openbsd-compat/pwcache.c",
    "openbsd-compat/readpassphrase.c",
    "openbsd-compat/readpassphrase.h",
    "openbsd-compat/reallocarray.c",
    "openbsd-compat/realpath.c",
    "openbsd-compat/recallocarray.c",
    "openbsd-compat/rmd160.c",
    "openbsd-compat/rmd160.h",
    "openbsd-compat/rresvport.c",
    "openbsd-compat/setenv.c",
    "openbsd-compat/setproctitle.c",
    "openbsd-compat/sha1.c",
    "openbsd-compat/sha1.h",
    "openbsd-compat/sha2.c",
    "openbsd-compat/sha2.h",
    "openbsd-compat/sigact.c",
    "openbsd-compat/sigact.h",
    "openbsd-compat/strcasestr.c",
    "openbsd-compat/strlcat.c",
    "openbsd-compat/strlcpy.c",
    "openbsd-compat/strmode.c",
    "openbsd-compat/strnlen.c",
    "openbsd-compat/strptime.c",
    "openbsd-compat/strsep.c",
    "openbsd-compat/strtoll.c",
    "openbsd-compat/strtonum.c",
    "openbsd-compat/strtoul.c",
    "openbsd-compat/strtoull.c",
    "openbsd-compat/timingsafe_bcmp.c",
    "openbsd-compat/vis.c",
    "openbsd-compat/vis.h",
  ]
  configs += [
    ":fuchsia",
    ":openbsd-compat-config",
  ]
  public_deps = [
    "//zircon/public/lib/fdio",
  ]
}

executable("ssh") {
  sources = [
    "clientloop.c",
    "mux.c",
    "readconf.c",
    "ssh.c",
    "sshconnect.c",
    "sshconnect2.c",
    "sshtty.c",
  ]
  deps = [
    ":libssh",
  ]
  configs += [ ":fuchsia" ]
}

executable("sshd") {
  sources = [
    "audit-bsm.c",
    "audit-linux.c",
    "audit.c",
    "audit.h",
    "auth-bsdauth.c",
    "auth-krb5.c",
    "auth-options.c",
    "auth-options.h",
    "auth-pam.c",
    "auth-pam.h",
    "auth-passwd.c",
    "auth-rhosts.c",
    "auth-shadow.c",
    "auth-sia.c",
    "auth-sia.h",
    "auth-skey.c",
    "auth.c",
    "auth.h",
    "auth2-chall.c",
    "auth2-gss.c",
    "auth2-hostbased.c",
    "auth2-kbdint.c",
    "auth2-none.c",
    "auth2-passwd.c",
    "auth2-pubkey.c",
    "auth2.c",
    "groupaccess.c",
    "groupaccess.h",
    "gss-serv-krb5.c",
    "gss-serv.c",
    "loginrec.c",
    "loginrec.h",
    "md5crypt.c",
    "md5crypt.h",
    "monitor.c",
    "monitor.h",
    "monitor_wrap.c",
    "monitor_wrap.h",
    "platform.c",
    "platform.h",
    "sandbox-capsicum.c",
    "sandbox-darwin.c",
    "sandbox-null.c",
    "sandbox-pledge.c",
    "sandbox-rlimit.c",
    "sandbox-seccomp-filter.c",
    "sandbox-solaris.c",
    "sandbox-systrace.c",
    "servconf.c",
    "servconf.h",
    "serverloop.c",
    "serverloop.h",
    "session.c",
    "session.h",
    "sftp-common.c",
    "sftp-common.h",
    "sftp-server.c",
    "sshd.c",
    "sshlogin.c",
    "sshlogin.h",
    "sshpty.c",
    "sshpty.h",
  ]
  configs += [ ":fuchsia" ]
  deps = [
    ":libssh",
    "//zircon/public/lib/fdio",
  ]
  public_deps = [
    "//zircon/system/fidl/fuchsia-hardware-pty:fuchsia-hardware-pty_c",
  ]
}

executable("ssh-keygen") {
  configs += [ ":fuchsia" ]
  sources = [
    "ssh-keygen.c",
  ]
  deps = [
    ":libssh",
  ]
}

executable("hostkeygen") {
  configs += [ ":fuchsia" ]
  sources = [
    "fuchsia/hostkeygen/hostkeygen.c",
  ]
  deps = [
    ":libssh",
  ]
}

executable("sftp-server") {
  sources = [
    "sftp-common.c",
    "sftp-server-main.c",
    "sftp-server.c",
  ]
  configs += [ ":fuchsia" ]
  deps = [
    ":libssh",
  ]
}

executable("scp") {
  sources = [
    "progressmeter.c",
    "scp.c",
  ]
  configs += [ ":fuchsia" ]
  deps = [
    ":libssh",
  ]
}
