From 3d7c5e1e68f6287c96466aef8039dc69842ba2ab Mon Sep 17 00:00:00 2001 From: Michael Wild Date: Thu, 12 Jan 2012 13:26:36 +0000 Subject: [PATCH] FIX: FindExecInfo.cmake continued although EXECINFO_INCLUDE_DIR was -NOTFOUND Signed-off-by: Michael Wild --- CMake/Modules/FindExecinfo.cmake | 73 +++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/CMake/Modules/FindExecinfo.cmake b/CMake/Modules/FindExecinfo.cmake index 62126527a..13883fd0f 100644 --- a/CMake/Modules/FindExecinfo.cmake +++ b/CMake/Modules/FindExecinfo.cmake @@ -54,44 +54,47 @@ find_path(EXECINFO_INCLUDE_DIR ) mark_as_advanced(EXECINFO_INCLUDE_DIR) -set(EXECINFO_INCLUDE_DIRS ${EXECINFO_INCLUDE_DIR}) - -# now check whether libexecinfo is required -set(__find_execinfo_LINK_LIBRARIES ${LINK_LIBRARIES}) -set(__find_execinfo_test_SRC - "#include - int main() { - void* callstack[128]; - int frames = backtrace(callstack, 128); - char** strs = backtrace_symbols(callstack, frames); - free(strs); - return 0; - }\n" - ) set(__find_execinfo_COMPILES FALSE) -set(__find_execinfo_REQUIRED_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${EXECINFO_INCLUDE_DIR}") -foreach(__find_execinfo_with_lib FALSE TRUE) - if(NOT __find_execinfo_COMPILES) - if(__find_execinfo_with_lib) - find_library(EXECINFO_LIBRARY NAMES execinfo) - mark_as_advanced(EXECINFO_LIBRARY) - set(__find_execinfo_REQUIRED_LIBS "-DLINK_LIBRARIES=${EXECINFO_LIBRARY}") - else() - set(__find_execinfo_REQUIRED_LIBS) + +if(EXECINFO_INCLUDE_DIR) + set(EXECINFO_INCLUDE_DIRS ${EXECINFO_INCLUDE_DIR}) + + # now check whether libexecinfo is required + set(__find_execinfo_LINK_LIBRARIES ${LINK_LIBRARIES}) + set(__find_execinfo_test_SRC + "#include + int main() { + void* callstack[128]; + int frames = backtrace(callstack, 128); + char** strs = backtrace_symbols(callstack, frames); + free(strs); + return 0; + }\n" + ) + set(__find_execinfo_REQUIRED_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${EXECINFO_INCLUDE_DIR}") + foreach(__find_execinfo_with_lib FALSE TRUE) + if(NOT __find_execinfo_COMPILES) + if(__find_execinfo_with_lib) + find_library(EXECINFO_LIBRARY NAMES execinfo) + mark_as_advanced(EXECINFO_LIBRARY) + set(__find_execinfo_REQUIRED_LIBS "-DLINK_LIBRARIES=${EXECINFO_LIBRARY}") + else() + set(__find_execinfo_REQUIRED_LIBS) + endif() + file(WRITE + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/execinfo_test.c + "${__find_execinfo_test_SRC}" + ) + try_compile(__find_execinfo_COMPILES ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/execinfo_test.c + CMAKE_FLAGS "${__find_execinfo_REQUIRED_LIBS}" "${__find_execinfo_REQUIRED_INCLUDE_DIRS}" + ) endif() - file(WRITE - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/execinfo_test.c - "${__find_execinfo_test_SRC}" - ) - try_compile(__find_execinfo_COMPILES ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/execinfo_test.c - CMAKE_FLAGS "${__find_execinfo_REQUIRED_LIBS}" "${__find_execinfo_REQUIRED_INCLUDE_DIRS}" - ) + endforeach() + # if the test compiled and we found a library, add it... + if(__find_execinfo_COMPILES AND EXECINFO_LIBRARY) + set(EXECINFO_LIBRARIES ${EXECINFO_LIBRARY}) endif() -endforeach() -# if the test compiled and we found a library, add it... -if(__find_execinfo_COMPILES AND EXECINFO_LIBRARY) - set(EXECINFO_LIBRARIES ${EXECINFO_LIBRARY}) endif() # handle standard stuff -- 2.11.4.GIT