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

cc_library_headers {
    name: "jni_headers",
    host_supported: true,
    export_include_dirs: ["include_jni"],
    vendor_available: true,
    native_bridge_supported: true,
    target: {
        windows: {
            enabled: true,
        },
    },
    // The minimum sdk version required by users of this module.
    sdk_version: "minimum",
    // As part of mainline modules(APEX), it should support at least 29(Q)
    min_sdk_version: "29",
}

cc_library_headers {
    name: "libnativehelper_header_only",
    host_supported: true,
    export_include_dirs: ["header_only_include"],
    target: {
        windows: {
            enabled: true,
        },
    },
    sdk_version: "current",
    // As part of mainline modules(APEX), it should support at least 29(Q)
    min_sdk_version: "29",

    apex_available: [
        "//apex_available:platform",
        "//apex_available:anyapex",
    ],
}

cc_library_headers {
    name: "jni_platform_headers",
    host_supported: true,
    export_include_dirs: ["platform_include"],
    target: {
        windows: {
            enabled: true,
        },
    },

    apex_available: [
        "//apex_available:platform",
        "com.android.art.debug",
        "com.android.art.release",
    ],
}

cc_library {
    name: "libnativehelper",
    host_supported: true,
    srcs: [
        "JNIHelp.cpp",
        "JniConstants.cpp",
        "JniInvocation.cpp",
        "toStringArray.cpp",
    ],
    shared_libs: ["liblog"],
    cflags: [
        "-Werror",
        "-fvisibility=protected",
    ],
    export_include_dirs: [
        "include",
        "header_only_include",
        "platform_include",
    ],
    stubs: {
        symbol_file: "libnativehelper.map.txt",
        versions: ["1"],
    },
    target: {
        windows: {
            shared_libs: ["libbase"],
            enabled: true,
        },
    },
    // Please avoid adding APEX dependencies on this for R (b/157711673).
    apex_available: [
        "com.android.art.release",
        "com.android.art.debug",
        // b/133140750 Clean this up. This is due to the dependency from libplatform_library_jni,
        // librs_jni, libjni_legacymosaic, etc.
        "//apex_available:platform",
        // b/133140750 Clean this up, or allow this library to everywhere
        "com.android.bluetooth.updatable",
    ],
}

//
// NDK-only build for the target (device), using libc++.
// - Relies only on NDK exposed functionality.
// - This doesn't include JniInvocation.
//

cc_library_shared {
    name: "libnativehelper_compat_libc++",
    export_include_dirs: [
        "header_only_include",
        "include",
    ],
    cflags: ["-Werror"],
    local_include_dirs: [
        "header_only_include",
        "platform_include",
    ],
    srcs: [
        "JNIHelp.cpp",
        "JniConstants.cpp",
        "toStringArray.cpp",
    ],
    shared_libs: [
        "liblog",
    ],
    sdk_version: "19",
    stl: "c++_static",
}

ndk_headers {
    name: "ndk_jni.h",
    from: "include_jni",
    to: "",
    srcs: ["include_jni/jni.h"],
    license: "NOTICE",
}

//
// Tests.
//

subdirs = ["tests"]
