// 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: [
                "PlatformProperties",
            ],
        },
    },
    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",
    apex_available: [
        "//apex_available:platform",
        "com.android.art",
        "com.android.art.debug",
        "com.android.media",
    ],
    min_sdk_version: "31",
    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: ["libnativeloader-test-defaults"],
    srcs: [
        "native_loader_api_test.c",
        "native_loader_test.cpp",
    ],
    shared_libs: [
        "libnativeloader",
    ],
}

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