|  | package { | 
|  | default_applicable_licenses: ["system_core_libutils_license"], | 
|  | } | 
|  |  | 
|  | license { | 
|  | name: "system_core_libutils_license", | 
|  | visibility: [":__subpackages__"], | 
|  | license_kinds: [ | 
|  | "SPDX-license-identifier-Apache-2.0", | 
|  | ], | 
|  | license_text: [ | 
|  | "NOTICE", | 
|  | ], | 
|  | } | 
|  |  | 
|  | cc_library_headers { | 
|  | name: "libutils_headers", | 
|  | vendor_available: true, | 
|  | product_available: true, | 
|  | recovery_available: true, | 
|  | vendor_ramdisk_available: true, | 
|  | host_supported: true, | 
|  | native_bridge_supported: true, | 
|  | defaults: [ | 
|  | "apex-lowest-min-sdk-version", | 
|  | ], | 
|  | apex_available: [ | 
|  | "//apex_available:platform", | 
|  | "//apex_available:anyapex", | 
|  | ], | 
|  |  | 
|  | header_libs: [ | 
|  | "libbase_headers", | 
|  | "libcutils_headers", | 
|  | "liblog_headers", | 
|  | "libprocessgroup_headers", | 
|  | "libsystem_headers", | 
|  | ], | 
|  | export_header_lib_headers: [ | 
|  | "libbase_headers", | 
|  | "libcutils_headers", | 
|  | "liblog_headers", | 
|  | "libprocessgroup_headers", | 
|  | "libsystem_headers", | 
|  | ], | 
|  | export_include_dirs: ["include"], | 
|  |  | 
|  | target: { | 
|  | linux_bionic: { | 
|  | enabled: true, | 
|  | }, | 
|  | windows: { | 
|  | enabled: true, | 
|  | }, | 
|  | }, | 
|  | } | 
|  |  | 
|  | cc_defaults { | 
|  | name: "libutils_defaults", | 
|  | vendor_available: true, | 
|  | product_available: true, | 
|  | recovery_available: true, | 
|  | host_supported: true, | 
|  |  | 
|  | cflags: [ | 
|  | "-Wall", | 
|  | "-Werror", | 
|  | "-Wno-exit-time-destructors", | 
|  | "-DANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION", | 
|  | ], | 
|  | header_libs: [ | 
|  | "libbase_headers", | 
|  | "libutils_headers", | 
|  | ], | 
|  | export_header_lib_headers: [ | 
|  | "libutils_headers", | 
|  | ], | 
|  |  | 
|  | shared_libs: [ | 
|  | "libcutils", | 
|  | "liblog", | 
|  | ], | 
|  | sanitize: { | 
|  | misc_undefined: ["integer"], | 
|  | }, | 
|  |  | 
|  | target: { | 
|  | android: { | 
|  | cflags: ["-fvisibility=protected"], | 
|  |  | 
|  | shared_libs: [ | 
|  | "libvndksupport", | 
|  | ], | 
|  |  | 
|  | sanitize: { | 
|  | misc_undefined: ["integer"], | 
|  | }, | 
|  | }, | 
|  |  | 
|  | recovery: { | 
|  | exclude_shared_libs: ["libvndksupport"], | 
|  | }, | 
|  |  | 
|  | linux_bionic: { | 
|  | enabled: true, | 
|  | }, | 
|  |  | 
|  | darwin: { | 
|  | cflags: ["-Wno-unused-parameter"], | 
|  | }, | 
|  |  | 
|  | windows: { | 
|  | cflags: [ | 
|  | // Under MinGW, ctype.h doesn't need multi-byte support | 
|  | "-DMB_CUR_MAX=1", | 
|  | "-Wno-unused-private-field", | 
|  | ], | 
|  |  | 
|  | enabled: true, | 
|  | }, | 
|  | }, | 
|  | fuzz_config: { | 
|  | cc: ["smoreland@google.com"], | 
|  | }, | 
|  | } | 
|  |  | 
|  | cc_defaults { | 
|  | name: "libutils_impl_defaults", | 
|  | defaults: [ | 
|  | "libutils_defaults", | 
|  | "apex-lowest-min-sdk-version", | 
|  | ], | 
|  | native_bridge_supported: true, | 
|  |  | 
|  | srcs: [ | 
|  | "Errors.cpp", | 
|  | "FileMap.cpp", | 
|  | "JenkinsHash.cpp", | 
|  | "LightRefBase.cpp", | 
|  | "NativeHandle.cpp", | 
|  | "Printer.cpp", | 
|  | "RefBase.cpp", | 
|  | "SharedBuffer.cpp", | 
|  | "StopWatch.cpp", | 
|  | "String8.cpp", | 
|  | "String16.cpp", | 
|  | "StrongPointer.cpp", | 
|  | "SystemClock.cpp", | 
|  | "Threads.cpp", | 
|  | "Timers.cpp", | 
|  | "Tokenizer.cpp", | 
|  | "Unicode.cpp", | 
|  | "VectorImpl.cpp", | 
|  | "misc.cpp", | 
|  | ], | 
|  |  | 
|  | target: { | 
|  | android: { | 
|  | srcs: [ | 
|  | "Trace.cpp", | 
|  | ], | 
|  | }, | 
|  | linux: { | 
|  | header_libs: ["libbase_headers"], | 
|  | srcs: [ | 
|  | "Looper.cpp", | 
|  | ], | 
|  | }, | 
|  | }, | 
|  |  | 
|  | apex_available: [ | 
|  | "//apex_available:anyapex", | 
|  | "//apex_available:platform", | 
|  | ], | 
|  |  | 
|  | afdo: true, | 
|  | } | 
|  |  | 
|  | cc_library { | 
|  | name: "libutils", | 
|  | defaults: ["libutils_impl_defaults"], | 
|  |  | 
|  | vndk: { | 
|  | enabled: true, | 
|  | support_system_process: true, | 
|  | }, | 
|  |  | 
|  | target: { | 
|  | product: { | 
|  | header_abi_checker: { | 
|  | // AFDO affects weak symbols. | 
|  | diff_flags: ["-allow-adding-removing-weak-symbols"], | 
|  | ref_dump_dirs: ["abi-dumps"], | 
|  | }, | 
|  | }, | 
|  | vendor: { | 
|  | header_abi_checker: { | 
|  | // AFDO affects weak symbols. | 
|  | diff_flags: ["-allow-adding-removing-weak-symbols"], | 
|  | ref_dump_dirs: ["abi-dumps"], | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | } | 
|  |  | 
|  | cc_library { | 
|  | name: "libutils_test_compile", | 
|  | defaults: ["libutils_impl_defaults"], | 
|  |  | 
|  | cflags: [ | 
|  | "-DCALLSTACKS=1", | 
|  | "-DDEBUG_POLL_AND_WAKE=1", | 
|  | "-DDEBUG_REFS=1", | 
|  | "-DDEBUG_TOKENIZER=1", | 
|  | ], | 
|  |  | 
|  | visibility: [":__subpackages__"], | 
|  | } | 
|  |  | 
|  | cc_library { | 
|  | name: "libutilscallstack", | 
|  | defaults: ["libutils_defaults"], | 
|  | // TODO(b/153609531): remove when no longer needed. | 
|  | native_bridge_supported: true, | 
|  | min_sdk_version: "29", | 
|  | vndk: { | 
|  | enabled: true, | 
|  | support_system_process: true, | 
|  | }, | 
|  |  | 
|  | srcs: [ | 
|  | "CallStack.cpp", | 
|  | ], | 
|  |  | 
|  | shared_libs: [ | 
|  | "libutils", | 
|  | "libunwindstack", | 
|  | ], | 
|  |  | 
|  | target: { | 
|  | linux: { | 
|  | srcs: [ | 
|  | "ProcessCallStack.cpp", | 
|  | ], | 
|  | }, | 
|  | darwin: { | 
|  | enabled: false, | 
|  | }, | 
|  | windows: { | 
|  | enabled: false, | 
|  | }, | 
|  | }, | 
|  | } | 
|  |  | 
|  | cc_defaults { | 
|  | name: "libutils_fuzz_defaults", | 
|  | host_supported: true, | 
|  | shared_libs: [ | 
|  | "libutils", | 
|  | "libbase", | 
|  | "liblog", | 
|  | ], | 
|  | } | 
|  |  | 
|  | cc_fuzz { | 
|  | name: "libutils_fuzz_bitset", | 
|  | defaults: ["libutils_fuzz_defaults"], | 
|  | srcs: ["BitSet_fuzz.cpp"], | 
|  | } | 
|  |  | 
|  | cc_fuzz { | 
|  | name: "libutils_fuzz_filemap", | 
|  | defaults: ["libutils_fuzz_defaults"], | 
|  | srcs: ["FileMap_fuzz.cpp"], | 
|  | } | 
|  |  | 
|  | cc_fuzz { | 
|  | name: "libutils_fuzz_string8", | 
|  | defaults: ["libutils_fuzz_defaults"], | 
|  | srcs: ["String8_fuzz.cpp"], | 
|  | } | 
|  |  | 
|  | cc_fuzz { | 
|  | name: "libutils_fuzz_string16", | 
|  | defaults: ["libutils_fuzz_defaults"], | 
|  | srcs: ["String16_fuzz.cpp"], | 
|  | } | 
|  |  | 
|  | cc_fuzz { | 
|  | name: "libutils_fuzz_vector", | 
|  | defaults: ["libutils_fuzz_defaults"], | 
|  | srcs: ["Vector_fuzz.cpp"], | 
|  | } | 
|  |  | 
|  | cc_fuzz { | 
|  | name: "libutils_fuzz_printer", | 
|  | defaults: ["libutils_fuzz_defaults"], | 
|  | srcs: ["Printer_fuzz.cpp"], | 
|  | } | 
|  |  | 
|  | cc_fuzz { | 
|  | name: "libutils_fuzz_callstack", | 
|  | defaults: ["libutils_fuzz_defaults"], | 
|  | srcs: ["CallStack_fuzz.cpp"], | 
|  | shared_libs: [ | 
|  | "libutilscallstack", | 
|  | ], | 
|  | } | 
|  |  | 
|  | cc_fuzz { | 
|  | name: "libutils_fuzz_process_callstack", | 
|  | defaults: ["libutils_fuzz_defaults"], | 
|  | srcs: ["ProcessCallStack_fuzz.cpp"], | 
|  | shared_libs: [ | 
|  | "libutilscallstack", | 
|  | ], | 
|  | } | 
|  |  | 
|  | cc_fuzz { | 
|  | name: "libutils_fuzz_refbase", | 
|  | defaults: ["libutils_fuzz_defaults"], | 
|  | srcs: ["RefBase_fuzz.cpp"], | 
|  | } | 
|  |  | 
|  | cc_fuzz { | 
|  | name: "libutils_fuzz_lrucache", | 
|  | defaults: ["libutils_fuzz_defaults"], | 
|  | srcs: ["LruCache_fuzz.cpp"], | 
|  | } | 
|  |  | 
|  | cc_fuzz { | 
|  | name: "libutils_fuzz_looper", | 
|  | defaults: ["libutils_fuzz_defaults"], | 
|  | srcs: ["Looper_fuzz.cpp"], | 
|  | } | 
|  |  | 
|  | cc_test { | 
|  | name: "libutils_test", | 
|  | host_supported: true, | 
|  |  | 
|  | srcs: [ | 
|  | "BitSet_test.cpp", | 
|  | "CallStack_test.cpp", | 
|  | "Errors_test.cpp", | 
|  | "FileMap_test.cpp", | 
|  | "LruCache_test.cpp", | 
|  | "Mutex_test.cpp", | 
|  | "SharedBuffer_test.cpp", | 
|  | "Singleton_test.cpp", | 
|  | "String16_test.cpp", | 
|  | "String8_test.cpp", | 
|  | "StrongPointer_test.cpp", | 
|  | "Timers_test.cpp", | 
|  | "Unicode_test.cpp", | 
|  | "Vector_test.cpp", | 
|  | ], | 
|  |  | 
|  | target: { | 
|  | android: { | 
|  | srcs: [ | 
|  | "SystemClock_test.cpp", | 
|  | ], | 
|  | shared_libs: [ | 
|  | "libbase", | 
|  | "libcutils", | 
|  | "liblog", | 
|  | "liblzma", | 
|  | "libunwindstack", | 
|  | "libutils", | 
|  | "libutilscallstack", | 
|  | "libz", | 
|  | ], | 
|  | }, | 
|  | linux: { | 
|  | srcs: [ | 
|  | "Looper_test.cpp", | 
|  | "RefBase_test.cpp", | 
|  | ], | 
|  | }, | 
|  | host: { | 
|  | static_libs: [ | 
|  | "libbase", | 
|  | "liblog", | 
|  | "liblzma", | 
|  | "libunwindstack_no_dex", | 
|  | "libutils", | 
|  | "libutilscallstack", | 
|  | ], | 
|  | }, | 
|  | }, | 
|  |  | 
|  | data_libs: [ | 
|  | "libutils_test_singleton1", | 
|  | "libutils_test_singleton2", | 
|  | ], | 
|  |  | 
|  | cflags: [ | 
|  | "-Wall", | 
|  | "-Wextra", | 
|  | "-Werror", | 
|  | "-Wthread-safety", | 
|  | ], | 
|  |  | 
|  | test_suites: ["device-tests"], | 
|  | } | 
|  |  | 
|  | cc_test_library { | 
|  | name: "libutils_test_singleton1", | 
|  | host_supported: true, | 
|  | installable: false, | 
|  | srcs: ["Singleton_test1.cpp"], | 
|  | cflags: [ | 
|  | "-Wall", | 
|  | "-Werror", | 
|  | ], | 
|  | header_libs: ["libutils_headers"], | 
|  | } | 
|  |  | 
|  | cc_test_library { | 
|  | name: "libutils_test_singleton2", | 
|  | host_supported: true, | 
|  | installable: false, | 
|  | srcs: ["Singleton_test2.cpp"], | 
|  | cflags: [ | 
|  | "-Wall", | 
|  | "-Werror", | 
|  | ], | 
|  | shared_libs: ["libutils_test_singleton1"], | 
|  | header_libs: ["libutils_headers"], | 
|  | } | 
|  |  | 
|  | cc_benchmark { | 
|  | name: "libutils_benchmark", | 
|  | srcs: ["Vector_benchmark.cpp"], | 
|  | shared_libs: ["libutils"], | 
|  | } |