• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1package {
2    default_applicable_licenses: ["system_core_libutils_license"],
3}
4
5license {
6    name: "system_core_libutils_license",
7    visibility: [":__subpackages__"],
8    license_kinds: [
9        "SPDX-license-identifier-Apache-2.0",
10    ],
11    license_text: [
12        "NOTICE",
13    ],
14}
15
16cc_library_headers {
17    name: "libutils_headers",
18    vendor_available: true,
19    product_available: true,
20    recovery_available: true,
21    vendor_ramdisk_available: true,
22    host_supported: true,
23    native_bridge_supported: true,
24    apex_available: [
25        "//apex_available:platform",
26        "//apex_available:anyapex",
27    ],
28    min_sdk_version: "apex_inherit",
29
30    header_libs: [
31        "libbase_headers",
32        "libcutils_headers",
33        "liblog_headers",
34        "libprocessgroup_headers",
35        "libsystem_headers",
36    ],
37    export_header_lib_headers: [
38        "libbase_headers",
39        "libcutils_headers",
40        "liblog_headers",
41        "libprocessgroup_headers",
42        "libsystem_headers",
43    ],
44    export_include_dirs: ["include"],
45
46    target: {
47        android: {
48            header_libs: ["libbacktrace_headers"],
49            export_header_lib_headers: ["libbacktrace_headers"],
50        },
51        host_linux: {
52            header_libs: ["libbacktrace_headers"],
53            export_header_lib_headers: ["libbacktrace_headers"],
54        },
55        linux_bionic: {
56            enabled: true,
57        },
58        windows: {
59            enabled: true,
60        },
61    },
62}
63
64cc_defaults {
65    name: "libutils_defaults",
66    vendor_available: true,
67    product_available: true,
68    recovery_available: true,
69    vndk: {
70        enabled: true,
71        support_system_process: true,
72    },
73    host_supported: true,
74
75    cflags: [
76        "-Wall",
77        "-Werror",
78        "-Wno-exit-time-destructors",
79        "-DANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION",
80    ],
81    header_libs: [
82        "libbase_headers",
83        "libutils_headers",
84    ],
85    export_header_lib_headers: [
86        "libutils_headers",
87    ],
88
89    shared_libs: [
90        "libcutils",
91        "liblog",
92    ],
93    sanitize: {
94        misc_undefined: ["integer"],
95    },
96
97    target: {
98        android: {
99            cflags: ["-fvisibility=protected"],
100
101            shared_libs: [
102                "libvndksupport",
103            ],
104
105            sanitize: {
106                misc_undefined: ["integer"],
107            },
108        },
109
110        recovery: {
111            exclude_shared_libs: ["libvndksupport"],
112        },
113
114        linux_bionic: {
115            enabled: true,
116        },
117
118        darwin: {
119            cflags: ["-Wno-unused-parameter"],
120        },
121
122        windows: {
123            cflags: [
124                // Under MinGW, ctype.h doesn't need multi-byte support
125                "-DMB_CUR_MAX=1",
126                "-Wno-unused-private-field",
127            ],
128
129            enabled: true,
130        },
131    },
132    fuzz_config: {
133       cc: ["smoreland@google.com"],
134    },
135}
136
137cc_library {
138    name: "libutils",
139    defaults: ["libutils_defaults"],
140    native_bridge_supported: true,
141
142    srcs: [
143        "Errors.cpp",
144        "FileMap.cpp",
145        "JenkinsHash.cpp",
146        "LightRefBase.cpp",
147        "NativeHandle.cpp",
148        "Printer.cpp",
149        "RefBase.cpp",
150        "SharedBuffer.cpp",
151        "StopWatch.cpp",
152        "String8.cpp",
153        "String16.cpp",
154        "StrongPointer.cpp",
155        "SystemClock.cpp",
156        "Threads.cpp",
157        "Timers.cpp",
158        "Tokenizer.cpp",
159        "Unicode.cpp",
160        "VectorImpl.cpp",
161        "misc.cpp",
162    ],
163
164    target: {
165        android: {
166            srcs: [
167                "Trace.cpp",
168            ],
169        },
170        linux: {
171            header_libs: ["libbase_headers"],
172            srcs: [
173                "Looper.cpp",
174            ],
175        },
176    },
177
178    apex_available: [
179        "//apex_available:anyapex",
180        "//apex_available:platform",
181    ],
182    min_sdk_version: "apex_inherit",
183
184    afdo: true,
185
186    header_abi_checker: {
187        diff_flags: ["-allow-adding-removing-weak-symbols"],
188    },
189}
190
191cc_library {
192    name: "libutilscallstack",
193    defaults: ["libutils_defaults"],
194    // TODO(b/153609531): remove when no longer needed.
195    native_bridge_supported: true,
196    min_sdk_version: "29",
197
198    srcs: [
199        "CallStack.cpp",
200    ],
201
202    shared_libs: [
203        "libutils",
204        "libbacktrace",
205    ],
206
207    target: {
208        linux: {
209            srcs: [
210                "ProcessCallStack.cpp",
211            ],
212        },
213        darwin: {
214            enabled: false,
215        },
216        windows: {
217            enabled: false,
218        },
219    },
220}
221
222cc_defaults {
223    name: "libutils_fuzz_defaults",
224    host_supported: true,
225    shared_libs: [
226        "libutils",
227        "libbase",
228        "liblog",
229    ],
230}
231
232cc_fuzz {
233    name: "libutils_fuzz_bitset",
234    defaults: ["libutils_fuzz_defaults"],
235    srcs: ["BitSet_fuzz.cpp"],
236}
237
238cc_fuzz {
239    name: "libutils_fuzz_filemap",
240    defaults: ["libutils_fuzz_defaults"],
241    srcs: ["FileMap_fuzz.cpp"],
242}
243
244cc_fuzz {
245    name: "libutils_fuzz_string8",
246    defaults: ["libutils_fuzz_defaults"],
247    srcs: ["String8_fuzz.cpp"],
248}
249
250cc_fuzz {
251    name: "libutils_fuzz_string16",
252    defaults: ["libutils_fuzz_defaults"],
253    srcs: ["String16_fuzz.cpp"],
254}
255
256cc_fuzz {
257    name: "libutils_fuzz_vector",
258    defaults: ["libutils_fuzz_defaults"],
259    srcs: ["Vector_fuzz.cpp"],
260}
261
262cc_fuzz {
263    name: "libutils_fuzz_printer",
264    defaults: ["libutils_fuzz_defaults"],
265    srcs: ["Printer_fuzz.cpp"],
266}
267
268cc_fuzz {
269    name: "libutils_fuzz_callstack",
270    defaults: ["libutils_fuzz_defaults"],
271    srcs: ["CallStack_fuzz.cpp"],
272    shared_libs: [
273        "libutilscallstack",
274    ],
275}
276
277cc_fuzz {
278    name: "libutils_fuzz_process_callstack",
279    defaults: ["libutils_fuzz_defaults"],
280    srcs: ["ProcessCallStack_fuzz.cpp"],
281    shared_libs: [
282        "libutilscallstack",
283    ],
284}
285
286cc_fuzz {
287    name: "libutils_fuzz_refbase",
288    defaults: ["libutils_fuzz_defaults"],
289    srcs: ["RefBase_fuzz.cpp"],
290}
291
292cc_fuzz {
293    name: "libutils_fuzz_lrucache",
294    defaults: ["libutils_fuzz_defaults"],
295    srcs: ["LruCache_fuzz.cpp"],
296}
297
298cc_fuzz {
299    name: "libutils_fuzz_looper",
300    defaults: ["libutils_fuzz_defaults"],
301    srcs: ["Looper_fuzz.cpp"],
302}
303
304cc_test {
305    name: "libutils_test",
306    host_supported: true,
307
308    srcs: [
309        "BitSet_test.cpp",
310        "Errors_test.cpp",
311        "FileMap_test.cpp",
312        "LruCache_test.cpp",
313        "Mutex_test.cpp",
314        "SharedBuffer_test.cpp",
315        "Singleton_test.cpp",
316        "String16_test.cpp",
317        "String8_test.cpp",
318        "StrongPointer_test.cpp",
319        "Timers_test.cpp",
320        "Unicode_test.cpp",
321        "Vector_test.cpp",
322    ],
323
324    target: {
325        android: {
326            srcs: [
327                "SystemClock_test.cpp",
328            ],
329            shared_libs: [
330                "libz",
331                "liblog",
332                "libcutils",
333                "libutils",
334                "libbase",
335            ],
336        },
337        linux: {
338            srcs: [
339                "Looper_test.cpp",
340                "RefBase_test.cpp",
341            ],
342        },
343        host: {
344            static_libs: [
345                "libutils",
346                "liblog",
347                "libbase",
348            ],
349        },
350    },
351
352    data_libs: [
353        "libutils_test_singleton1",
354        "libutils_test_singleton2",
355    ],
356
357    cflags: [
358        "-Wall",
359        "-Wextra",
360        "-Werror",
361        "-Wthread-safety",
362    ],
363
364    test_suites: ["device-tests"],
365}
366
367cc_test_library {
368    name: "libutils_test_singleton1",
369    host_supported: true,
370    installable: false,
371    srcs: ["Singleton_test1.cpp"],
372    cflags: [
373        "-Wall",
374        "-Werror",
375    ],
376    header_libs: ["libutils_headers"],
377}
378
379cc_test_library {
380    name: "libutils_test_singleton2",
381    host_supported: true,
382    installable: false,
383    srcs: ["Singleton_test2.cpp"],
384    cflags: [
385        "-Wall",
386        "-Werror",
387    ],
388    shared_libs: ["libutils_test_singleton1"],
389    header_libs: ["libutils_headers"],
390}
391
392cc_benchmark {
393    name: "libutils_benchmark",
394    srcs: ["Vector_benchmark.cpp"],
395    shared_libs: ["libutils"],
396}
397