// // Copyright (C) 2014 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_defaults { name: "libbacktrace_common", cflags: [ "-Wall", "-Werror", ], // The latest clang (r230699) does not allow SP/PC to be declared in inline asm lists. clang_cflags: ["-Wno-inline-asm"], include_dirs: ["external/libunwind/include/tdep"], target: { darwin: { enabled: false, }, }, multilib: { lib32: { suffix: "32", }, lib64: { suffix: "64", }, } } libbacktrace_sources = [ "Backtrace.cpp", "BacktraceCurrent.cpp", "BacktracePtrace.cpp", "thread_utils.c", "ThreadEntry.cpp", "UnwindCurrent.cpp", "UnwindMap.cpp", "UnwindPtrace.cpp", ] cc_library_headers { name: "libbacktrace_headers", vendor_available: true, export_include_dirs: ["include"], } cc_library { name: "libbacktrace", vendor_available: true, vndk: { enabled: true, support_system_process: true, }, defaults: ["libbacktrace_common"], host_supported: true, srcs: [ "BacktraceMap.cpp", ], export_include_dirs: ["include"], target: { darwin: { enabled: true, }, linux: { srcs: libbacktrace_sources, shared_libs: [ "libbase", "liblog", "libunwind", ], static_libs: ["libcutils"], host_ldlibs: ["-lrt"], }, linux_bionic: { enabled: true, srcs: libbacktrace_sources, shared_libs: [ "libbase", "liblog", "libunwind", ], static_libs: ["libcutils"], }, android: { srcs: libbacktrace_sources, shared_libs: [ "libbase", "liblog", "libunwind", ], static_libs: ["libasync_safe", "libcutils"], }, }, whole_static_libs: ["libdemangle"], } cc_library_shared { name: "libbacktrace_test", defaults: ["libbacktrace_common"], host_supported: true, strip: { none: true, }, cflags: ["-O0"], srcs: ["backtrace_testlib.cpp"], target: { linux: { shared_libs: [ "libunwind", ], }, android: { shared_libs: [ "libunwind", ], }, } } //------------------------------------------------------------------------- // The libbacktrace_offline static library. //------------------------------------------------------------------------- cc_library_static { name: "libbacktrace_offline", defaults: ["libbacktrace_common"], host_supported: true, srcs: ["BacktraceOffline.cpp"], cflags: [ "-D__STDC_CONSTANT_MACROS", "-D__STDC_LIMIT_MACROS", "-D__STDC_FORMAT_MACROS", ], header_libs: ["llvm-headers"], // Use shared libraries so their headers get included during build. shared_libs = [ "libbase", "libunwind", "libziparchive", ], } //------------------------------------------------------------------------- // The backtrace_test executable. //------------------------------------------------------------------------- cc_test { name: "backtrace_test", defaults: ["libbacktrace_common"], host_supported: true, srcs: [ "backtrace_offline_test.cpp", "backtrace_test.cpp", "GetPss.cpp", "thread_utils.c", ], cflags: [ "-fno-builtin", "-O0", "-g", ], shared_libs: [ "libbacktrace_test", "libbacktrace", "libbase", "libcutils", "liblog", "libunwind", ], group_static_libs: true, // Statically link LLVMlibraries to remove dependency on llvm shared library. static_libs = [ "libbacktrace_offline", "libLLVMObject", "libLLVMBitReader", "libLLVMMC", "libLLVMMCParser", "libLLVMCore", "libLLVMSupport", "libziparchive", "libz", ], header_libs: ["llvm-headers"], target: { android: { cflags: ["-DENABLE_PSS_TESTS"], shared_libs: [ "libdl", "libutils", ], }, linux: { host_ldlibs: [ "-lpthread", "-lrt", "-ldl", "-lncurses", ], static_libs: ["libutils"], }, }, }