Skip to content

Commit c68d4ae

Browse files
ThomasDevoogdtedsiper
authored andcommitted
build: use the system provided backtrace if found
e.g. buildroot has logic to build backtrace, so if find_path/find_library can find a suitable version, then use that one if -DFLB_PREFER_SYSTEM_LIB_BACKTRACE=Yes. Signed-off-by: Thomas Devoogdt <[email protected]>
1 parent b16da33 commit c68d4ae

File tree

2 files changed

+32
-19
lines changed

2 files changed

+32
-19
lines changed

CMakeLists.txt

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ option(FLB_RUN_LDCONFIG "Enable execution of ldconfig after installation" No)
203203

204204
# Prefer system libraries if available
205205
option(FLB_PREFER_SYSTEM_LIBS "Prefer system libraries" No)
206+
option(FLB_PREFER_SYSTEM_LIB_BACKTRACE "Prefer the libbacktrace system library" ${FLB_PREFER_SYSTEM_LIBS})
206207
option(FLB_PREFER_SYSTEM_LIB_LUAJIT "Prefer the libluajit system library" ${FLB_PREFER_SYSTEM_LIBS})
207208
option(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
# =========================================
945946
if(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)
966979
endif()
967980

968981
if(FLB_IN_KAFKA OR FLB_OUT_KAFKA)

src/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ if(FLB_BINARY)
513513

514514
if(FLB_BACKTRACE)
515515
add_definitions(-DFLB_DUMP_STACKTRACE=1)
516-
target_link_libraries(fluent-bit-bin libbacktrace)
516+
target_link_libraries(fluent-bit-bin ${LIBBACKTRACE_LIBRARIES})
517517
endif()
518518

519519
target_link_libraries(fluent-bit-bin fluent-bit-static ${CMAKE_THREAD_LIBS_INIT})

0 commit comments

Comments
 (0)