From 93ae1bcd8005216baf7361ba860b53a2cf2e0401 Mon Sep 17 00:00:00 2001 From: Floris Bos Date: Sun, 25 Nov 2012 19:05:07 +0100 Subject: [PATCH] Test for the existence of execinfo.h Previous code assumed that on Linux the execinfo.h functions are always available, which is a glibc extension. This change fixes building the library under buildroot, which uses uClibc by default --- interface/vcos/glibc/vcos_backtrace.c | 7 +++++-- makefiles/cmake/arm-linux.cmake | 4 ++++ makefiles/cmake/cmake_config.h.in | 3 +++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/interface/vcos/glibc/vcos_backtrace.c b/interface/vcos/glibc/vcos_backtrace.c index 474a328..3bb8aa3 100644 --- a/interface/vcos/glibc/vcos_backtrace.c +++ b/interface/vcos/glibc/vcos_backtrace.c @@ -26,7 +26,10 @@ */ #include -#ifdef __linux__ +#ifdef HAVE_CMAKE_CONFIG +#include "cmake_config.h" +#endif +#ifdef HAVE_EXECINFO_H #include #endif #include @@ -35,7 +38,7 @@ void vcos_backtrace_self(void) { -#ifdef __linux__ +#ifdef HAVE_EXECINFO_H void *stack[64]; int depth = backtrace(stack, sizeof(stack)/sizeof(stack[0])); char **names = backtrace_symbols(stack, depth); diff --git a/makefiles/cmake/arm-linux.cmake b/makefiles/cmake/arm-linux.cmake index 89d8bbf..6f2114f 100644 --- a/makefiles/cmake/arm-linux.cmake +++ b/makefiles/cmake/arm-linux.cmake @@ -115,6 +115,10 @@ try_compile(HAVE_MTRACE ${CMAKE_SOURCE_DIR}/makefiles/cmake/srcs/test-mtrace.c OUTPUT_VARIABLE foo) +# test for existence of execinfo.h header +include(CheckIncludeFile) +check_include_file(execinfo.h HAVE_EXECINFO_H) + add_definitions(-DHAVE_CMAKE_CONFIG) configure_file ( "makefiles/cmake/cmake_config.h.in" diff --git a/makefiles/cmake/cmake_config.h.in b/makefiles/cmake/cmake_config.h.in index 5f08ad5..080b8e8 100644 --- a/makefiles/cmake/cmake_config.h.in +++ b/makefiles/cmake/cmake_config.h.in @@ -8,5 +8,8 @@ /** Do we have support for GLIBC mtrace() ? */ #cmakedefine HAVE_MTRACE +/** Do we have the execinfo.h include file ? */ +#cmakedefine HAVE_EXECINFO_H + #endif -- 1.7.10