mirror of
https://github.com/netdata/netdata.git
synced 2025-04-28 22:52:30 +00:00

* initial implementation of libbacktrace * in buildinfo show the parameters of libbacktrace * do not disable libbacktrace if threading is not supported * Don’t install libbacktrace, only build it. * Disable libbacktrace for 32-bit ARM builds. * Make libunwind and libbacktrace mutually exclusive at configure time. Instead of relying on it being mutually exclusive at build time. This ensures we don’t waste time on libunwind when using libbacktrace. * Only use libbacktrace on Linux and Windows * Work around broken logic in openSUSE rpmbuild. * Fix handling of libbacktrace for 32-bit ARM static builds. --------- Co-authored-by: Austin S. Hemmelgarn <austin@netdata.cloud>
51 lines
2.1 KiB
CMake
51 lines
2.1 KiB
CMake
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
# Functions and macros for handling of libbacktrace
|
|
#
|
|
# Handle bundling of libbacktrace.
|
|
#
|
|
# This clones and builds libbacktrace using ExternalProject functionality.
|
|
|
|
include(ExternalProject)
|
|
|
|
function(netdata_bundle_libbacktrace)
|
|
message(STATUS "Preparing libbacktrace")
|
|
|
|
set(libbacktrace_SOURCE_DIR "${CMAKE_BINARY_DIR}/libbacktrace-src")
|
|
set(libbacktrace_BINARY_DIR "${CMAKE_BINARY_DIR}/libbacktrace-build")
|
|
set(libbacktrace_INSTALL_DIR "${CMAKE_BINARY_DIR}/libbacktrace-install")
|
|
set(libbacktrace_LIBRARY "${libbacktrace_INSTALL_DIR}/lib/libbacktrace.a")
|
|
|
|
# Clone and build libbacktrace
|
|
ExternalProject_Add(
|
|
libbacktrace
|
|
GIT_REPOSITORY https://github.com/ianlancetaylor/libbacktrace.git
|
|
SOURCE_DIR "${libbacktrace_SOURCE_DIR}"
|
|
BINARY_DIR "${libbacktrace_BINARY_DIR}"
|
|
CONFIGURE_COMMAND "${libbacktrace_SOURCE_DIR}/configure" --prefix=${libbacktrace_INSTALL_DIR} --enable-static
|
|
BUILD_COMMAND make install
|
|
INSTALL_COMMAND ""
|
|
BUILD_BYPRODUCTS "${libbacktrace_LIBRARY}"
|
|
EXCLUDE_FROM_ALL 1
|
|
)
|
|
|
|
# Create an imported library target
|
|
add_library(libbacktrace_library STATIC IMPORTED GLOBAL)
|
|
set_property(
|
|
TARGET libbacktrace_library
|
|
PROPERTY IMPORTED_LOCATION "${libbacktrace_LIBRARY}"
|
|
)
|
|
add_dependencies(libbacktrace_library libbacktrace)
|
|
|
|
# Export variables to parent scope
|
|
set(NETDATA_LIBBACKTRACE_INCLUDE_DIRS "${libbacktrace_INSTALL_DIR}/include" PARENT_SCOPE)
|
|
set(NETDATA_LIBBACKTRACE_LIBRARIES libbacktrace_library PARENT_SCOPE)
|
|
set(HAVE_LIBBACKTRACE TRUE PARENT_SCOPE)
|
|
|
|
message(STATUS "Finished preparing libbacktrace")
|
|
endfunction()
|
|
|
|
function(netdata_add_libbacktrace_to_target _target)
|
|
target_include_directories(${_target} BEFORE PUBLIC "${NETDATA_LIBBACKTRACE_INCLUDE_DIRS}")
|
|
target_link_libraries(${_target} PUBLIC ${NETDATA_LIBBACKTRACE_LIBRARIES})
|
|
add_dependencies(${_target} libbacktrace)
|
|
endfunction()
|