//
// Copyright (C) 2018 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.
//

// The network stack can be compiled using system_current (non-finalized) SDK, or finalized system_X
// SDK. There is also a variant that uses system_current SDK and runs in the system process
// (InProcessNetworkStack). The following structure is used to create the build rules:
//
//                          NetworkStackAndroidLibraryDefaults <-- common defaults for android libs
//                                            /    \
//           +NetworkStackApiStableShims --> /      \ <-- +NetworkStackApiCurrentShims
//           +NetworkStackReleaseApiLevel   /        \    +NetworkStackDevApiLevel
//           +jarjar apishim.api[latest].* /          \
//            to apishim.*                /            \
//                                       /              \
//                                      /                \
//                                     /                  \               android libs w/ all code
//                                    / <- +module src/ -> \              (also used in unit tests)
//                                   /                      \                        |
//               NetworkStackApiStableLib               NetworkStackApiCurrentLib <--*
//                          |                                     |
//                          | <--   +NetworkStackAppDefaults  --> |
//                          |          (APK build params)         |
//                          |                                     |
//                          | <-- +NetworkStackReleaseApiLevel    | <-- +NetworkStackDevApiLevel
//                          |                                     |
//                          |                                     |
//                NetworkStackApiStable          NetworkStack, InProcessNetworkStack, <-- APKs
//                                                         TestNetworkStack

// Common defaults to define SDK level
package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

// In some branches, this may be module_current instead of module_34 if the SDK prebuilts are not
// yet dropped there, meaning module_34 cannot be used yet.
module_34_version = "module_34"

// TODO: remove this default and replace with ConnectivityNextEnableDefaults. This will need to be
// done separately in each branch due to merge conflicts.
// Defaults to enable/disable java targets that depend on
// NetworkStackNext, which uses development APIs. "enabled" may
// have a different value depending on the branch.
java_defaults {
    name: "NetworkStackNextEnableDefaults",
    enabled: true,
}

// This is a placeholder comment to avoid merge conflicts
// as the above target may have different "enabled" values
// depending on the branch

java_defaults {
    name: "NetworkStackDevApiLevel",
    min_sdk_version: "30",
    sdk_version: "module_current",
    libs: [
        "framework-configinfrastructure",
        "framework-connectivity",
        "framework-connectivity-t",
        "framework-statsd",
        "framework-wifi",
    ],
}

// Common defaults for NetworkStack integration tests, root tests and coverage tests
// to keep tests always running against the same target sdk version with NetworkStack.
java_defaults {
    name: "NetworkStackReleaseTargetSdk",
    min_sdk_version: "30",
    target_sdk_version: "34",
}

java_defaults {
    name: "NetworkStackReleaseApiLevel",
    defaults: ["NetworkStackReleaseTargetSdk"],
    sdk_version: module_34_version,
    libs: [
        "framework-configinfrastructure",
        "framework-connectivity.stubs.module_lib",
        "framework-connectivity-t",
        "framework-statsd",
        "framework-wifi",
    ],
}

// Libraries for the API shims
java_defaults {
    name: "NetworkStackShimsDefaults",
    libs: [
        "androidx.annotation_annotation",
        "networkstack-aidl-latest",
    ],
    static_libs: [
        "modules-utils-build_system",
    ],
    apex_available: [
        "com.android.tethering",
        "//apex_available:platform", // For InProcessNetworkStack
    ],
    min_sdk_version: "30",
}

// Common shim code. This includes the shim interface definitions themselves, and things like
// ShimUtils and UnsupportedApiLevelException. Compiles against system_current because ShimUtils
// needs access to all Build.VERSION_CODES.*, which by definition are only in the newest SDK.
// TODO: consider moving ShimUtils into a library (or removing it in favour of SdkLevel) and compile
// this target against the lowest-supported SDK (currently 30).
java_library {
    name: "NetworkStackShimsCommon",
    defaults: ["NetworkStackShimsDefaults"],
    srcs: ["apishim/common/**/*.java"],
    sdk_version: "system_current",
    visibility: ["//visibility:private"],
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}

