// Copyright (C) 2020 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

cc_defaults {
    name: "ssh_defaults",
    vendor: true,
    cflags: [
        "-Wno-incompatible-pointer-types",
        "-Wno-pointer-sign",
        "-Wno-unused-parameter",
    ],
    include_dirs: [
        "external/openssh/openbsd-compat",
        "external/openssh/prebuilt-intermediates",
    ],
    shared_libs: [
        "libdl",
        "libcrypto",
        "libssl",
        "libz",
    ],
}

cc_library {
    name: "libssh",
    defaults: ["ssh_defaults"],
    cflags: ["-DENABLE_SK"],
    srcs: [
        "addrmatch.c",
        "atomicio.c",
        "authfd.c",
        "authfile.c",
        "bitmap.c",
        "canohost.c",
        "chacha.c",
        "channels.c",
        "cipher-aes.c",
        "cipher-aesctr.c",
        "cipher-chachapoly.c",
        "cipher-ctr.c",
        "cipher.c",
        "cleanup.c",
        "compat.c",
        "dh.c",
        "digest-openssl.c",
        "dispatch.c",
        "dns.c",
        "ed25519.c",
        "entropy.c",
        "fatal.c",
        "fe25519.c",
        "ge25519.c",
        "gss-genr.c",
        "hash.c",
        "hmac.c",
        "hostfile.c",
        "kex.c",
        "kexc25519.c",
        "kexdh.c",
        "kexecdh.c",
        "kexgen.c",
        "kexgex.c",
        "kexgexc.c",
        "kexsntrup4591761x25519.c",
        "krl.c",
        "log.c",
        "mac.c",
        "match.c",
        "misc.c",
        "moduli.c",
        "monitor_fdpass.c",
        "msg.c",
        "nchan.c",
        "openbsd-compat/bcrypt_pbkdf.c",
        "openbsd-compat/bindresvport.c",
        "openbsd-compat/blowfish.c",
        "openbsd-compat/bsd-closefrom.c",
        "openbsd-compat/bsd-err.c",
        "openbsd-compat/bsd-getpagesize.c",
        "openbsd-compat/bsd-getpeereid.c",
        "openbsd-compat/bsd-malloc.c",
        "openbsd-compat/bsd-misc.c",
        "openbsd-compat/bsd-openpty.c",
        "openbsd-compat/bsd-signal.c",
        "openbsd-compat/bsd-statvfs.c",
        "openbsd-compat/explicit_bzero.c",
        "openbsd-compat/fmt_scaled.c",
        "openbsd-compat/freezero.c",
        "openbsd-compat/getopt_long.c",
        "openbsd-compat/glob.c",
        "openbsd-compat/libressl-api-compat.c",
        "openbsd-compat/openssl-compat.c",
        "openbsd-compat/port-linux.c",
        "openbsd-compat/port-net.c",
        "openbsd-compat/pwcache.c",
        "openbsd-compat/readpassphrase.c",
        "openbsd-compat/reallocarray.c",
        "openbsd-compat/recallocarray.c",
        "openbsd-compat/rresvport.c",
        "openbsd-compat/setproctitle.c",
        "openbsd-compat/strcasestr.c",
        "openbsd-compat/strmode.c",
        "openbsd-compat/strtonum.c",
        "openbsd-compat/timingsafe_bcmp.c",
        "openbsd-compat/vis.c",
        "packet.c",
        "platform-misc.c",
        "platform-pledge.c",
        "poly1305.c",
        "readpass.c",
        "rijndael.c",
        "sc25519.c",
        "sntrup4591761.c",
        "smult_curve25519_ref.c",
        "ssh-dss.c",
        "ssh-ecdsa.c",
        "ssh-ecdsa-sk.c",
        "ssh-ed25519.c",
        "ssh-ed25519-sk.c",
        "ssh-rsa.c",
        "ssh-sk.c",
        "sshbuf-io.c",
        "sshbuf-getput-basic.c",
        "sshbuf-getput-crypto.c",
        "sshbuf-misc.c",
        "sshbuf.c",
        "ssherr.c",
        "sshkey.c",
        "ttymodes.c",
        "uidswap.c",
        "umac.c",
        "umac128.c",
        "utf8.c",
        "verify.c",
        "xmalloc.c",
    ],
}

cc_binary {
    name: "ssh",
    defaults: ["ssh_defaults"],
    srcs: [
        "clientloop.c",
        "mux.c",
        "readconf.c",
        "ssh.c",
        "sshconnect.c",
        "sshconnect2.c",
        "sshtty.c",
    ],
    shared_libs: ["libssh"],
}

cc_binary {
    name: "sftp",
    defaults: ["ssh_defaults"],
    srcs: [
        "sftp.c",
        "sftp-client.c",
        "sftp-common.c",
        "sftp-glob.c",
        "progressmeter.c",
    ],
    shared_libs: ["libssh"],
}

cc_binary {
    name: "scp",
    defaults: ["ssh_defaults"],
    srcs: [
        "scp.c",
        "progressmeter.c",
    ],
    shared_libs: ["libssh"],
}

cc_binary {
    name: "sshd",
    defaults: ["ssh_defaults"],
    srcs: [
        "audit-bsm.c",
        "audit-linux.c",
        "audit.c",
        "auth-bsdauth.c",
        "auth-krb5.c",
        "auth-options.c",
        "auth-pam.c",
        "auth-rhosts.c",
        "auth-shadow.c",
        "auth-sia.c",
        "auth.c",
        "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",
        "gss-serv-krb5.c",
        "gss-serv.c",
        "kexgexs.c",
        "loginrec.c",
        "md5crypt.c",
        "monitor.c",
        "monitor_wrap.c",
        "platform.c",
        "platform-tracing.c",
        "sandbox-null.c",
        "sandbox-rlimit.c",
        "sandbox-systrace.c",
        "servconf.c",
        "serverloop.c",
        "session.c",
        "sftp-common.c",
        "sftp-realpath.c",
        "sftp-server.c",
        "sshd.c",
        "sshlogin.c",
        "sshpty.c",
    ],
    shared_libs: [
        "libcutils",
        "libssh",
    ],
}

cc_binary {
    name: "ssh-keygen",
    defaults: ["ssh_defaults"],
    srcs: [
        "ssh-keygen.c",
        "sshsig.c",
    ],
    shared_libs: ["libssh"],
}

prebuilt_etc {
    name: "sshd_config",
    vendor: true,
    src: "sshd_config.android",
    relative_install_path: "ssh",
}

sh_binary {
    name: "start-ssh",
    vendor: true,
    src: "start-ssh",
}
