1// Shared library for target
2// ========================================================
3cc_defaults {
4    name: "libnativeloader-defaults",
5    defaults: ["art_defaults"],
6    cppflags: [
7        "-fvisibility=hidden",
8    ],
9    header_libs: ["libnativeloader-headers"],
10    export_header_lib_headers: ["libnativeloader-headers"],
11}
12
13cc_library {
14    name: "libnativeloader",
15    defaults: ["libnativeloader-defaults"],
16    visibility: [
17        "//frameworks/base/cmds/app_process",
18        // TODO(b/133140750): Clean this up.
19        "//frameworks/base/native/webview/loader",
20    ],
21    apex_available: [
22        "com.android.art.release",
23        "com.android.art.debug",
24    ],
25    host_supported: true,
26    srcs: [
27        "native_loader.cpp",
28    ],
29    header_libs: ["libnativehelper_header_only"],
30    shared_libs: [
31        "liblog",
32        "libnativebridge",
33        "libbase",
34    ],
35    target: {
36        android: {
37            srcs: [
38                "library_namespaces.cpp",
39                "native_loader_namespace.cpp",
40                "public_libraries.cpp",
41            ],
42            shared_libs: [
43                "libdl_android",
44            ],
45            whole_static_libs: [
46                "PlatformProperties",
47            ],
48        },
49    },
50    stubs: {
51        symbol_file: "libnativeloader.map.txt",
52        versions: ["1"],
53    },
54}
55
56// TODO(b/124250621) eliminate the need for this library
57cc_library {
58    name: "libnativeloader_lazy",
59    defaults: ["libnativeloader-defaults"],
60    visibility: [
61        "//frameworks/base/core/jni",
62        "//frameworks/native/opengl/libs",
63        "//frameworks/native/vulkan/libvulkan",
64    ],
65    host_supported: false,
66    srcs: ["native_loader_lazy.cpp"],
67    required: ["libnativeloader"],
68}
69
70cc_library_headers {
71    name: "libnativeloader-headers",
72    apex_available: [
73        "//apex_available:platform",
74        "com.android.art.debug",
75        "com.android.art.release",
76    ],
77    visibility: [
78        "//art:__subpackages__",
79        // TODO(b/133140750): Clean this up.
80        "//frameworks/av/media/libstagefright",
81        "//frameworks/native/libs/graphicsenv",
82        "//frameworks/native/vulkan/libvulkan",
83    ],
84    host_supported: true,
85    export_include_dirs: ["include"],
86}
87
88cc_test {
89    name: "libnativeloader_test",
90    srcs: [
91        "native_loader_test.cpp",
92        "native_loader.cpp",
93        "library_namespaces.cpp",
94        "native_loader_namespace.cpp",
95        "public_libraries.cpp",
96    ],
97    cflags: ["-DANDROID"],
98    static_libs: [
99        "libbase",
100        "liblog",
101        "libgmock",
102        "PlatformProperties",
103    ],
104    header_libs: [
105        "libnativebridge-headers",
106        "libnativehelper_header_only",
107        "libnativeloader-headers",
108    ],
109    // native_loader_test.cpp mocks libdl APIs so system_shared_libs
110    // are used to include C libraries without libdl.
111    system_shared_libs: [
112        "libc",
113        "libm",
114    ],
115    test_suites: ["device-tests"],
116}
117