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