// Each level of the shims (29, 30, ...) is its own java_library compiled against the corresponding
// system_X SDK. this ensures that each shim can only use SDK classes that exist in its SDK level.
java_library {
    name: "NetworkStackApi29Shims",
    defaults: ["NetworkStackShimsDefaults"],
    srcs: ["apishim/29/**/*.java"],
    libs: [
        "NetworkStackShimsCommon",
    ],
    sdk_version: "system_29",
    visibility: ["//visibility:private"],
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}

java_library {
    name: "NetworkStackApi30Shims",
    defaults: ["NetworkStackShimsDefaults"],
    srcs: [
        "apishim/30/**/*.java",
    ],
    libs: [
        "NetworkStackShimsCommon",
        "NetworkStackApi29Shims",
    ],
    sdk_version: "system_30",
    visibility: ["//visibility:private"],
    lint: {
        strict_updatability_linting: true,
        baseline_filename: "lint-baseline.xml",
    },
}

java_library {
    name: "NetworkStackApi31Shims",
    defaults: ["NetworkStackShimsDefaults"],
    srcs: [
        "apishim/31/**/*.java",
    ],
    static_libs: [
        // Libs building against module API can only be linked against when building against
        // module API (so NetworkStackApi30Shims or NetworkStackApi29Shims can't use it, since they
        // use system_30 and system_29 respectively).
        "net-utils-framework-common",
    ],
    libs: [
        "NetworkStackShimsCommon",
        "NetworkStackApi29Shims",
        "NetworkStackApi30Shims",
        "framework-connectivity",
    ],
    sdk_version: "module_31",
    visibility: ["//visibility:private"],
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}

java_library {
    name: "NetworkStackApi33Shims",
    defaults: ["NetworkStackShimsDefaults"],
    srcs: [
        "apishim/33/**/*.java",
    ],
    libs: [
        "NetworkStackShimsCommon",
        "NetworkStackApi29Shims",
        "NetworkStackApi30Shims",
        "NetworkStackApi31Shims",
        "framework-bluetooth",
        "framework-connectivity",
        "framework-connectivity-t.stubs.module_lib",
        "framework-tethering",
    ],
    sdk_version: "module_33",
    visibility: ["//visibility:private"],
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}

java_library {
    name: "NetworkStackApi34Shims",
    defaults: ["NetworkStackShimsDefaults"],
    srcs: [
        "apishim/34/**/*.java",
    ],
    libs: [
        "NetworkStackShimsCommon",
        "NetworkStackApi29Shims",
        "NetworkStackApi30Shims",
        "NetworkStackApi31Shims",
        "NetworkStackApi33Shims",
        "framework-bluetooth",
        "framework-connectivity",
        "framework-connectivity-t.stubs.module_lib",
        "framework-tethering",
    ],
    sdk_version: module_34_version,
    visibility: ["//visibility:private"],
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}

// Shims for APIs being added to the current development version of Android. These APIs are not
// stable and have no defined version number. These could be called 10000, but they use the next
// integer so if the next SDK release happens to use that integer, we don't need to rename them.
// Jarjar rules are generated based on the stable shims, which do not contain this library. As a
// result, no static_lib that needs jarjar should be used here. In general, static_libs should not
// be used in this library at all; instead they can be in one of the earlier, shim libraries which
// are part of the stable shims and scanned when generating jarjar rules.
java_library {
    name: "NetworkStackApi35Shims",
    defaults: [
        "NetworkStackShimsDefaults",
        "ConnectivityNextEnableDefaults",
    ],
    srcs: [
        "apishim/35/**/*.java",
    ],
    libs: [
        "NetworkStackShimsCommon",
        "NetworkStackApi29Shims",
        "NetworkStackApi30Shims",
        "NetworkStackApi31Shims",
        "NetworkStackApi33Shims",
        "NetworkStackApi34Shims",
        "framework-bluetooth",
        "framework-connectivity",
        "framework-connectivity-t.stubs.module_lib",
        "framework-tethering",
        "android.net.ipsec.ike.stubs.module_lib",
    ],
    sdk_version: "module_current",
    visibility: ["//visibility:private"],
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}

