diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake index e5050018046..0331d0fa10a 100755 --- a/cmake/config-ix.cmake +++ b/cmake/config-ix.cmake @@ -46,7 +46,6 @@ endfunction() check_include_file(dirent.h HAVE_DIRENT_H) check_include_file(dlfcn.h HAVE_DLFCN_H) check_include_file(errno.h HAVE_ERRNO_H) -check_include_file(execinfo.h HAVE_EXECINFO_H) check_include_file(fcntl.h HAVE_FCNTL_H) check_include_file(inttypes.h HAVE_INTTYPES_H) check_include_file(link.h HAVE_LINK_H) @@ -165,7 +164,9 @@ endif() # function checks check_symbol_exists(arc4random "stdlib.h" HAVE_DECL_ARC4RANDOM) -check_symbol_exists(backtrace "execinfo.h" HAVE_BACKTRACE) +find_package(Backtrace) +set(HAVE_BACKTRACE ${Backtrace_FOUND}) +set(BACKTRACE_HEADER ${Backtrace_HEADER}) check_symbol_exists(_Unwind_Backtrace "unwind.h" HAVE__UNWIND_BACKTRACE) check_symbol_exists(getpagesize unistd.h HAVE_GETPAGESIZE) check_symbol_exists(sysconf unistd.h HAVE_SYSCONF) diff --git a/include/llvm/Config/config.h.cmake b/include/llvm/Config/config.h.cmake index 3ee48a0d1ba..a3c919d3980 100644 --- a/include/llvm/Config/config.h.cmake +++ b/include/llvm/Config/config.h.cmake @@ -16,6 +16,8 @@ /* Define to 1 if you have the `backtrace' function. */ #cmakedefine HAVE_BACKTRACE ${HAVE_BACKTRACE} +#define BACKTRACE_HEADER <${BACKTRACE_HEADER}> + /* Define to 1 if you have the header file. */ #cmakedefine HAVE_CRASHREPORTERCLIENT_H diff --git a/lib/Support/CMakeLists.txt b/lib/Support/CMakeLists.txt index a46167e8714..491614b4bf6 100644 --- a/lib/Support/CMakeLists.txt +++ b/lib/Support/CMakeLists.txt @@ -9,6 +9,9 @@ elseif( CMAKE_HOST_UNIX ) if( HAVE_LIBDL ) set(system_libs ${system_libs} ${CMAKE_DL_LIBS}) endif() + if( HAVE_BACKTRACE ) + set(system_libs ${system_libs} ${Backtrace_LIBRARIES}) + endif() if(LLVM_ENABLE_TERMINFO) if(HAVE_TERMINFO) set(system_libs ${system_libs} ${TERMINFO_LIBS}) @@ -140,7 +143,7 @@ add_llvm_library(LLVMSupport Windows ${LLVM_MAIN_INCLUDE_DIR}/llvm/ADT ${LLVM_MAIN_INCLUDE_DIR}/llvm/Support - + ${Backtrace_INCLUDE_DIRS} LINK_LIBS ${system_libs} ) diff --git a/lib/Support/Unix/Signals.inc b/lib/Support/Unix/Signals.inc index 756d0f5a95e..88ad21e9806 100644 --- a/lib/Support/Unix/Signals.inc +++ b/lib/Support/Unix/Signals.inc @@ -25,8 +25,8 @@ #include "llvm/Support/raw_ostream.h" #include #include -#if HAVE_EXECINFO_H -# include // For backtrace(). +#ifdef HAVE_BACKTRACE +# include BACKTRACE_HEADER // For backtrace(). #endif #if HAVE_SIGNAL_H #include