// 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", ], min_sdk_version: "apex_inherit", 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", ], min_sdk_version: "apex_inherit", } 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_defaults { name: "libutils_fuzz_defaults", host_supported: true, shared_libs: [ "libutils", "libbase", ], } 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_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", "Timers_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"], }