//
// 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: "TetheringAndroidLibraryDefaults",
    sdk_version: "module_current",
    min_sdk_version: "30",
    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",
        "netlink-client",
        "networkstack-client",
        "android.hardware.tetheroffload.config-V1.0-java",
        "android.hardware.tetheroffload.control-V1.0-java",
        "net-utils-framework-common",
        "net-utils-device-common",
        "netd-client",
    ],
    libs: [
        "framework-connectivity",
        "framework-statsd.stubs.module_lib",
        "framework-tethering.impl",
        "framework-wifi",
        "unsupportedappusage",
    ],
    plugins: ["java_api_finder"],
    manifest: "AndroidManifestBase.xml",
}

// Build tethering static library, used to compile both variants of the tethering.
android_library {
    name: "TetheringApiCurrentLib",
    defaults: ["TetheringAndroidLibraryDefaults"],
}

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

    // 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",
    sdk_version: "module_current",
    privileged: true,
    jni_libs: [
        "libtetherutilsjni",
    ],
    resource_dirs: [
        "res",
    ],
    libs: [
        "framework-tethering",
        "framework-wifi",
    ],
    jarjar_rules: "jarjar-rules.txt",
    optimize: {
        proguard_flags_files: ["proguard.flags"],
    },
}

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

// Updatable tethering packaged as an application
android_app {
    name: "Tethering",
    defaults: ["TetheringAppDefaults"],
    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"],
    apex_available: ["com.android.tethering"],
    min_sdk_version: "30",
}

sdk {
    name: "tethering-module-sdk",
    java_sdk_libs: [
        "framework-tethering",
    ],
}
