//
// 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 {
    // See: http://go/android-license-faq
    default_applicable_licenses: ["Android-Apache-2.0"],
}

// The library name match the service-connectivity jarjar rules that put the JNI utils in the
// android.net.connectivity.com.android.net.module.util package.
cc_library_shared {
    name: "libandroid_net_connectivity_com_android_net_module_util_jni",
    min_sdk_version: "30",
    cflags: [
        "-Wall",
        "-Werror",
        "-Wno-unused-parameter",
        "-Wthread-safety",
    ],
    srcs: [
        "jni/com_android_net_module_util/onload.cpp",
    ],
    stl: "libc++_static",
    static_libs: [
        "libnet_utils_device_common_bpfjni",
        "libtcutils",
    ],
    shared_libs: [
        "liblog",
        "libnativehelper",
    ],
    apex_available: [
        "com.android.tethering",
    ],
}

cc_library_shared {
    name: "libservice-connectivity",
    min_sdk_version: "30",
    cflags: [
        "-Wall",
        "-Werror",
        "-Wno-unused-parameter",
        "-Wthread-safety",
    ],
    srcs: [
        "jni/com_android_server_BpfNetMaps.cpp",
        "jni/com_android_server_connectivity_ClatCoordinator.cpp",
        "jni/com_android_server_TestNetworkService.cpp",
        "jni/onload.cpp",
    ],
    stl: "libc++_static",
    header_libs: [
        "bpf_connectivity_headers",
        "libbase_headers",
    ],
    static_libs: [
        "libbase",
        "libclat",
        "libip_checksum",
        "libnetdutils",
        "libnetjniutils",
        "libtraffic_controller",
        "netd_aidl_interface-lateststable-ndk",
    ],
    shared_libs: [
        "liblog",
        "libnativehelper",
    ],
    apex_available: [
        "com.android.tethering",
    ],
}

java_library {
    name: "service-connectivity-pre-jarjar",
    sdk_version: "system_server_current",
    min_sdk_version: "30",
    srcs: [
        "src/**/*.java",
        ":framework-connectivity-shared-srcs",
        ":services-connectivity-shared-srcs",
        // TODO: move to net-utils-device-common
        ":connectivity-module-utils-srcs",
    ],
    libs: [
        "framework-annotations-lib",
        "framework-connectivity-pre-jarjar",
        "framework-tethering.stubs.module_lib",
        "framework-wifi.stubs.module_lib",
        "unsupportedappusage",
        "ServiceConnectivityResources",
    ],
    static_libs: [
        // Do not add libs here if they are already included
        // in framework-connectivity
        "dnsresolver_aidl_interface-V9-java",
        "modules-utils-shell-command-handler",
        "net-utils-device-common",
        "net-utils-device-common-bpf",
        "net-utils-device-common-netlink",
        "netd-client",
        "networkstack-client",
        "PlatformProperties",
        "service-connectivity-protos",
        "NetworkStackApiCurrentShims",
    ],
    apex_available: [
        "com.android.tethering",
    ],
    lint: { strict_updatability_linting: true },
    visibility: [
        "//packages/modules/Connectivity/service-t",
        "//packages/modules/Connectivity/tests:__subpackages__",
    ],
}

java_library {
    name: "service-connectivity-protos",
    sdk_version: "system_current",
    min_sdk_version: "30",
    proto: {
        type: "nano",
    },
    srcs: [
        ":system-messages-proto-src",
    ],
    libs: ["libprotobuf-java-nano"],
    apex_available: [
        "com.android.tethering",
    ],
    lint: { strict_updatability_linting: true },
}

java_library {
    name: "service-connectivity",
    sdk_version: "system_server_current",
    min_sdk_version: "30",
    installable: true,
    // This library combines system server jars that have access to different bootclasspath jars.
    // Lower SDK service jars must not depend on higher SDK jars as that would let them
    // transitively depend on the wrong bootclasspath jars. Sources also cannot be added here as
    // they would transitively depend on bootclasspath jars that may not be available.
    static_libs: [
        "service-connectivity-pre-jarjar",
        "service-connectivity-tiramisu-pre-jarjar",
        "service-nearby",
    ],
    jarjar_rules: ":connectivity-jarjar-rules",
    apex_available: [
        "com.android.tethering",
    ],
    lint: { strict_updatability_linting: true },
}

filegroup {
    name: "connectivity-jarjar-rules",
    srcs: ["jarjar-rules.txt"],
    visibility: ["//packages/modules/Connectivity:__subpackages__"],
}

// TODO: This filegroup temporary exposes for NetworkStats. It should be
// removed right after NetworkStats moves into mainline module.
filegroup {
    name: "traffic-controller-utils",
    srcs: ["src/com/android/server/BpfNetMaps.java"],
    visibility: ["//packages/modules/Connectivity:__subpackages__"],
}
