| // Copyright (C) 2008 The Android Open Source Project | 
 | // | 
 | // Licensed under the Apache License, Version 2.0 (the "License"); | 
 | // you may not use this file except in compliance with the License. | 
 | // You may obtain a copy of the License at | 
 | // | 
 | //      http://www.apache.org/licenses/LICENSE-2.0 | 
 | // | 
 | // Unless required by applicable law or agreed to in writing, software | 
 | // distributed under the License is distributed on an "AS IS" BASIS, | 
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | // See the License for the specific language governing permissions and | 
 | // limitations under the License. | 
 |  | 
 | cc_library_headers { | 
 |     name: "libutils_headers", | 
 |     vendor_available: true, | 
 |     recovery_available: true, | 
 |     host_supported: true, | 
 |     native_bridge_supported: true, | 
 |     apex_available: [ | 
 |         "//apex_available:platform", | 
 |         "//apex_available:anyapex", | 
 |     ], | 
 |  | 
 |     header_libs: [ | 
 |         "liblog_headers", | 
 |         "libsystem_headers", | 
 |         "libcutils_headers", | 
 |         "libprocessgroup_headers", | 
 |     ], | 
 |     export_header_lib_headers: [ | 
 |         "liblog_headers", | 
 |         "libsystem_headers", | 
 |         "libcutils_headers", | 
 |         "libprocessgroup_headers", | 
 |     ], | 
 |     export_include_dirs: ["include"], | 
 |  | 
 |     target: { | 
 |         android: { | 
 |             header_libs: ["libbacktrace_headers"], | 
 |             export_header_lib_headers: ["libbacktrace_headers"], | 
 |         }, | 
 |         linux_bionic: { | 
 |             enabled: true, | 
 |         }, | 
 |         windows: { | 
 |             enabled: true, | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | cc_defaults { | 
 |     name: "libutils_defaults", | 
 |     vendor_available: true, | 
 |     recovery_available: true, | 
 |     vndk: { | 
 |         enabled: true, | 
 |         support_system_process: true, | 
 |     }, | 
 |     host_supported: true, | 
 |  | 
 |     cflags: [ | 
 |         "-Wall", | 
 |         "-Werror", | 
 |     ], | 
 |     header_libs: [ | 
 |         "libbase_headers", | 
 |         "libutils_headers", | 
 |     ], | 
 |     export_header_lib_headers: [ | 
 |         "libutils_headers", | 
 |     ], | 
 |  | 
 |     shared_libs: [ | 
 |         "libcutils", | 
 |         "liblog", | 
 |     ], | 
 |  | 
 |     target: { | 
 |         android: { | 
 |             cflags: ["-fvisibility=protected"], | 
 |  | 
 |             shared_libs: [ | 
 |                 "libprocessgroup", | 
 |                 "libdl", | 
 |                 "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, | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | cc_library { | 
 |     name: "libutils", | 
 |     defaults: ["libutils_defaults"], | 
 |     native_bridge_supported: true, | 
 |  | 
 |     srcs: [ | 
 |         "Errors.cpp", | 
 |         "FileMap.cpp", | 
 |         "JenkinsHash.cpp", | 
 |         "NativeHandle.cpp", | 
 |         "Printer.cpp", | 
 |         "PropertyMap.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", | 
 |     ], | 
 | } | 
 |  | 
 | cc_library { | 
 |     name: "libutilscallstack", | 
 |     defaults: ["libutils_defaults"], | 
 |  | 
 |     srcs: [ | 
 |         "CallStack.cpp", | 
 |     ], | 
 |  | 
 |     shared_libs: [ | 
 |          "libutils", | 
 |          "libbacktrace", | 
 |     ], | 
 |  | 
 |     target: { | 
 |         linux: { | 
 |             srcs: [ | 
 |                 "ProcessCallStack.cpp", | 
 |             ], | 
 |         }, | 
 |         darwin: { | 
 |             enabled: false, | 
 |         }, | 
 |         windows: { | 
 |             enabled: false, | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | cc_test { | 
 |     name: "libutils_test", | 
 |     host_supported: true, | 
 |  | 
 |     srcs: [ | 
 |         "BitSet_test.cpp", | 
 |         "FileMap_test.cpp", | 
 |         "LruCache_test.cpp", | 
 |         "Mutex_test.cpp", | 
 |         "SharedBuffer_test.cpp", | 
 |         "String8_test.cpp", | 
 |         "String16_test.cpp", | 
 |         "StrongPointer_test.cpp", | 
 |         "Unicode_test.cpp", | 
 |         "Vector_test.cpp", | 
 |     ], | 
 |  | 
 |     target: { | 
 |         android: { | 
 |             srcs: [ | 
 |                 "SystemClock_test.cpp", | 
 |             ], | 
 |             shared_libs: [ | 
 |                 "libz", | 
 |                 "liblog", | 
 |                 "libcutils", | 
 |                 "libutils", | 
 |                 "libbase", | 
 |             ], | 
 |         }, | 
 |         linux: { | 
 |             srcs: [ | 
 |                 "Looper_test.cpp", | 
 |                 "RefBase_test.cpp", | 
 |             ], | 
 |         }, | 
 |         host: { | 
 |             static_libs: [ | 
 |                 "libutils", | 
 |                 "liblog", | 
 |                 "libbase", | 
 |             ], | 
 |         }, | 
 |     }, | 
 |  | 
 |     cflags: [ | 
 |         "-Wall", | 
 |         "-Wextra", | 
 |         "-Werror", | 
 |         "-Wthread-safety", | 
 |     ], | 
 |  | 
 |     test_suites: ["device-tests"], | 
 | } | 
 |  | 
 | // TODO: the test infrastructure isn't yet capable of running this, | 
 | // so it's broken out into its own test so that the main libutils_tests | 
 | // can be in presubmit even if this can't. | 
 |  | 
 | cc_test { | 
 |     name: "libutils_singleton_test", | 
 |     srcs: ["Singleton_test.cpp"], | 
 |     cflags: [ | 
 |         "-Wall", | 
 |         "-Werror", | 
 |     ], | 
 |     shared_libs: ["libbase"], | 
 |  | 
 |     required: [ | 
 |         ":libutils_test_singleton1", | 
 |         ":libutils_test_singleton2", | 
 |     ], | 
 | } | 
 |  | 
 | cc_test_library { | 
 |     name: "libutils_test_singleton1", | 
 |     host_supported: true, | 
 |     relative_install_path: "libutils_test", | 
 |     srcs: ["Singleton_test1.cpp"], | 
 |     cflags: [ | 
 |         "-Wall", | 
 |         "-Werror", | 
 |     ], | 
 | } | 
 |  | 
 | cc_test_library { | 
 |     name: "libutils_test_singleton2", | 
 |     host_supported: true, | 
 |     relative_install_path: "libutils_test", | 
 |     srcs: ["Singleton_test2.cpp"], | 
 |     cflags: [ | 
 |         "-Wall", | 
 |         "-Werror", | 
 |     ], | 
 |     shared_libs: ["libutils_test_singleton1"], | 
 | } | 
 |  | 
 | cc_benchmark { | 
 |     name: "libutils_benchmark", | 
 |     srcs: ["Vector_benchmark.cpp"], | 
 |     shared_libs: ["libutils"], | 
 | } |