1package {
2    default_team: "trendy_team_native_tools_libraries",
3    default_applicable_licenses: ["Android-Apache-2.0"],
4}
5
6cc_defaults {
7    name: "libmemunreachable_defaults",
8
9    cflags: [
10        "-Wall",
11        "-Wextra",
12        "-Werror",
13    ],
14    shared_libs: [
15        "libbase",
16    ],
17
18    target: {
19        android: {
20            static_libs: ["libasync_safe"],
21            header_libs: ["bionic_libc_platform_headers"],
22        },
23        linux_bionic: {
24            header_libs: ["bionic_libc_platform_headers"],
25        },
26        host: {
27            shared_libs: ["liblog"],
28        },
29    },
30}
31
32cc_library {
33    name: "libmemunreachable",
34    vendor_available: true,
35    defaults: ["libmemunreachable_defaults"],
36    srcs: [
37        "Allocator.cpp",
38        "Binder.cpp",
39        "HeapWalker.cpp",
40        "LeakFolding.cpp",
41        "LeakPipe.cpp",
42        "MemUnreachable.cpp",
43        "ProcessMappings.cpp",
44        "PtracerThread.cpp",
45        "ThreadCapture.cpp",
46    ],
47
48    static_libs: [
49        "libc_malloc_debug_backtrace",
50        "libprocinfo",
51    ],
52    header_libs: [
53        "libgtest_prod_headers",
54    ],
55    export_include_dirs: ["include"],
56    local_include_dirs: ["include"],
57    version_script: "libmemunreachable.map",
58
59    static: {
60        apex_available: [
61            "//apex_available:platform",
62            "com.android.runtime",
63        ],
64    },
65}
66
67// Integration test that runs against the public API of libmemunreachable
68cc_test {
69    name: "memunreachable_test",
70    defaults: ["libmemunreachable_defaults"],
71    srcs: [
72        "tests/MemUnreachable_test.cpp",
73    ],
74    shared_libs: ["libmemunreachable"],
75    header_libs: [
76        "libbase_headers",
77    ],
78    test_suites: ["device-tests"],
79}
80
81cc_test {
82    name: "memunreachable_unit_test",
83    defaults: ["libmemunreachable_defaults"],
84    host_supported: true,
85    srcs: [
86        "tests/Allocator_test.cpp",
87        "tests/AtomicState_test.cpp",
88        "tests/HeapWalker_test.cpp",
89        "tests/LeakFolding_test.cpp",
90    ],
91    tidy_checks: [
92        // Ignore memory leaks after ASSERT_NE in DisableMalloc_test.cpp.
93        "-clang-analyzer-cplusplus.NewDeleteLeaks",
94        "-clang-analyzer-unix.Malloc",
95    ],
96    target: {
97        android: {
98            srcs: [
99                "tests/DisableMalloc_test.cpp",
100                "tests/MemUnreachable_test.cpp",
101                "tests/ThreadCapture_test.cpp",
102            ],
103            static_libs: [
104                "libmemunreachable",
105                "libc_malloc_debug_backtrace",
106            ],
107        },
108        host: {
109            srcs: [
110                "Allocator.cpp",
111                "HeapWalker.cpp",
112                "LeakFolding.cpp",
113                "tests/HostMallocStub.cpp",
114            ],
115        },
116        darwin: {
117            enabled: false,
118        },
119    },
120    header_libs: [
121        "libbase_headers",
122    ],
123    test_suites: ["device-tests"],
124}
125
126cc_test {
127    name: "memunreachable_binder_test",
128    defaults: ["libmemunreachable_defaults"],
129    require_root: true,
130
131    srcs: [
132        "tests/Binder_test.cpp",
133    ],
134    static_libs: ["libmemunreachable"],
135    shared_libs: [
136        "libbinder",
137        "libhidlbase",
138        "libutils",
139    ],
140    test_suites: [
141        "device-tests",
142        "vts"
143    ],
144}
145