//
// Copyright (C) 2019 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"],
}

java_defaults {
    name: "TetheringApiLevel",
    sdk_version: "module_current",
    target_sdk_version: "31",
    min_sdk_version: "30",
}

java_defaults {
    name: "TetheringAndroidLibraryDefaults",
    srcs: [
        "apishim/**/*.java",
        "src/**/*.java",
        ":framework-connectivity-shared-srcs",
        ":tethering-module-utils-srcs",
        ":services-tethering-shared-srcs",
    ],
    static_libs: [
        "androidx.annotation_annotation",
        "modules-utils-build",
        "modules-utils-statemachine",
        "networkstack-client",
        "android.hardware.tetheroffload.config-V1.0-java",
        "android.hardware.tetheroffload.control-V1.0-java",
        "android.hardware.tetheroffload.control-V1.1-java",
        "net-utils-framework-common",
        "net-utils-device-common",
        "net-utils-device-common-bpf",
        "net-utils-device-common-netlink",
        "netd-client",
    ],
    libs: [
        "framework-connectivity",
        "framework-statsd.stubs.module_lib",
        "framework-tethering.impl",
        "framework-wifi",
        "framework-bluetooth",
        "unsupportedappusage",
    ],
    plugins: ["java_api_finder"],
    manifest: "AndroidManifestBase.xml",
    lint: { strict_updatability_linting: true },
}

// build tethering static library, used to compile both variants of the tethering.
android_library {
    name: "TetheringApiCurrentLib",
    defaults: [
        "ConnectivityNextEnableDefaults",
        "TetheringAndroidLibraryDefaults",
        "TetheringApiLevel"
    ],
    static_libs: [
        "NetworkStackApiCurrentShims",
    ],
    apex_available: ["com.android.tethering"],
    lint: { strict_updatability_linting: true },
}

android_library {
    name: "TetheringApiStableLib",
    defaults: [
        "TetheringAndroidLibraryDefaults",
        "TetheringApiLevel"
    ],
    static_libs: [
        "NetworkStackApiStableShims",
    ],
    apex_available: ["com.android.tethering"],
    lint: { strict_updatability_linting: true },
}

// Due to b/143733063, APK can't access a jni lib that is in APEX (but not in the APK).
cc_library {
    name: "libcom_android_networkstack_tethering_util_jni",
    sdk_version: "30",
    apex_available: [
        "//apex_available:platform", // Used by InProcessTethering
        "com.android.tethering",
    ],
    min_sdk_version: "30",
    header_libs: [
        "bpf_syscall_wrappers",
        "bpf_connectivity_headers",
    ],
    srcs: [
        "jni/*.cpp",
    ],
    shared_libs: [
        "liblog",
        "libnativehelper_compat_libc++",
    ],
    static_libs: [
        "libnet_utils_device_common_bpfjni",
        "libnetjniutils",
        "libtcutils",
    ],

    // We cannot use plain "libc++" here to link libc++ dynamically because it results in:
    //   java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found
    // even if "libc++" is added into jni_libs below. Adding "libc++_shared" into jni_libs doesn't
    // build because soong complains of:
    //   module Tethering missing dependencies: libc++_shared
    //
    // So, link libc++ statically. This means that we also need to ensure that all the C++ libraries
    // we depend on do not dynamically link libc++. This is currently the case, because liblog is
    // C-only and libnativehelper_compat_libc also uses stl: "c++_static".
    stl: "c++_static",

    cflags: [
        "-Wall",
        "-Werror",
        "-Wno-unused-parameter",
        "-Wthread-safety",
    ],

    ldflags: ["-Wl,--exclude-libs=ALL,-error-limit=0"],
}

// Common defaults for compiling the actual APK.
java_defaults {
    name: "TetheringAppDefaults",
    privileged: true,
    jni_libs: [
        "libcom_android_networkstack_tethering_util_jni",
    ],
    resource_dirs: [
        "res",
    ],
    libs: [
        "framework-tethering",
        "framework-wifi",
    ],
    jarjar_rules: "jarjar-rules.txt",
    optimize: {
        proguard_flags_files: ["proguard.flags"],
    },
    lint: { strict_updatability_linting: true },
}

// Non-updatable tethering running in the system server process for devices not using the module
android_app {
    name: "InProcessTethering",
    defaults: ["TetheringAppDefaults", "TetheringApiLevel", "ConnectivityNextEnableDefaults"],
    static_libs: ["TetheringApiCurrentLib"],
    certificate: "platform",
    manifest: "AndroidManifest_InProcess.xml",
    // InProcessTethering is a replacement for Tethering
    overrides: ["Tethering"],
    apex_available: ["com.android.tethering"],
    lint: { strict_updatability_linting: true },
}

// Updatable tethering packaged for finalized API
android_app {
    name: "Tethering",
    defaults: ["TetheringAppDefaults", "TetheringApiLevel"],
    static_libs: ["TetheringApiStableLib"],
    certificate: "networkstack",
    manifest: "AndroidManifest.xml",
    use_embedded_native_libs: true,
    // The permission configuration *must* be included to ensure security of the device
    required: [
        "NetworkPermissionConfig",
        "privapp_whitelist_com.android.networkstack.tethering",
    ],
    apex_available: ["com.android.tethering"],
    lint: { strict_updatability_linting: true },
}

android_app {
    name: "TetheringNext",
    defaults: [
        "TetheringAppDefaults",
        "TetheringApiLevel",
        "ConnectivityNextEnableDefaults",
    ],
    static_libs: ["TetheringApiCurrentLib"],
    certificate: "networkstack",
    manifest: "AndroidManifest.xml",
    use_embedded_native_libs: true,
    // The permission configuration *must* be included to ensure security of the device
    required: [
        "NetworkPermissionConfig",
        "privapp_whitelist_com.android.networkstack.tethering",
    ],
    apex_available: ["com.android.tethering"],
    lint: { strict_updatability_linting: true },
}

sdk {
    name: "tethering-module-sdk",
    bootclasspath_fragments: ["com.android.tethering-bootclasspath-fragment"],
}
