//
// 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.
//

package {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "art_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["art_license"],
}

art_cc_library {
    name: "libartbenchmark",
    host_supported: true,
    defaults: ["art_defaults"],
    srcs: [
        "jni_loader.cc",
        "jobject-benchmark/jobject_benchmark.cc",
        "jni-perf/perf_jni.cc",
        "micro-native/micro_native.cc",
        "scoped-primitive-array/scoped_primitive_array.cc",
    ],
    target: {
        // This has to be duplicated for android and host to make sure it
        // comes after the -Wframe-larger-than warnings inserted by art.go
        // target-specific properties
        android: {
            cflags: ["-Wno-frame-larger-than="],
        },
        host: {
            cflags: ["-Wno-frame-larger-than="],
        },
    },
    header_libs: [
        "libnativehelper_header_only",
    ],
    // TODO(ngeoffray): find a way to link against the libraries in the apex.
    shared_libs: [
        "libart",
        "libartbase",
        "libbase",
    ],
}

art_cc_library {
    name: "libartbenchmark-micronative-host",
    host_supported: true,
    device_supported: false,
    defaults: ["art_debug_defaults"],
    srcs: [
        "jni_loader.cc",
        "micro-native/micro_native.cc",
    ],
    shared_libs: [
    ],
    static_libs: [
    ],
    header_libs: ["jni_headers"],
    stl: "libc++_static",
    target: {
        // This has to be duplicated for android and host to make sure it
        // comes after the -Wframe-larger-than warnings inserted by art.go
        // target-specific properties
        android: {
            cflags: ["-Wno-frame-larger-than="],
        },
        host: {
            cflags: ["-Wno-frame-larger-than="],
        },
    },
}

art_cc_library {
    name: "libgolemtiagent",
    host_supported: true,
    defaults: ["art_defaults"],
    srcs: [
        "golem-tiagent/golem-tiagent.cc",
    ],
    target: {
        // This has to be duplicated for android and host to make sure it
        // comes after the -Wframe-larger-than warnings inserted by art.go
        // target-specific properties
        android: {
            cflags: ["-Wno-frame-larger-than="],
        },
        host: {
            cflags: ["-Wno-frame-larger-than="],
        },
    },
    header_libs: [
        "libnativehelper_header_only",
	"libopenjdkjvmti_headers"
    ],
    shared_libs: [
     "libbase",
    ],
}
