//
// Copyright (C) 2010 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: [
        "cts_apps_CtsVerifier_opencv_license",
        "Android-Apache-2.0",
        "cts_apps_CtsVerifier_fatcow_license",
    ],
}

license {
    name: "cts_apps_CtsVerifier_opencv_license",
    package_name: "opencv",
    license_kinds: [
        "SPDX-license-identifier-BSD",
    ],
    license_text: [
        "libs/opencv-android_LICENSE",
        "res/raw/opencv_library_license",
    ],
}

// See: src/com/android/cts/verifier/features/FeatureSummaryActivity.java
license {
    name: "cts_apps_CtsVerifier_fatcow_license",
    package_name: "fatcow icons",
    license_kinds: [
        "SPDX-license-identifier-CC-BY-3.0",
    ],
    license_text: ["LICENSE_CC_BY"],
}

filegroup {
    name: "CtsVerifierNotice",
    srcs: ["NOTICE.txt"],
}

filegroup {
    name: "CtsVerifierMockVrListenerServiceFiles",
    srcs: ["src/com/android/cts/verifier/vr/MockVrListenerService.java"],
}

android_library {
    name: "CtsVerifierLibT",
    defaults: ["cts_error_prone_rules_tests"],

    srcs: [
        "src/**/*.java",
        "src/**/I*.aidl",
    ],

    aidl: {
        include_dirs: ["frameworks/native/aidl/gui"],
    },

    static_libs: [
        "android-ex-camera2",
        "compatibility-common-util-devicesidelib",
        "cts-sensors-tests",
        "cts-camera-performance-tests",
        "ctstestrunner-axt",
        "apache-commons-math",
        "androidplot",
        "ctsverifier-opencv",
        "core-tests-support",
        "androidx.legacy_legacy-support-v4",
        "mockito-target-minus-junit4",
        "mockwebserver",
        "compatibility-device-util-axt",
        "platform-test-annotations",
        "cts-security-test-support-library",
        "cts-midi-lib",
        "cbor-java",
        "CtsCameraUtils",
        "androidx.legacy_legacy-support-v4",
        "CtsForceStopHelper-constants",
        "ctsmediautil",
        "DpmWrapper",
    ],

    libs: ["telephony-common"] + ["android.test.runner.stubs"] + ["android.test.base.stubs"] + ["android.test.mock.stubs"] + ["android.car-test-stubs"] + ["voip-common"] + ["truth-prebuilt"],

    platform_apis: true,

    optimize: {
        proguard_flags_files: ["proguard.flags"],
    },

    dex_preopt: {
        enabled: false,
    },
}

android_test {
    name: "CtsVerifier",
    static_libs: [
        "CtsVerifierLibT",
    ],

    compile_multilib: "both",

    manifest: "AndroidManifest-verifierConfig.xml",

    jni_libs: [
        "libctsverifier_jni",
        "libctsnativemidi_jni",
        "libaudioloopback_jni",
        "libmegaaudio_jni",
    ],
}

// opencv library
java_import {
    name: "ctsverifier-opencv",
    jars: ["libs/opencv3-android.jar"],
}

// Build CTS verifier framework as a library.
android_library {
    name: "cts-verifier-framework",

    sdk_version: "current",
    min_sdk_version: "29",
    resource_dirs: ["res"],
    srcs: [
        "src/com/android/cts/verifier/*.java",
        "src/**/I*.aidl",
    ],

    static_libs: [
        "androidx.legacy_legacy-support-v4",
        "compatibility-common-util-devicesidelib",
        "compatibility-device-util-axt",
    ],

}

filegroup {
    name: "pre_installed_apps",
    srcs: [
        ":CtsEmptyDeviceAdmin",
        ":CtsEmptyDeviceOwner",
        ":CtsPermissionApp",
        ":CtsForceStopHelper",
        ":NotificationBot",
        ":CrossProfileTestApp",
        ":CtsTtsEngineSelectorTestHelper",
        ":CtsTtsEngineSelectorTestHelper2",
    ],
}

// Apps to be installed as Instant App using adb install --instant
filegroup {
    name: "pre_installed_instant_app",
    srcs: [
        ":CtsVerifierInstantApp",
    ],
}

filegroup {
    name: "other_required_apps",
    srcs: [
        ":CtsCarWatchdogCompanionApp",
        ":CtsTileServiceApp",
        ":CtsVerifierUSBCompanion",
        ":CtsVpnFirewallAppApi23",
        ":CtsVpnFirewallAppApi24",
        ":CtsVpnFirewallAppNotAlwaysOn",
    ],
}

filegroup {
    name: "cts_apps_to_include",
    srcs: [
        ":pre_installed_apps",
        ":pre_installed_instant_app",
        ":other_required_apps",
    ],
}

//
// Creates a "cts-verifier" directory that will contain:
//
// 1. Out directory with a "android-cts-verifier" containing the CTS Verifier
//    and other binaries it needs.
//
// 2. Zipped version of the android-cts-verifier directory to be included with
//    the build distribution.
//
genrule {
    name: "android-cts-verifier",
    srcs: [
        ":cts_apps_to_include",
        ":CtsVerifier",
        ":camera-its",
        ":CtsVerifierNotice",
    ],
    tools: [
        "soong_zip",
        "merge_zips",
    ],
    out: ["android-cts-verifier.zip"],
    cmd: "echo $(locations :cts_apps_to_include) $(location :CtsVerifier) $(location :CtsVerifierNotice) > $(genDir)/list &&" +
        " $(location soong_zip) -o $(genDir)/cts-verifier.zip -j -P android-cts-verifier -l $(genDir)/list &&" +
        " $(location merge_zips) $(out) $(genDir)/cts-verifier.zip $(location :camera-its)",
    dists: [
        {
            targets: ["cts"],
        },
    ],
}

filegroup {
    name: "android-cts-verifier-for-make",
    srcs: [":android-cts-verifier"],
    export_to_make_var: "SOONG_ANDROID_CTS_VERIFIER_ZIP",
}
