// Copyright (C) 2011 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: ["external_dexmaker_license"],
}

// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
//
// large-scale-change included anything that looked like it might be a license
// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
//
// Please consider removing redundant or irrelevant files from 'license_text:'.
// See: http://go/android-license-faq
license {
    name: "external_dexmaker_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-MIT",
    ],
    license_text: [
        "COPYING",
        "LICENSE",
        "NOTICE",
    ],
}

java_library_static {
    name: "dexmaker",

    // Include all the java files.
    srcs: ["dexmaker/src/main/java/**/*.java"],

    static_libs: [
        "dexmaker-dx-target",
    ],

    sdk_version: "core_current",

    errorprone: {
        javacflags: [
            "-Xep:EmptyTopLevelDeclaration:WARN",
            "-Xep:ReturnValueIgnored:WARN",
        ],
    },
}

// Build Dexmaker's MockMaker, a plugin to Mockito
java_library_static {
    name: "dexmaker-mockmaker",
    sdk_version: "core_current",
    srcs: ["dexmaker-mockito/src/main/java/**/*.java"],
    java_resource_dirs: ["dexmaker-mockito/src/main/resources"],
    libs: [
        "dexmaker",
        "mockito-api",
    ],
}

// Build dispatcher for Dexmaker's inline MockMaker
java_library_static {
    name: "dexmaker-inline-mockmaker-dispatcher",
    sdk_version: "core_current",
    srcs: ["dexmaker-mockito-inline-dispatcher/src/main/java/**/*.java"],
}

// Defaults for agent code.
cc_defaults {
    name: "dexmaker_agent_defaults",

    // Compile with the NDK, so that the agent can be used in apps.
    sdk_version: "current",
    stl: "libc++_static",

    host_supported: false,
    device_supported: true,

    rtti: true,

    cflags: [
        "-std=c++11",
        "-Wall",
        "-Werror",
        "-Wno-unused-parameter",
        "-Wno-shift-count-overflow",
        "-Wno-error=non-virtual-dtor",
        "-Wno-sign-compare",
        "-Wno-switch",
        "-Wno-missing-braces",
    ],

    static_libs: [
        "slicer_ndk",
    ],

    shared_libs: [
        "libz",
    ],

    header_libs: [
        "jni_headers",
        "libopenjdkjvmti_headers",
    ],
}

// Build agent for Dexmaker's inline MockMaker
cc_library_shared {
    name: "libdexmakerjvmtiagent",
    defaults: [
        "dexmaker_agent_defaults",
    ],
    srcs: ["dexmaker-mockito-inline/src/main/jni/**/*.cc"],
    min_sdk_version: "29",
}

// Build agent for Dexmaker's extended MockMaker
cc_library_shared {
    name: "libstaticjvmtiagent",
    defaults: [
        "dexmaker_agent_defaults",
    ],
    srcs: ["dexmaker-mockito-inline-extended/src/main/jni/**/*.cc"],
    min_sdk_version: "29",
}

// Build agent for Dexmaker's inline tests
cc_library_shared {
    name: "libmultiplejvmtiagentsinterferenceagent",
    defaults: [
        "dexmaker_agent_defaults",
    ],
    srcs: ["dexmaker-mockito-inline-tests/src/main/jni/**/*.cc"],
}

// Build Dexmaker's inline MockMaker, a plugin to Mockito
java_library_static {
    name: "dexmaker-inline-mockmaker",
    sdk_version: "current",
    srcs: ["dexmaker-mockito-inline/src/main/java/**/*.java"],
    java_resource_dirs: ["dexmaker-mockito-inline/src/main/resources"],
    libs: [
        "dexmaker",
        "mockito-api",
    ],
    required: ["libdexmakerjvmtiagent"],
}

// Build Dexmaker's extended MockMaker, a plugin to Mockito
java_library_static {
    name: "dexmaker-extended-mockmaker",
    sdk_version: "current",
    srcs: ["dexmaker-mockito-inline-extended/src/main/java/**/*.java"],

    java_resource_dirs: ["dexmaker-mockito-inline/src/main/resources"],

    libs: [
        "dexmaker",
        "mockito-api",
        "dexmaker-inline-mockmaker",
    ],
    required: [
        "libdexmakerjvmtiagent",
        "libstaticjvmtiagent",
    ],

    errorprone: {
        javacflags: [
            "-Xep:ReturnValueIgnored:WARN",
            "-Xep:InfiniteRecursion:WARN",
        ],
    },
}

