From bdcd3491eff065ae2c757f5d6df20cbf9ec1787b Mon Sep 17 00:00:00 2001 From: Michael Kuron <mkuron@icp.uni-stuttgart.de> Date: Tue, 15 Oct 2019 12:01:43 +0200 Subject: [PATCH] Make dependency on execinfo.h optional --- CMakeLists.txt | 17 +++++++++++++++++ src/core/debug/PrintStacktrace.cpp | 7 +++---- src/waLBerlaDefinitions.in.h | 4 ++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d4e3c272..7a39496e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -777,6 +777,23 @@ endif() +############################################################################################################################ +## +## backtrace may be in a separate library +## +############################################################################################################################ + +if ( NOT WIN32 AND (WALBERLA_CXX_COMPILER_IS_GNU OR WALBERLA_CXX_COMPILER_IS_INTEL OR WALBERLA_CXX_COMPILER_IS_CLANG)) + find_package ( Backtrace QUIET ) + if ( Backtrace_FOUND ) + list ( APPEND SERVICE_LIBS ${Backtrace_LIBRARIES} ) + set ( WALBERLA_BUILD_WITH_BACKTRACE ON ) + set ( WALBERLA_BACKTRACE_HEADER ${Backtrace_HEADER} ) + endif ( Backtrace_FOUND ) +endif() + + + ############################################################################################################################ ## ## MPI diff --git a/src/core/debug/PrintStacktrace.cpp b/src/core/debug/PrintStacktrace.cpp index a83b13d23..f939d19d5 100644 --- a/src/core/debug/PrintStacktrace.cpp +++ b/src/core/debug/PrintStacktrace.cpp @@ -36,9 +36,9 @@ void printStacktrace() } // namespace debug } // namespace walberla -#if defined(WALBERLA_CXX_COMPILER_IS_GNU) || defined(WALBERLA_CXX_COMPILER_IS_INTEL) || defined( WALBERLA_CXX_COMPILER_IS_CLANG) +#ifdef WALBERLA_BUILD_WITH_BACKTRACE -#include <execinfo.h> +#include WALBERLA_BACKTRACE_HEADER #include <cstdlib> #include <string> @@ -55,14 +55,13 @@ namespace debug { void * array[BACKTRACE_LENGTH]; size_t size; char **strings; - size_t i; size = numeric_cast< size_t >( backtrace (array, BACKTRACE_LENGTH) ); strings = backtrace_symbols (array, int_c(size) ); os << "Backtrace: " << std::endl; - for (i = 0; i < size; i++) + for (size_t i = 0; i < size; i++) { std::string line ( strings[i] ); #ifdef __APPLE__ diff --git a/src/waLBerlaDefinitions.in.h b/src/waLBerlaDefinitions.in.h index 0d3ed2a75..bb9b6d029 100644 --- a/src/waLBerlaDefinitions.in.h +++ b/src/waLBerlaDefinitions.in.h @@ -53,6 +53,10 @@ #cmakedefine WALBERLA_USE_STD_ANY #cmakedefine WALBERLA_USE_STD_EXPERIMENTAL_OPTIONAL #cmakedefine WALBERLA_USE_STD_OPTIONAL +#cmakedefine WALBERLA_BUILD_WITH_BACKTRACE +#ifdef WALBERLA_BUILD_WITH_BACKTRACE +#define WALBERLA_BACKTRACE_HEADER "${Backtrace_HEADER}" +#endif // SIMD #cmakedefine WALBERLA_SIMD_FORCE_SCALAR -- GitLab