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

// build caliper host jar
// ============================================================

java_library_host {
    name: "caliper",

    srcs: ["caliper/src/main/java/**/*.java"],
    java_resource_dirs: ["caliper/src/main/resources"],
    // Required for use of javax.annotation.Generated per http://b/62050818
    javacflags: ["-J--add-modules=java.xml.ws.annotation"],

    static_libs: [
        "apache-commons-math",
        "caliper-prebuilts",
        "dagger2",
        "dagger2-inject",
        "guava",
    ],

    // Use Dagger2 annotation processor
    plugins: ["dagger2-compiler"],

    java_version: "1.7",
}

// build caliper target api jar
// ============================================================
// This contains just those classes needed for benchmarks to compile.

java_library {
    name: "caliper-api-target",
    installable: true,

    srcs: [
        "caliper/src/main/java/com/google/caliper/AfterExperiment.java",
        "caliper/src/main/java/com/google/caliper/BeforeExperiment.java",
        "caliper/src/main/java/com/google/caliper/Param.java",
        "caliper/src/main/java/com/google/caliper/All.java",
        "caliper/src/main/java/com/google/caliper/Benchmark.java",
    ],
    sdk_version: "core_current",

    java_version: "1.7",
}

// build caliper tests
// ============================================================
// vogar --expectations $ANDROID_BUILD_TOP/external/caliper/expectations/knownfailures.txt \
//        --test-only \
//        --classpath $ANDROID_BUILD_TOP/out/host/common/obj/JAVA_LIBRARIES/caliper-tests_intermediates/javalib.jar \
//        com.google.caliper

java_test_host {
    name: "caliper-tests",

    srcs: ["caliper/src/test/java/**/*.java"],
    java_resource_dirs: ["caliper/src/test/resources"],
    // Required for use of javax.annotation.Generated per http://b/62050818
    javacflags: ["-J--add-modules=java.xml.ws.annotation"],

    static_libs: [
        "caliper",
        "junit",
        "mockito",
    ],

    // Use Dagger2 annotation processor
    plugins: ["dagger2-compiler"],

    java_version: "1.7",
}

// build caliper examples
// ============================================================

java_library_host {
    name: "caliper-examples",

    srcs: ["examples/src/main/java/**/*.java"],

    static_libs: [
        "caliper",
        "junit",
        "mockito",
    ],

    java_version: "1.7",
}

// Build host dependencies.
// ============================================================

java_import_host {
    name: "caliper-gson",
    jars: ["lib/gson-2.2.2.jar"],
}

java_import_host {
    name: "caliper-prebuilts",
    jars: [
        "lib/gson-2.2.2.jar",
        "lib/java-allocation-instrumenter-2.0.jar",
        "lib/jersey-client-1.11.jar",
        "lib/jersey-core-1.11.jar",
        "lib/joda-time-2.1.jar",
        "lib/jsr311-api-1.1.1.jar",
    ],
}
