//
// 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_defaults {
    name: "modem_simulator_base",
    srcs: [
        "channel_monitor.cpp",
        "thread_looper.cpp",
        "command_parser.cpp",
        "modem_simulator.cpp",
        "modem_service.cpp",
        "sim_service.cpp",
        "network_service.cpp",
        "misc_service.cpp",
        "call_service.cpp",
        "data_service.cpp",
        "sms_service.cpp",
        "sup_service.cpp",
        "stk_service.cpp",
        "pdu_parser.cpp",
        "cf_device_config.cpp",
        "nvram_config.cpp"
    ],
    shared_libs: [
        "libext2_blkid",
        "libcuttlefish_fs",
        "libcuttlefish_utils",
        "libbase",
        "libjsoncpp",
        "libnl",
        "libcuttlefish_device_config",
        "libcuttlefish_device_config_proto",
    ],
    static_libs: [
        "libcuttlefish_host_config",
        "libgflags",
        "libtinyxml2",
    ],
    cflags: ["-Werror", "-Wall", "-fexceptions"],
    defaults: ["cuttlefish_host"],
}

cc_binary {
    name: "modem_simulator",
    srcs: [
        "main.cpp"
    ],
    defaults: ["cuttlefish_host", "modem_simulator_base"],
}

prebuilt_etc {
    name: "iccprofile_for_sim0.xml",
    vendor: true,
    src: "files/iccprofile_for_sim0.xml",
    filename: "iccprofile_for_sim0.xml",
    sub_dir: "modem_simulator/files",
}

prebuilt_etc {
    name: "iccprofile_for_sim0_for_CtsCarrierApiTestCases.xml",
    vendor: true,
    src: "files/iccprofile_for_sim0_for_CtsCarrierApiTestCases.xml",
    filename: "iccprofile_for_sim0_for_CtsCarrierApiTestCases.xml",
    sub_dir: "modem_simulator/files",
}

prebuilt_etc {
    name: "numeric_operator.xml",
    vendor: true,
    src: "files/numeric_operator.xml",
    filename: "numeric_operator.xml",
    sub_dir: "modem_simulator/files",
}

prebuilt_etc_host {
    name: "iccprofile_for_sim0.xml_host",
    src: "files/iccprofile_for_sim0.xml",
    filename: "iccprofile_for_sim0.xml",
    sub_dir: "modem_simulator/files",
}

prebuilt_etc_host {
    name: "iccprofile_for_sim0_for_CtsCarrierApiTestCases.xml_host",
    src: "files/iccprofile_for_sim0_for_CtsCarrierApiTestCases.xml",
    filename: "iccprofile_for_sim0_for_CtsCarrierApiTestCases.xml",
    sub_dir: "modem_simulator/files",
}

prebuilt_etc_host {
    name: "numeric_operator.xml_host",
    src: "files/numeric_operator.xml",
    filename: "numeric_operator.xml",
    sub_dir: "modem_simulator/files",
}

cc_test_host {
    name: "modem_simulator_test",
    srcs: [
        "unittest/main_test.cpp",
        "unittest/service_test.cpp",
        "unittest/command_parser_test.cpp",
        "unittest/pdu_parser_test.cpp",
    ],
    include_dirs: [
        "device/google/cuttlefish/host/commands",
    ],
    defaults: ["cuttlefish_host", "modem_simulator_base"],
    whole_static_libs: [
        "libc++fs"
    ],
}
