//
// 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_library_headers {
    name: "webrtc_signaling_headers",
    export_include_dirs: ["./constants"],
    host_supported: true,
}

cc_binary_host {
    name: "webrtc_operator",
    srcs: [
        "client_handler.cpp",
        "device_registry.cpp",
        "device_handler.cpp",
        "device_list_handler.cpp",
        "server_config.cpp",
        "server.cpp",
        "signal_handler.cpp",
    ],
    header_libs: [
        "webrtc_signaling_headers",
    ],
    shared_libs: [
        "libbase",
        "liblog",
        "libcrypto",
        "libjsoncpp",
        "libssl",
        "libcuttlefish_fs",
    ],
    static_libs: [
        "libcap",
        "libgflags",
        "libcuttlefish_utils",
        "libcuttlefish_host_config",
        "libcuttlefish_host_websocket",
        "libwebsockets",
    ],
    defaults: ["cuttlefish_buildhost_only"],
}

// TODO(jemoreira): Ideally these files should be in $HOST_OUT/webrtc but I
// couldn't find a module type that would produce that, prebuilt_usr_share_host
// is the next best thing for now.
prebuilt_usr_share_host {
    name: "webrtc_index.html",
    src: "assets/index.html",
    filename: "index.html",
    sub_dir: "webrtc/assets",
}

prebuilt_usr_share_host {
    name: "webrtc_style.css",
    src: "assets/style.css",
    filename: "style.css",
    sub_dir: "webrtc/assets",
}

prebuilt_usr_share_host {
    name: "webrtc_adb.js",
    src: "assets/js/adb.js",
    filename: "adb.js",
    sub_dir: "webrtc/assets/js",
}

prebuilt_usr_share_host {
    name: "webrtc_cf.js",
    src: "assets/js/cf_webrtc.js",
    filename: "cf_webrtc.js",
    sub_dir: "webrtc/assets/js",
}

prebuilt_usr_share_host {
    name: "webrtc_app.js",
    src: "assets/js/app.js",
    filename: "app.js",
    sub_dir: "webrtc/assets/js",
}

prebuilt_usr_share_host {
    name: "webrtc_server.crt",
    src: "certs/server.crt",
    filename: "server.crt",
    sub_dir: "webrtc/certs",
}

prebuilt_usr_share_host {
    name: "webrtc_server.key",
    src: "certs/server.key",
    filename: "server.key",
    sub_dir: "webrtc/certs",
}

prebuilt_usr_share_host {
    name: "webrtc_server.p12",
    src: "certs/server.p12",
    filename: "server.p12",
    sub_dir: "webrtc/certs",
}

prebuilt_usr_share_host {
    name: "webrtc_trusted.pem",
    src: "certs/trusted.pem",
    filename: "trusted.pem",
    sub_dir: "webrtc/certs",
}
