diff --git a/cmake/FindLibexecinfo.cmake b/cmake/FindLibexecinfo.cmake new file mode 100644 index 000000000..60a6ad1a0 --- /dev/null +++ b/cmake/FindLibexecinfo.cmake @@ -0,0 +1,18 @@ +# Find the LibExecinfo library - FreeBSD only + +FIND_PATH(LIBEXECINFO_INCLUDE_DIR execinfo.h) +FIND_LIBRARY(LIBEXECINFO_LIBRARY NAMES execinfo) + +IF(LIBEXECINFO_INCLUDE_DIR AND LIBEXECINFO_LIBRARY) + SET(LIBEXECINFO_FOUND TRUE) +ENDIF() + +IF(LIBEXECINFO_FOUND) + IF(NOT LIBEXECINFO_FIND_QUIETLY) + MESSAGE(STATUS "Found LibExecinfo: ${EXECINFO_LIBRARY}") + ENDIF() +ELSE() + IF(LIBEXECINFO_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find LibExecinfo") + ENDIF() +ENDIF() \ No newline at end of file diff --git a/servatrice/CMakeLists.txt b/servatrice/CMakeLists.txt index 8f187599b..248030025 100644 --- a/servatrice/CMakeLists.txt +++ b/servatrice/CMakeLists.txt @@ -29,6 +29,12 @@ if(WIN32) set(servatrice_SOURCES ${servatrice_SOURCES} servatrice.rc) endif(WIN32) +# Under FreeBSD we need libexecinfo to use backtrace_symbols_fd() +if(CMAKE_HOST_SYSTEM MATCHES "FreeBSD") + find_package(Libexecinfo REQUIRED) + set(SYSTEM_LIBRARIES ${EXECINFO_LIBRARY} ${SYSTEM_LIBRARIES}) +endif() + if(APPLE) set(MACOSX_BUNDLE_ICON_FILE appicon.icns) @@ -88,6 +94,8 @@ ADD_EXECUTABLE(servatrice MACOSX_BUNDLE ${servatrice_SOURCES} ${servatrice_RESOU if(MSVC) TARGET_LINK_LIBRARIES(servatrice cockatrice_common ${CMAKE_THREAD_LIBS_INIT} ${SERVATRICE_QT_MODULES} Qt5::WinMain) +elseif(CMAKE_HOST_SYSTEM MATCHES "FreeBSD") + TARGET_LINK_LIBRARIES(servatrice cockatrice_common ${CMAKE_THREAD_LIBS_INIT} ${SERVATRICE_QT_MODULES} ${LIBEXECINFO_LIBRARY}) else() TARGET_LINK_LIBRARIES(servatrice cockatrice_common ${CMAKE_THREAD_LIBS_INIT} ${SERVATRICE_QT_MODULES}) endif()