# 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",
    "//zircon/public/lib/zircon-internal",
  ]
  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" ]
  cflags = [
    # TODO(36439): Clang introduced a new warning that is raised when we
    # attempt to check the size of an array through sizeof() division. If the
    # type of the sizeof() in the divisor is not the same as that of the array
    # element, a warning is raised.
    "-Wno-unknown-warning-option",
    "-Wno-sizeof-array-div",
  ]
}

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",
  ]
}
