cc_defaults { name: "debuggerd_defaults", cflags: [ "-Wall", "-Wextra", "-Werror", "-Wno-unused-argument", "-Wno-unused-function", "-Wno-nullability-completeness", "-Os", ], cpp_std: "gnu++17", local_include_dirs: ["include"], } cc_library_headers { name: "libdebuggerd_common_headers", export_include_dirs: ["common/include"], } cc_library_shared { name: "libtombstoned_client", defaults: ["debuggerd_defaults"], srcs: [ "tombstoned/tombstoned_client.cpp", "util.cpp", ], header_libs: ["libdebuggerd_common_headers"], static_libs: [ "libasync_safe", ], shared_libs: [ "libbase", "libcutils", ], export_header_lib_headers: ["libdebuggerd_common_headers"], export_include_dirs: ["tombstoned/include"], } // Utility library to tombstoned and get an output fd. cc_library_static { name: "libtombstoned_client_static", defaults: ["debuggerd_defaults"], srcs: [ "tombstoned/tombstoned_client.cpp", "util.cpp", ], header_libs: ["libdebuggerd_common_headers"], whole_static_libs: [ "libasync_safe", "libcutils", "libbase", ], export_header_lib_headers: ["libdebuggerd_common_headers"], export_include_dirs: ["tombstoned/include"], } // Core implementation, linked into libdebuggerd_handler and the dynamic linker. cc_library_static { name: "libdebuggerd_handler_core", defaults: ["debuggerd_defaults"], srcs: ["handler/debuggerd_handler.cpp"], header_libs: [ "libbase_headers", "libdebuggerd_common_headers", ], whole_static_libs: [ "libasync_safe", "libcutils", "libdebuggerd", ], export_header_lib_headers: ["libdebuggerd_common_headers"], export_include_dirs: ["include"], } // Implementation with a no-op fallback. cc_library_static { name: "libdebuggerd_handler", defaults: ["debuggerd_defaults"], srcs: ["handler/debuggerd_fallback_nop.cpp"], whole_static_libs: [ "libdebuggerd_handler_core", ], export_include_dirs: ["include"], } // Fallback implementation. cc_library_static { name: "libdebuggerd_handler_fallback", defaults: ["debuggerd_defaults"], srcs: [ "handler/debuggerd_fallback.cpp", ], whole_static_libs: [ "libdebuggerd_handler_core", "libtombstoned_client_static", "libasync_safe", "libbase", "libdebuggerd", "libbacktrace", "libunwind", "libunwindstack", "libdexfile", "liblzma", "libcutils", ], export_include_dirs: ["include"], } cc_library { name: "libdebuggerd_client", defaults: ["debuggerd_defaults"], srcs: [ "client/debuggerd_client.cpp", "util.cpp", ], header_libs: ["libdebuggerd_common_headers"], shared_libs: [ "libbase", "libcutils", ], export_header_lib_headers: ["libdebuggerd_common_headers"], export_include_dirs: ["include"], } cc_library_static { name: "libdebuggerd", defaults: ["debuggerd_defaults"], srcs: [ "libdebuggerd/backtrace.cpp", "libdebuggerd/elf_utils.cpp", "libdebuggerd/open_files_list.cpp", "libdebuggerd/tombstone.cpp", "libdebuggerd/utility.cpp", ], local_include_dirs: ["libdebuggerd/include"], export_include_dirs: ["libdebuggerd/include"], static_libs: [ "libbacktrace", "libunwind", "libunwindstack", "liblzma", "libbase", "libcutils", "liblog", ], } cc_test { name: "debuggerd_test", defaults: ["debuggerd_defaults"], cflags: ["-Wno-missing-field-initializers"], srcs: [ "libdebuggerd/test/dump_memory_test.cpp", "libdebuggerd/test/elf_fake.cpp", "libdebuggerd/test/log_fake.cpp", "libdebuggerd/test/open_files_list_test.cpp", "libdebuggerd/test/tombstone_test.cpp", ], target: { android: { srcs: [ "client/debuggerd_client_test.cpp", "debuggerd_test.cpp", ], static_libs: [ "libasync_safe", "libtombstoned_client_static", ], }, }, shared_libs: [ "libbacktrace", "libbase", "libcutils", "libdebuggerd_client", "liblog", "libminijail", "libnativehelper", ], static_libs: [ "libdebuggerd", "libunwindstack", ], local_include_dirs: [ "libdebuggerd", ], compile_multilib: "both", multilib: { lib32: { stem: "debuggerd_test32", }, lib64: { stem: "debuggerd_test64", }, }, } cc_benchmark { name: "debuggerd_benchmark", defaults: ["debuggerd_defaults"], srcs: ["debuggerd_benchmark.cpp"], shared_libs: [ "libbase", "libdebuggerd_client", ], } cc_binary { name: "crash_dump", srcs: [ "crash_dump.cpp", "util.cpp", ], defaults: ["debuggerd_defaults"], compile_multilib: "both", multilib: { lib32: { suffix: "32", }, lib64: { suffix: "64", }, }, static_libs: [ "libtombstoned_client_static", "libdebuggerd", "libcutils", ], shared_libs: [ "libbacktrace", "libbase", "liblog", "libprocinfo", "libunwindstack", ], } cc_binary { name: "debuggerd", srcs: [ "debuggerd.cpp", ], defaults: ["debuggerd_defaults"], shared_libs: [ "libbase", "libdebuggerd_client", "liblog", "libprocinfo", ], local_include_dirs: ["include"], } cc_binary { name: "tombstoned", srcs: [ "util.cpp", "tombstoned/intercept_manager.cpp", "tombstoned/tombstoned.cpp", ], defaults: ["debuggerd_defaults"], header_libs: ["libdebuggerd_common_headers"], static_libs: [ "libbase", "libcutils", "libevent", "liblog", ], init_rc: ["tombstoned/tombstoned.rc"], } subdirs = [ "crasher", ]