// API current uses the API current shims directly.
// The current (in-progress) shims are in the com.android.networkstack.apishim package and are
// called directly by the networkstack code.
java_library {
    name: "NetworkStackApiCurrentShims",
    defaults: [
        "NetworkStackShimsDefaults",
        "NetworkStackDevApiLevel",
        "ConnectivityNextEnableDefaults",
    ],
    static_libs: [
        "NetworkStackShimsCommon",
        "NetworkStackApi29Shims",
        "NetworkStackApi30Shims",
        "NetworkStackApi31Shims",
        "NetworkStackApi33Shims",
        "NetworkStackApi34Shims",
        "NetworkStackApi35Shims",
    ],
    visibility: [
        "//packages/modules/Connectivity/Tethering",
        "//packages/modules/Connectivity/service",
        "//packages/modules/Connectivity/service-t",
        "//packages/modules/Connectivity/tests:__subpackages__",
    ],
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}

// API stable uses jarjar to rename the latest stable apishim package from
// com.android.networkstack.apishim.apiXX to com.android.networkstack.apishim, which is called by
// the networkstack code.
java_library {
    name: "NetworkStackApiStableShims",
    defaults: [
        "NetworkStackShimsDefaults",
        "NetworkStackReleaseApiLevel",
    ],
    static_libs: [
        "NetworkStackShimsCommon",
        "NetworkStackApi29Shims",
        "NetworkStackApi30Shims",
        "NetworkStackApi31Shims",
        "NetworkStackApi33Shims",
        "NetworkStackApi34Shims",
    ],
    jarjar_rules: "apishim/jarjar-rules-compat.txt",
    visibility: [
        "//packages/modules/Connectivity/Tethering",
        "//packages/modules/Connectivity/service",
        "//packages/modules/Connectivity/service-t",
        "//packages/modules/Connectivity/tests:__subpackages__",
    ],
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}

// Common defaults for android libraries containing network stack code, used to compile variants of
// the network stack in the system process and in the network_stack process
java_defaults {
    name: "NetworkStackAndroidLibraryDefaults",
    srcs: [
        ":framework-networkstack-shared-srcs",
    ],
    libs: ["unsupportedappusage"],
    static_libs: [
        "androidx.annotation_annotation",
        "modules-utils-build_system",
        "modules-utils-preconditions",
        "modules-utils-shell-command-handler",
        "modules-utils-statemachine",
        "netd_aidl_interface-lateststable-java",
        "networkstack-client",
        "net-utils-framework-common",
        // See note on statsprotos when adding/updating proto build rules
        "datastallprotosnano",
        "statsprotos",
        "captiveportal-lib",
        "net-utils-device-common-ip",
        "net-utils-device-common-netlink",
        "net-utils-device-common-struct",
    ],
}

// The versions of the android library containing network stack code compiled for each SDK variant.
android_library {
    name: "NetworkStackApiCurrentLib",
    defaults: [
        "NetworkStackDevApiLevel",
        "NetworkStackAndroidLibraryDefaults",
        "ConnectivityNextEnableDefaults",
    ],
    srcs: [
        "src/**/*.java",
        ":statslog-networkstack-java-gen-current",
    ],
    static_libs: [
        "NetworkStackApiCurrentShims",
    ],
    manifest: "AndroidManifestBase.xml",
    visibility: [
        "//frameworks/base/tests/net/integration",
        "//packages/modules/Connectivity/Tethering/tests/integration",
        "//packages/modules/NetworkStack/tests/unit",
        "//packages/modules/NetworkStack/tests/integration",
    ],
    lint: {
        strict_updatability_linting: true,
        baseline_filename: "lint-baseline.xml",
    },
}