// Provides mockito functionality for on-device tests. Does not allow stubbing of final or static
// methods.
java_library_static {
    name: "mockito-target",
    static_libs: [
        "mockito-target-minus-junit4",
        "junit",
    ],
    sdk_version: "core_current",
}

// Same as mockito-target but does not bundle junit
java_library_static {
    name: "mockito-target-minus-junit4",
    static_libs: [
        "mockito",
        "dexmaker",
        "dexmaker-mockmaker",
        "objenesis",
    ],
    libs: ["junit"],
    sdk_version: "core_current",

    java_version: "1.7",
}

// Provides mockito functionality for on-device tests. Allows stubbing of final methods. Does not
// allow stubbing of static methods.
// Project depending on this also need to depend on the static JNI library libdexmakerjvmtiagent
java_library_static {
    name: "mockito-target-inline",
    static_libs: [
        "mockito-target-inline-minus-junit4",
        "junit",
    ],
    sdk_version: "current",
}

// Same as mockito-target-inline but does not bundle junit
java_library_static {
    name: "mockito-target-inline-minus-junit4",
    static_libs: [
        "mockito",
        "dexmaker",
        "dexmaker-inline-mockmaker",
        "objenesis",
    ],
    libs: ["junit"],
    sdk_version: "current",

    java_version: "1.7",
}

// Provides mockito functionality for on-device tests. Allows stubbing of final and static methods.
// Stubbing static methods is not an official mockito API.
// Project depending on this also need to depend on the static JNI libraries libstaticjvmtiagent and
// libdexmakerjvmtiagent
java_library_static {
    name: "mockito-target-extended",
    static_libs: [
        "mockito-target-extended-minus-junit4",
        "junit",
    ],
    sdk_version: "current",
}

// Same as mockito-target-extended but does not bundle junit
java_library_static {
    name: "mockito-target-extended-minus-junit4",
    static_libs: [
        "mockito",
        "dexmaker",
        "dexmaker-inline-mockmaker",
        "dexmaker-extended-mockmaker",
        "objenesis",
    ],
    libs: ["junit"],
    sdk_version: "current",

    java_version: "1.7",
}

java_import {
    name: "dexmaker-dx-target",
    jars: ["lib/dalvik-dx-9.0.0_r3.jar"],
}

// dexmaker tests
java_library_static {
    name: "dexmaker-tests-lib",
    sdk_version: "current",
    srcs: ["dexmaker-tests/src/androidTest/java/**/*.java"],

    libs: [
        "androidx.test.rules",
        "dexmaker",
        "junit",
    ],

    errorprone: {
        javacflags: [
            "-Xep:ReturnValueIgnored:WARN",
        ],
    },
}

// dexmaker-mockito tests
java_library_static {
    name: "dexmaker-mockmaker-tests",
    sdk_version: "current",
    srcs: ["dexmaker-mockito-tests/src/main/java/**/*.java"],

    libs: [
        "androidx.test.rules",
        "dexmaker",
        "mockito",
        "junit",
        "dexmaker-mockmaker",
    ],

    errorprone: {
        javacflags: [
            "-Xep:ReturnValueIgnored:WARN",
        ],
    },
}

// dexmaker-mockito-inline tests
java_library_static {
    name: "dexmaker-inline-mockmaker-tests",
    sdk_version: "current",
    srcs: ["dexmaker-mockito-inline-tests/src/main/java/**/*.java"],

    libs: [
        "androidx.test.rules",
        "dexmaker",
        "android-support-v4",
        "mockito",
        "junit",
        "dexmaker-inline-mockmaker",
    ],
}

// dexmaker-mockito-extended tests
java_library_static {
    name: "dexmaker-extended-mockmaker-tests",
    sdk_version: "current",
    srcs: ["dexmaker-mockito-inline-extended-tests/src/main/java/**/*.java"],

    libs: [
        "androidx.test.rules",
        "dexmaker",
        "android-support-v4",
        "mockito",
        "junit",
        "dexmaker-extended-mockmaker",
    ],
}

/*
 * To run the tests:
 *   atest DexmakerTests
 */

android_test {
    name: "DexmakerTests",
    sdk_version: "current",
    static_libs: [
        "dexmaker-tests-lib",
        "dexmaker",
        "androidx.test.rules",
        "junit",
    ],
}
