Move backtrace generation behind cmake flag
This commit is contained in:
@@ -7,6 +7,8 @@ option( ENABLE_EXAMPLES "Install additional tin2rc examples" ON )
|
||||
option( ENABLE_RSVG "Rsvg support (launcher only)" ON )
|
||||
option( ENABLE_SN "Startup notification support" ON )
|
||||
option( ENABLE_ASAN "Build tint2 with AddressSanitizer" OFF )
|
||||
option( ENABLE_BACKTRACE "Dump a backtrace in case of fatal errors (e.g. X11 I/O error)" ON )
|
||||
option( ENABLE_BACKTRACE_ON_SIGNAL "Dump a backtrace also when receiving signals such as SIGSEGV" ON )
|
||||
if( CMAKE_SYSTEM_NAME STREQUAL "Linux" )
|
||||
option( ENABLE_UEVENT "Kernel event handling support" ON )
|
||||
endif( CMAKE_SYSTEM_NAME STREQUAL "Linux" )
|
||||
@@ -22,24 +24,33 @@ pkg_check_modules( GLIB2 REQUIRED glib-2.0 )
|
||||
pkg_check_modules( GOBJECT2 REQUIRED gobject-2.0 )
|
||||
pkg_check_modules( IMLIB2 REQUIRED imlib2>=1.4.2 )
|
||||
|
||||
check_c_source_compiles(
|
||||
"#include <stdlib.h>\n#include <execinfo.h>\nint main () { backtrace(NULL, 0); }"
|
||||
BACKTRACE_LIBC)
|
||||
if(ENABLE_BACKTRACE)
|
||||
check_c_source_compiles(
|
||||
"#include <stdlib.h>\n#include <execinfo.h>\nint main () { backtrace(NULL, 0); }"
|
||||
BACKTRACE_LIBC)
|
||||
|
||||
if(BACKTRACE_LIBC)
|
||||
set(BACKTRACE_LIBC_FOUND TRUE)
|
||||
set(BACKTRACE_L_FLAGS "-rdynamic")
|
||||
else()
|
||||
pkg_check_modules( UNWIND libunwind )
|
||||
find_library(EXECINFO_LIBRARIES NAMES execinfo)
|
||||
if(EXECINFO_LIBRARIES OR EXECINFO_LIBRARIES_FOUND)
|
||||
set(EXECINFO_FOUND TRUE)
|
||||
set(EXECINFO_LIBRARIES "-lexecinfo")
|
||||
if(BACKTRACE_LIBC)
|
||||
set(BACKTRACE_LIBC_FOUND TRUE)
|
||||
set(BACKTRACE_L_FLAGS "-rdynamic")
|
||||
else()
|
||||
set(EXECINFO_LIBRARIES "")
|
||||
set(BACKTRACE_L_FLAGS "")
|
||||
pkg_check_modules( UNWIND libunwind )
|
||||
find_library(EXECINFO_LIBRARIES NAMES execinfo)
|
||||
if(EXECINFO_LIBRARIES OR EXECINFO_LIBRARIES_FOUND)
|
||||
set(EXECINFO_FOUND TRUE)
|
||||
set(EXECINFO_LIBRARIES "-lexecinfo")
|
||||
set(BACKTRACE_L_FLAGS "-rdynamic")
|
||||
else()
|
||||
set(EXECINFO_LIBRARIES "")
|
||||
set(BACKTRACE_L_FLAGS "")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if( NOT BACKTRACE_LIBC_FOUND AND NOT UNWIND_FOUND AND NOT EXECINFO_FOUND )
|
||||
message( WARNING "Backtrace support not available. You can enable it by installing libexecinfo or libunwind." )
|
||||
endif()
|
||||
else()
|
||||
set(EXECINFO_LIBRARIES "")
|
||||
set(BACKTRACE_L_FLAGS "")
|
||||
endif()
|
||||
|
||||
if( ENABLE_RSVG )
|
||||
@@ -63,10 +74,6 @@ if( NOT IMLIB_BUILD_WITH_X )
|
||||
message( FATAL_ERROR "Imlib is not built with X support" )
|
||||
endif( NOT IMLIB_BUILD_WITH_X )
|
||||
|
||||
if( NOT BACKTRACE_LIBC_FOUND AND NOT UNWIND_FOUND AND NOT EXECINFO_FOUND )
|
||||
message( WARNING "Backtrace support not available. You can enable it by installing libexecinfo or libunwind." )
|
||||
endif()
|
||||
|
||||
add_definitions( -D_GNU_SOURCE )
|
||||
|
||||
include_directories( ${PROJECT_BINARY_DIR}
|
||||
@@ -154,18 +161,26 @@ if( ENABLE_UEVENT )
|
||||
set( SOURCES ${SOURCES} src/util/uevent.c)
|
||||
endif( ENABLE_UEVENT )
|
||||
|
||||
if(BACKTRACE_LIBC_FOUND)
|
||||
add_definitions( -DENABLE_EXECINFO )
|
||||
if(ENABLE_BACKTRACE)
|
||||
if(BACKTRACE_LIBC_FOUND)
|
||||
add_definitions( -DENABLE_EXECINFO )
|
||||
endif()
|
||||
|
||||
if( UNWIND_FOUND )
|
||||
add_definitions( -DENABLE_LIBUNWIND )
|
||||
endif( UNWIND_FOUND )
|
||||
|
||||
if( EXECINFO_FOUND )
|
||||
add_definitions( -DENABLE_EXECINFO )
|
||||
endif( EXECINFO_FOUND )
|
||||
|
||||
if(ENABLE_BACKTRACE_ON_SIGNAL)
|
||||
add_definitions( -DBACKTRACE_ON_SIGNAL )
|
||||
endif()
|
||||
else()
|
||||
add_definitions( -DDISABLE_BACKTRACE )
|
||||
endif()
|
||||
|
||||
if( UNWIND_FOUND )
|
||||
add_definitions( -DENABLE_LIBUNWIND )
|
||||
endif( UNWIND_FOUND )
|
||||
|
||||
if( EXECINFO_FOUND )
|
||||
add_definitions( -DENABLE_EXECINFO )
|
||||
endif( EXECINFO_FOUND )
|
||||
|
||||
if( ENABLE_TINT2CONF )
|
||||
add_definitions( -DHAVE_VERSION_H )
|
||||
add_subdirectory( src/tint2conf )
|
||||
|
||||
Reference in New Issue
Block a user