//
// 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
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "frameworks_base_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["frameworks_base_license"],
}

cc_library_shared {
    name: "libservice-connectivity",
    // TODO: build against the NDK (sdk_version: "30" for example)
    cflags: [
        "-Wall",
        "-Werror",
        "-Wno-unused-parameter",
        "-Wthread-safety",
    ],
    srcs: [
        "jni/com_android_server_TestNetworkService.cpp",
        "jni/onload.cpp",
    ],
    shared_libs: [
        "libbase",
        "liblog",
        "libnativehelper",
        // TODO: remove dependency on ifc_[add/del]_address by having Java code to add/delete
        // addresses, and remove dependency on libnetutils.
        "libnetutils",
    ],
    apex_available: [
        "com.android.tethering",
    ],
}

java_library {
    name: "service-connectivity-pre-jarjar",
    sdk_version: "system_server_current",
    srcs: [
        ":connectivity-service-srcs",
        ":framework-connectivity-shared-srcs",
        ":services-connectivity-shared-srcs",
        // TODO: move to net-utils-device-common, enable shrink optimization to avoid extra classes
        ":net-module-utils-srcs",
    ],
    libs: [
        // TODO (b/183097033) remove once system_server_current includes core_current
        "stable.core.platform.api.stubs",
        "android_system_server_stubs_current",
        "framework-annotations-lib",
        "framework-connectivity.impl",
        "framework-tethering.stubs.module_lib",
        "framework-wifi.stubs.module_lib",
        "unsupportedappusage",
        "ServiceConnectivityResources",
    ],
    static_libs: [
        "dnsresolver_aidl_interface-V7-java",
        "modules-utils-os",
        "net-utils-device-common",
        "net-utils-framework-common",
        "netd-client",
        "netlink-client",
        "networkstack-client",
        "PlatformProperties",
        "service-connectivity-protos",
    ],
    apex_available: [
        "//apex_available:platform",
        "com.android.tethering",
    ],
}

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

java_library {
    name: "service-connectivity",
    sdk_version: "system_server_current",
    installable: true,
    static_libs: [
        "service-connectivity-pre-jarjar",
    ],
    jarjar_rules: "jarjar-rules.txt",
    apex_available: [
        "//apex_available:platform",
        "com.android.tethering",
    ],
}
