// 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"], default_team: "trendy_team_art_mainline", } 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-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", "test_broken_com.android.art", ], host_supported: true, srcs: [ "native_loader.cpp", ], header_libs: [ "art_libartbase_headers", "libnativehelper_header_only", ], shared_libs: [ "liblog", "libnativebridge", "libbase", ], target: { android: { srcs: [ "library_namespaces.cpp", "native_loader_namespace.cpp", "public_libraries.cpp", ], shared_libs: [ "libdl_android", ], static_libs: [ "libPlatformProperties", "libmodules-utils-build", ], }, }, stubs: { symbol_file: "libnativeloader.map.txt", versions: ["1"], }, } // Wrapper that loads nativeloader.so lazily, to be used to deal with layer // inversion in places like in early boot where libnativeloader and/or // libnativebridge aren't available. // 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"], } art_cc_test { name: "libnativeloader_test", defaults: [ // Cannot use art_standalone_gtest_defaults because it makes us link // libnativebridge statically through libart-gtest, but we need to mock // its symbols here. "art_standalone_test_defaults", ], host_supported: false, // Ordinarily, symbols are only exported if they are referenced by some // shared object dependency. Instead, export everything using // --export-dynamic, then restrict the visibility using the version script. ldflags: ["-Wl,--export-dynamic"], version_script: "libnativeloader_test.map", header_libs: [ "libnativebridge-headers", "libnativehelper_header_only", ], shared_libs: [ "liblog", // libbase dependency "libnativeloader", ], static_libs: [ "libbase", "libgmock", ], tidy_timeout_srcs: [ "native_loader_test.cpp", ], srcs: [ "library_namespaces_test.cpp", "native_loader_api_test.c", "native_loader_test.cpp", ], test_for: [ "com.android.art", "com.android.art.debug", ], test_suites: [ "general-tests", "mts-art", ], } cc_defaults { name: "libnativeloader_api_test_defaults", defaults: ["art_standalone_test_defaults"], srcs: ["native_loader_api_test.cpp"], header_libs: [ "libnativebridge-headers", "libnativehelper_header_only", ], static_libs: [ "libbase", "libgmock", ], } art_cc_test { name: "art_libnativeloader_cts_test", defaults: ["libnativeloader_api_test_defaults"], shared_libs: [ "libnativeloader", ], test_config_template: ":art-gtests-target-standalone-cts-template", test_suites: [ "cts", "mcts-art", ], } art_cc_test { name: "libnativeloader_lazy_test", defaults: ["libnativeloader_api_test_defaults"], static_libs: [ "libnativeloader_lazy", ], test_suites: [ "general-tests", "mts-art", ], }