// Shared library for target
// ========================================================
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"],
}

cc_defaults {
    name: "libnativeloader-defaults",
    defaults: ["art_defaults"],
    header_libs: ["libnativeloader-headers"],
    export_header_lib_headers: ["libnativeloader-headers"],
}

art_cc_library {
    name: "libnativeloader",
    defaults: ["libnativeloader-defaults"],
    visibility: [
        "//frameworks/base/cmds/app_process",
        // TODO(b/133140750): Clean this up.
        "//frameworks/base/native/webview/loader",
    ],
    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],
    host_supported: true,
    srcs: [
        "native_loader.cpp",
    ],
    header_libs: [
        "libnativehelper_header_only",
    ],
    shared_libs: [
        "liblog",
        "libnativebridge",
        "libbase",
    ],
    target: {
        // Library search path needed for running host tests remotely (from testcases directory).
        linux_glibc_x86: {
            ldflags: [
                "-Wl,-rpath,$ORIGIN/../art_common/out/host/linux-x86/lib",
                "-Wl,--enable-new-dtags",
            ],
        },
        linux_glibc_x86_64: {
            ldflags: [
                "-Wl,-rpath,$ORIGIN/../art_common/out/host/linux-x86/lib64",
                "-Wl,--enable-new-dtags",
            ],
        },
        android: {
            srcs: [
                "library_namespaces.cpp",
                "native_loader_namespace.cpp",
                "public_libraries.cpp",
            ],
            shared_libs: [
                "libdl_android",
            ],
            static_libs: [
                "libPlatformProperties",
            ],
        },
    },
    stubs: {
        symbol_file: "libnativeloader.map.txt",
        versions: ["1"],
    },
}

// TODO(b/124250621) eliminate the need for this library
cc_library {
    name: "libnativeloader_lazy",
    defaults: ["libnativeloader-defaults"],
    visibility: [
        "//frameworks/base/core/jni",
        "//frameworks/native/opengl/libs",
        "//frameworks/native/vulkan/libvulkan",
    ],
    apex_available: [
        "//apex_available:platform",
        "com.android.media",
        "com.android.media.swcodec",
    ],
    host_supported: false,
    srcs: ["native_loader_lazy.cpp"],
    runtime_libs: ["libnativeloader"],
    shared_libs: ["liblog"],
}

cc_library_headers {
    name: "libnativeloader-headers",
    defaults: ["art_defaults"],
    apex_available: [
        "//apex_available:platform",
        "com.android.art",
        "com.android.art.debug",
        "com.android.media",
    ],
    visibility: [
        "//art:__subpackages__",
        // TODO(b/133140750): Clean this up.
        "//frameworks/av/media/libstagefright",
        "//frameworks/native/libs/graphicsenv",
        "//frameworks/native/vulkan/libvulkan",
    ],
    host_supported: true,
    export_include_dirs: ["include"],
    header_libs: ["jni_headers"],
    export_header_lib_headers: ["jni_headers"],
}

cc_defaults {
    name: "libnativeloader-test-defaults",
    defaults: [
        "art_module_source_build_defaults",
        "art_test_defaults",
    ],
    host_supported: false,

    cflags: ["-DANDROID"],

    // The tests mock libdl_android and libnativebridge symbols, so export them
    // to override the ones loaded from their libs.
    ldflags: [
        "-Wl,--export-dynamic-symbol=android_*",
        "-Wl,--export-dynamic-symbol=NativeBridge*",
    ],

    header_libs: [
        "libnativebridge-headers",
        "libnativehelper_header_only",
    ],
    static_libs: [
        "libgmock",
    ],
    shared_libs: [
        "libbase",
    ],

    test_suites: ["device-tests"],
}

art_cc_test {
    name: "libnativeloader_test",
    defaults: [
        "art_standalone_test_defaults",
        "libnativeloader-test-defaults",
    ],
    tidy_timeout_srcs: [
        "native_loader_test.cpp",
    ],
    srcs: [
        "native_loader_api_test.c",
        "native_loader_test.cpp",
    ],
    shared_libs: [
        "libnativeloader",
    ],

    // Added to CTS for API coverage of libnativeloader which is backed by the
    // ART module.
    test_config_template: ":art-gtests-target-standalone-cts-template",
    test_suites: [
        "cts",
        "mts-art",
    ],
}

art_cc_test {
    name: "libnativeloader_lazy_test",
    defaults: ["libnativeloader-test-defaults"],
    srcs: [
        "native_loader_lazy_test.cpp",
    ],
    static_libs: [
        "libnativeloader_lazy",
    ],
}
