diff options
author | OBATA Akio <obache@wizdas.com> | 2020-08-16 18:15:33 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2020-08-17 23:07:26 +0900 |
commit | a6be89461fec308f187f811ad952fc2b4019c561 (patch) | |
tree | 12105b32217b7c8061741bc7a47d4e578a954f35 | |
parent | f5a0ae91d37e4b965a3c26c9791e2958bb789754 (diff) | |
download | tdelibs-a6be89461fec308f187f811ad952fc2b4019c561.tar.gz tdelibs-a6be89461fec308f187f811ad952fc2b4019c561.zip |
Allow to use backtrace(3) external library for kdebug
Signed-off-by: OBATA Akio <obache@wizdas.com>
(cherry picked from commit 2167207adc49b498536a5a8533c27fc67e0c6e9c)
-rw-r--r-- | CMakeLists.txt | 13 | ||||
-rw-r--r-- | config.h.cmake | 5 | ||||
-rw-r--r-- | tdecore/kdebug.cpp | 6 |
3 files changed, 21 insertions, 3 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f646b13e..d1b2c29a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -330,7 +330,18 @@ check_symbol_exists( gethostbyname2_r "netdb.h" HAVE_GETHOSTBYNAME2_R ) check_symbol_exists( gethostbyname_r "netdb.h" HAVE_GETHOSTBYNAME_R ) check_symbol_exists( gai_strerror "sys/types.h;sys/socket.h;netdb.h" HAVE_GAI_STRERROR ) check_symbol_exists( getaddrinfo "sys/types.h;sys/socket.h;netdb.h" HAVE_GETADDRINFO ) -check_symbol_exists( backtrace "execinfo.h" HAVE_BACKTRACE ) +if ( CMAKE_MAJOR_VERSION LESS "3" ) + check_symbol_exists( backtrace "execinfo.h" HAVE_BACKTRACE ) + if ( HAVE_BACKTRACE ) + set ( Backtrace_LIBRARY "" ) + set ( Backtrace_HEADER "execinfo.h" ) + endif () +else () + find_package( Backtrace ) + if ( Backtrace_FOUND ) + set ( HAVE_BACKTRACE 1 ) + endif () +endif () check_cxx_source_compiles( "#include <cxxabi.h> int main() { abi::__cxa_demangle(0, 0, 0, 0); return 0; }" HAVE_ABI_CXA_DEMANGLE ) diff --git a/config.h.cmake b/config.h.cmake index c7c9e116b..8900f2e86 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -66,8 +66,11 @@ /* Define if you have strvercmp prototype */ #cmakedefine HAVE_STRVERCMP_PROTO 1 -/* Define to 1 if execinfo.h exists and defines backtrace (GLIBC >= 2.1) */ +/* Define to 1 if GLIBC >= 2.1 compatible backtrace facility exists */ #cmakedefine HAVE_BACKTRACE 1 +#ifdef HAVE_BACKTRACE +#define BACKTRACE_H <@Backtrace_HEADER@> +#endif /* Define to 1 if gcc (or may be some over compiller) provides abi::__cxa_demangle() */ #cmakedefine HAVE_ABI_CXA_DEMANGLE 1 diff --git a/tdecore/kdebug.cpp b/tdecore/kdebug.cpp index d906f67fc..9cc32225c 100644 --- a/tdecore/kdebug.cpp +++ b/tdecore/kdebug.cpp @@ -59,7 +59,11 @@ #include <config.h> #ifdef HAVE_BACKTRACE -#include <execinfo.h> +#include BACKTRACE_H + +#ifdef HAVE_DLFCN_H +#include <dlfcn.h> +#endif #ifdef HAVE_ABI_CXA_DEMANGLE #include <cxxabi.h> |