diff --git a/CMakeLists.txt b/CMakeLists.txt index f5c1e5535..5bf3e4910 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -234,13 +234,12 @@ set (_PC_FIELDS set (_PC_HEADERS ucontext.h signal.h) -if (HAVE_UCONTEXT_H AND NOT PC_FROM_UCONTEXT) +if (HAVE_UCONTEXT_H AND NOT DEFINED PC_FROM_UCONTEXT) foreach (_PC_FIELD ${_PC_FIELDS}) foreach (_PC_HEADER ${_PC_HEADERS}) set (_TMP ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/uctfield.cpp) file (WRITE ${_TMP} " -#define _GNU_SOURCE 1 #include <${_PC_HEADER}> int main(void) { @@ -249,14 +248,15 @@ int main(void) } ") try_compile (HAVE_PC_FROM_UCONTEXT ${CMAKE_CURRENT_BINARY_DIR} ${_TMP} - COMPILE_DEFINITIONS _GNU_SOURCE=1) + COMPILE_DEFINITIONS -D_GNU_SOURCE) if (HAVE_PC_FROM_UCONTEXT) - set (PC_FROM_UCONTEXT ${_PC_FIELD} CACHE) + set (PC_FROM_UCONTEXT ${_PC_FIELD} CACHE STRING "") + break () endif (HAVE_PC_FROM_UCONTEXT) endforeach (_PC_HEADER) endforeach (_PC_FIELD) -endif (HAVE_UCONTEXT_H AND NOT PC_FROM_UCONTEXT) +endif (HAVE_UCONTEXT_H AND NOT DEFINED PC_FROM_UCONTEXT) set (GOOGLE_NAMESPACE google) set (_START_GOOGLE_NAMESPACE_ "namespace ${GOOGLE_NAMESPACE} {") diff --git a/src/config.h.cmake.in b/src/config.h.cmake.in index 9d6101013..5a4b0d092 100644 --- a/src/config.h.cmake.in +++ b/src/config.h.cmake.in @@ -135,7 +135,7 @@ #cmakedefine LT_OBJDIR /* How to access the PC from a struct ucontext */ -#cmakedefine PC_FROM_UCONTEXT +#cmakedefine PC_FROM_UCONTEXT ${PC_FROM_UCONTEXT} /* define if we should print file offsets in traces instead of symbolizing. */ #cmakedefine PRINT_UNSYMBOLIZED_STACK_TRACES