android_library {
    name: "NetworkStackApiStableLib",
    defaults: [
        "NetworkStackReleaseApiLevel",
        "NetworkStackAndroidLibraryDefaults",
    ],
    srcs: [
        "src/**/*.java",
        ":statslog-networkstack-java-gen-stable",
    ],
    static_libs: [
        "NetworkStackApiStableShims",
    ],
    manifest: "AndroidManifestBase.xml",
    visibility: [
        "//frameworks/base/packages/Connectivity/tests/integration",
        "//frameworks/base/tests/net/integration",
        "//packages/modules/Connectivity/Tethering/tests/integration",
        "//packages/modules/Connectivity/tests/integration",
        "//packages/modules/NetworkStack/tests/unit",
        "//packages/modules/NetworkStack/tests/integration",
    ],
    lint: {
        strict_updatability_linting: true,
        baseline_filename: "lint-baseline.xml",
    },
}

java_library {
    name: "DhcpPacketLib",
    defaults: ["NetworkStackReleaseApiLevel"],
    srcs: [
        "src/android/net/DhcpResults.java",
        "src/android/net/dhcp/Dhcp*Packet.java",
    ],
    libs: [
        "androidx.annotation_annotation",
        "framework-annotations-lib",
    ],
    static_libs: [
        "modules-utils-build",
        "net-utils-framework-common",
        "networkstack-client",
        "net-utils-device-common",
    ],
    // If this library is ever used outside of tests, it should not use "Dhcp*Packet", and specify
    // its contents explicitly.
    visibility: [
        "//packages/modules/Connectivity/Tethering/tests/integration",
        "//packages/modules/Connectivity/tests/cts/net",
    ],
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}

java_genrule {
    name: "NetworkStackJarJarRules",
    tool_files: [
        // com.android.networkstack.apishim is already in the target package that is not jarjared,
        // so it does not matter whether ApiStable or ApiCurrent is used to generate the jarjar
        // rules. Use ApiStable to be based on most stable release configuration and be buildable
        // in all branches.
        ":NetworkStackApiStableLib{.jar}",
        "jarjar-excludes.txt",
    ],
    tools: [
        "jarjar-rules-generator",
    ],
    out: ["NetworkStackJarJarRules.txt"],
    cmd: "$(location jarjar-rules-generator) " +
        "$(location :NetworkStackApiStableLib{.jar}) " +
        "--prefix com.android.networkstack " +
        "--excludes $(location jarjar-excludes.txt) " +
        "--output $(out)",
    visibility: [
        "//packages/modules/NetworkStack/tests/unit",
        "//packages/modules/NetworkStack/tests/integration",
        "//packages/modules/Connectivity/tests:__subpackages__",
        "//packages/modules/Connectivity/Tethering/tests/integration",
    ],
}

// Common defaults for compiling the actual APK, based on the NetworkStackApiXBase android libraries
java_defaults {
    name: "NetworkStackAppDefaults",
    privileged: true,
    jni_libs: [
        "libnativehelper_compat_libc++",
        "libnetworkstackutilsjni",
    ],
    // Resources already included in NetworkStackBase
    resource_dirs: [],
    jarjar_rules: ":NetworkStackJarJarRules",
    use_embedded_native_libs: true,
    optimize: {
        ignore_warnings: false,
        proguard_flags_files: ["proguard.flags"],
    },
}

// Non-updatable network stack running in the system server process for devices not using the module
android_app {
    name: "InProcessNetworkStack",
    defaults: [
        "NetworkStackAppDefaults",
        "NetworkStackDevApiLevel",
        "ConnectivityNextEnableDefaults",
    ],
    static_libs: ["NetworkStackApiCurrentLib"],
    certificate: "platform",
    manifest: "AndroidManifest_InProcess.xml",
    // InProcessNetworkStack is a replacement for NetworkStack
    overrides: [
        "NetworkStack",
        "NetworkStackNext",
    ],
    // The InProcessNetworkStack goes together with the PlatformCaptivePortalLogin, which replaces
    // the default CaptivePortalLogin.
    required: [
        "PlatformCaptivePortalLogin",
    ],
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}

