From: Alex Richardson Date: Sun, 20 Mar 2022 23:25:29 +0000 (+0000) Subject: cmake: Detect backtrace() support on platforms such as FreeBSD X-Git-Tag: dbus-1.15.0~89^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3f5bdf0c2df3fb2b15f7dde246bf035bfae4d37a;p=thirdparty%2Fdbus.git cmake: Detect backtrace() support on platforms such as FreeBSD On FreeBSD use of backtrace requires linking libexecinfo. The current check_symbol_exists() will fail due to that missing library. Fortunately, CMake ships with a FindBacktrace module (at least since 3.0) that can be used to correctly handle platforms such as FreeBSD (and OpenBSD according to the FindBacktrace source). --- diff --git a/cmake/ConfigureChecks.cmake b/cmake/ConfigureChecks.cmake index 7e21e0841..45136cc33 100644 --- a/cmake/ConfigureChecks.cmake +++ b/cmake/ConfigureChecks.cmake @@ -42,7 +42,9 @@ check_include_file(ws2tcpip.h HAVE_WS2TCPIP_H)# dbus-sysdeps-win.c check_include_file(unistd.h HAVE_UNISTD_H) # dbus-sysdeps-util-win.c check_include_file(sys/inotify.h DBUS_BUS_ENABLE_INOTIFY) -check_symbol_exists(backtrace "execinfo.h" HAVE_BACKTRACE) # dbus-sysdeps.c, dbus-sysdeps-win.c +find_package(Backtrace) # dbus-sysdeps.c, dbus-sysdeps-win.c +set(HAVE_BACKTRACE ${Backtrace_FOUND}) + check_symbol_exists(getgrouplist "grp.h" HAVE_GETGROUPLIST) # dbus-sysdeps.c check_symbol_exists(getpeerucred "ucred.h" HAVE_GETPEERUCRED) # dbus-sysdeps.c, dbus-sysdeps-win.c check_symbol_exists(nanosleep "time.h" HAVE_NANOSLEEP) # dbus-sysdeps.c diff --git a/dbus/CMakeLists.txt b/dbus/CMakeLists.txt index e9203ca67..9e3f0a148 100644 --- a/dbus/CMakeLists.txt +++ b/dbus/CMakeLists.txt @@ -292,6 +292,10 @@ else(WIN32) if(LIBSOCKET) target_link_libraries(dbus-1 ${LIBSOCKET}) endif() + if (HAVE_BACKTRACE) + target_link_libraries(dbus-1 ${Backtrace_LIBRARY}) + target_include_directories(dbus-1 PRIVATE ${Backtrace_INCLUDE_DIR}) + endif() endif() target_include_directories(dbus-1 INTERFACE $;$)