//
// 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.

package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

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_controls.css",
    src: "assets/controls.css",
    filename: "controls.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_controls.js",
    src: "assets/js/controls.js",
    filename: "controls.js",
    sub_dir: "webrtc/assets/js",
}

prebuilt_usr_share_host {
    name: "webrtc_rootcanal.js",
    src: "assets/js/rootcanal.js",
    filename: "rootcanal.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",
}