// Pre-merge the AndroidManifest for NetworkStackNext, so that its manifest can be merged on top
android_library {
    name: "NetworkStackNextManifestBase",
    defaults: [
        "NetworkStackAppDefaults",
        "NetworkStackDevApiLevel",
        "ConnectivityNextEnableDefaults",
    ],
    static_libs: ["NetworkStackApiCurrentLib"],
    manifest: "AndroidManifest.xml",
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}

// NetworkStack build targeting the current API release, for testing on in-development SDK
android_app {
    name: "NetworkStackNext",
    defaults: [
        "NetworkStackAppDefaults",
        "NetworkStackDevApiLevel",
        "ConnectivityNextEnableDefaults",
    ],
    static_libs: ["NetworkStackNextManifestBase"],
    certificate: "networkstack",
    manifest: "AndroidManifest_Next.xml",
    required: [
        "privapp_whitelist_com.android.networkstack",
    ],
    updatable: true,
    lint: {
        strict_updatability_linting: true,
        baseline_filename: "lint-baseline.xml",
    },
}

// Updatable network stack for finalized API
android_app {
    name: "NetworkStack",
    defaults: [
        "NetworkStackAppDefaults",
        "NetworkStackReleaseApiLevel",
    ],
    static_libs: ["NetworkStackApiStableLib"],
    certificate: "networkstack",
    manifest: "AndroidManifest.xml",
    required: [
        "privapp_whitelist_com.android.networkstack",
    ],
    updatable: true,
    lint: {
        strict_updatability_linting: true,
        baseline_filename: "lint-baseline.xml",
    },
}

cc_library_shared {
    name: "libnetworkstackutilsjni",
    srcs: [
        "jni/network_stack_utils_jni.cpp",
    ],
    header_libs: [
        "bpf_headers",
    ],
    sdk_version: "30",
    min_sdk_version: "30",
    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 NetworkStack 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".
    //
    // TODO: find a better solution for this in R.
    stl: "c++_static",
    cflags: [
        "-Wall",
        "-Werror",
        "-Wno-unused-parameter",
    ],
}

genrule {
    name: "statslog-networkstack-java-gen-current",
    tools: ["stats-log-api-gen"],
    cmd: "$(location stats-log-api-gen) --java $(out) --module network_stack" +
        " --javaPackage com.android.networkstack.metrics --javaClass NetworkStackStatsLog" +
        " --minApiLevel 30",
    out: ["com/android/networkstack/metrics/NetworkStackStatsLog.java"],
}

genrule {
    name: "statslog-networkstack-java-gen-stable",
    tools: ["stats-log-api-gen"],
    cmd: "$(location stats-log-api-gen) --java $(out) --module network_stack" +
        " --javaPackage com.android.networkstack.metrics --javaClass NetworkStackStatsLog" +
        " --minApiLevel 30 --compileApiLevel 30",
    out: ["com/android/networkstack/metrics/NetworkStackStatsLog.java"],
}

version_code_networkstack_next = "300000000"
version_code_networkstack_test = "999999999"

genrule {
    name: "NetworkStackTestAndroidManifest",
    srcs: ["AndroidManifest.xml"],
    out: ["TestAndroidManifest.xml"],
    cmd: "sed -E 's/versionCode=\"[0-9]+\"/versionCode=\"" +
        version_code_networkstack_test +
        "\"/' $(in) > $(out)",
    visibility: ["//visibility:private"],
}

android_app {
    name: "TestNetworkStack",
    defaults: [
        "NetworkStackAppDefaults",
        "NetworkStackReleaseApiLevel",
    ],
    static_libs: ["NetworkStackApiStableLib"],
    certificate: "networkstack",
    manifest: ":NetworkStackTestAndroidManifest",
    required: [
        "privapp_whitelist_com.android.networkstack",
    ],
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}

// When adding or modifying protos, the jarjar rules and possibly proguard rules need
// to be updated: proto libraries may pull additional static libraries.
java_library_static {
    name: "statsprotos",
    proto: {
        type: "lite",
    },
    srcs: [
        "src/com/android/networkstack/metrics/stats.proto",
    ],
    static_libs: [
        "networkstackprotos",
    ],
    defaults: ["NetworkStackReleaseApiLevel"],
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}
