/*
 * Copyright (C) 2022 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 {
    name: "libtraffic_controller",
    defaults: ["netd_defaults"],
    srcs: [
        "TrafficController.cpp",
    ],
    header_libs: [
        "bpf_connectivity_headers",
    ],
    static_libs: [
        // TrafficController would use the constants of INetd so that add
        // netd_aidl_interface-lateststable-ndk.
        "netd_aidl_interface-lateststable-ndk",
    ],
    shared_libs: [
        // TODO: Find a good way to remove libbase.
        "libbase",
        "libcutils",
        "libnetdutils",
        "libutils",
        "liblog",
    ],
    export_include_dirs: ["include"],
    sanitize: {
        cfi: true,
    },
    apex_available: [
        "com.android.tethering",
    ],
    min_sdk_version: "30",
}

cc_test {
    name: "traffic_controller_unit_test",
    test_suites: ["general-tests", "mts-tethering"],
    test_config_template: ":net_native_test_config_template",
    require_root: true,
    local_include_dirs: ["include"],
    header_libs: [
        "bpf_connectivity_headers",
    ],
    srcs: [
        "TrafficControllerTest.cpp",
    ],
    static_libs: [
        "libbase",
        "libgmock",
        "liblog",
        "libnetdutils",
        "libtraffic_controller",
        "libutils",
        "libnetd_updatable",
        "netd_aidl_interface-lateststable-ndk",
    ],
    compile_multilib: "both",
    multilib: {
        lib32: {
            suffix: "32",
        },
        lib64: {
            suffix: "64",
        },
    },
}
