diff --git a/CMakeLists.txt b/CMakeLists.txt index a91cee1..4e38769 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -146,6 +146,8 @@ endif() set(pdal_defines_h_in "${CMAKE_CURRENT_SOURCE_DIR}/pdal_defines.h.in") set(pdal_defines_h "${CMAKE_CURRENT_BINARY_DIR}/include/pdal/pdal_defines.h") +include(CheckIncludeFiles) +check_include_files(execinfo.h PDAL_HAVE_EXECINFO_H) configure_file(${pdal_defines_h_in} ${pdal_defines_h}) #------------------------------------------------------------------------------ diff --git a/apps/pdal.cpp b/apps/pdal.cpp index 3193196..548ea4f 100644 --- a/apps/pdal.cpp +++ b/apps/pdal.cpp @@ -355,6 +355,7 @@ int App::execute(StringList& cmdArgs, LogPtr& log) log->setLevel(LogLevel::Debug); PluginManager::setLog(log); #ifndef _WIN32 +#ifdef PDAL_HAVE_EXECINFO_H if (m_debug) { signal(SIGSEGV, [](int sig) @@ -368,6 +369,7 @@ int App::execute(StringList& cmdArgs, LogPtr& log) }); } #endif +#endif m_command = Utils::tolower(m_command); if (!m_command.empty()) diff --git a/pdal/util/Utils.cpp b/pdal/util/Utils.cpp index c2a9489..d0675c4 100644 --- a/pdal/util/Utils.cpp +++ b/pdal/util/Utils.cpp @@ -44,7 +44,9 @@ #include #include #include // WIFEXITED, WEXITSTATUS +#ifdef PDAL_HAVE_EXECINFO_H #include // backtrace +#endif #include // dladdr #endif @@ -605,6 +607,7 @@ std::vector Utils::backtrace() { std::vector lines; #ifndef WIN32 +#ifdef PDAL_HAVE_EXECINFO_H const int MAX_STACK_SIZE(100); void* buffer[MAX_STACK_SIZE]; std::vector prefixes; @@ -657,6 +660,7 @@ std::vector Utils::backtrace() } } #endif +#endif return lines; } diff --git a/pdal_defines.h.in b/pdal_defines.h.in index 77dca12..15e3932 100644 --- a/pdal_defines.h.in +++ b/pdal_defines.h.in @@ -34,6 +34,11 @@ #cmakedefine PDAL_ARBITER_ENABLED /* + * availability of execinfo.h + */ +#cmakedefine PDAL_HAVE_EXECINFO_H + +/* * Debug or Release build? */ #define PDAL_BUILD_TYPE "@PDAL_BUILD_TYPE@"