| // 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", |
| 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", |
| ], |
| srcs: [ |
| "native_loader_api_test.c", |
| "native_loader_test.cpp", |
| ], |
| shared_libs: [ |
| "libnativeloader", |
| ], |
| |
| // Support multilib variants (using different suffix per sub-architecture), which is needed on |
| // build targets with secondary architectures, as the CTS test suite packaging logic flattens |
| // all test artifacts into a single `testcases` directory. |
| compile_multilib: "both", |
| multilib: { |
| lib32: { |
| suffix: "32", |
| }, |
| lib64: { |
| suffix: "64", |
| }, |
| }, |
| |
| // 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"], |
| } |
| |
| art_cc_test { |
| name: "libnativeloader_lazy_test", |
| defaults: ["libnativeloader-test-defaults"], |
| srcs: [ |
| "native_loader_lazy_test.cpp", |
| ], |
| static_libs: [ |
| "libnativeloader_lazy", |
| ], |
| } |