@@ -203,6 +203,7 @@ option(FLB_RUN_LDCONFIG "Enable execution of ldconfig after installation" No)
203203
204204# Prefer system libraries if available
205205option (FLB_PREFER_SYSTEM_LIBS "Prefer system libraries" No )
206+ option (FLB_PREFER_SYSTEM_LIB_BACKTRACE "Prefer the libbacktrace system library" ${FLB_PREFER_SYSTEM_LIBS} )
206207option (FLB_PREFER_SYSTEM_LIB_LUAJIT "Prefer the libluajit system library" ${FLB_PREFER_SYSTEM_LIBS} )
207208option (FLB_PREFER_SYSTEM_LIB_NGHTTP2 "Prefer the libnghttp2 system library" ${FLB_PREFER_SYSTEM_LIBS} )
208209
@@ -943,26 +944,38 @@ endif()
943944# LibBacktrace (friendly stacktrace support)
944945# =========================================
945946if (FLB_BACKTRACE)
946- FLB_DEFINITION(FLB_HAVE_LIBBACKTRACE)
947- if (CMAKE_OSX_SYSROOT)
948- # From macOS Mojave, /usr/include does not store C SDK headers.
949- # For libbacktrace building on macOS, we have to tell C headers where they are located.
950- set (DEPS_C_COMPILER "${CMAKE_C_COMPILER} -isysroot ${CMAKE_OSX_SYSROOT} " )
947+ if (FLB_PREFER_SYSTEM_LIB_BACKTRACE)
948+ find_path (LIBBACKTRACE_INCLUDE_DIRS NAMES backtrace.h)
949+ find_library (LIBBACKTRACE_LIBRARIES NAMES backtrace)
950+ endif ()
951+ if (LIBBACKTRACE_INCLUDE_DIRS AND LIBBACKTRACE_LIBRARIES)
952+ message (STATUS "libbacktrace found (${LIBBACKTRACE_LIBRARIES} )" )
953+ include_directories (${LIBBACKTRACE_INCLUDE_DIRS} )
954+ link_directories (${LIBBACKTRACE_LIBRARY_DIRS} )
951955 else ()
952- set (DEPS_C_COMPILER "${CMAKE_C_COMPILER} " )
956+ message (STATUS "libbacktrace not found, building ourselves" )
957+ if (CMAKE_OSX_SYSROOT)
958+ # From macOS Mojave, /usr/include does not store C SDK headers.
959+ # For libbacktrace building on macOS, we have to tell C headers where they are located.
960+ set (DEPS_C_COMPILER "${CMAKE_C_COMPILER} -isysroot ${CMAKE_OSX_SYSROOT} " )
961+ else ()
962+ set (DEPS_C_COMPILER "${CMAKE_C_COMPILER} " )
963+ endif ()
964+ set (FLB_LIBBACKTRACE_PATH "${CMAKE_CURRENT_BINARY_DIR} /backtrace-prefix/lib/libbacktrace.a" )
965+ ExternalProject_Add(backtrace
966+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /lib/libbacktrace-8602fda/
967+ CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR} /lib/libbacktrace-8602fda/configure ${AUTOCONF_HOST_OPT} --prefix =<INSTALL_DIR> --enable-shared=no --enable-static =yes
968+ BUILD_COMMAND ${EXTERNAL_BUILD_TOOL}
969+ BUILD_BYPRODUCTS ${FLB_LIBBACKTRACE_PATH}
970+ INSTALL_COMMAND ${EXTERNAL_BUILD_TOOL} DESTDIR= install
971+ )
972+ add_library (libbacktrace STATIC IMPORTED GLOBAL )
973+ set_target_properties (libbacktrace PROPERTIES IMPORTED_LOCATION ${FLB_LIBBACKTRACE_PATH} )
974+ add_dependencies (libbacktrace backtrace)
975+ include_directories ("${CMAKE_CURRENT_BINARY_DIR} /backtrace-prefix/include/" )
976+ set (LIBBACKTRACE_LIBRARIES "libbacktrace" )
953977 endif ()
954- set (FLB_LIBBACKTRACE_PATH "${CMAKE_CURRENT_BINARY_DIR} /backtrace-prefix/lib/libbacktrace.a" )
955- ExternalProject_Add(backtrace
956- SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /lib/libbacktrace-8602fda/
957- CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR} /lib/libbacktrace-8602fda/configure ${AUTOCONF_HOST_OPT} --prefix =<INSTALL_DIR> --enable-shared=no --enable-static =yes
958- BUILD_COMMAND ${EXTERNAL_BUILD_TOOL}
959- BUILD_BYPRODUCTS ${FLB_LIBBACKTRACE_PATH}
960- INSTALL_COMMAND ${EXTERNAL_BUILD_TOOL} DESTDIR= install
961- )
962- add_library (libbacktrace STATIC IMPORTED GLOBAL )
963- set_target_properties (libbacktrace PROPERTIES IMPORTED_LOCATION ${FLB_LIBBACKTRACE_PATH} )
964- add_dependencies (libbacktrace backtrace)
965- include_directories ("${CMAKE_CURRENT_BINARY_DIR} /backtrace-prefix/include/" )
978+ FLB_DEFINITION(FLB_HAVE_LIBBACKTRACE)
966979endif ()
967980
968981if (FLB_IN_KAFKA OR FLB_OUT_KAFKA)
0 commit comments