Fix backtrace on non-linux systems
On BSD systems backtrace lies in libexecinfo. Use FindBacktrace from CMake to be able to resolve backtrace on more unixes than linux. Change-Id: Ie14fd1727d2da03645fc2d6de10c0217baabad6b Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
65b4937f34
commit
75296f347f
17
cmake/FindWrapBacktrace.cmake
Normal file
17
cmake/FindWrapBacktrace.cmake
Normal file
@ -0,0 +1,17 @@
|
||||
if(TARGET WrapBacktrace::WrapBacktrace)
|
||||
set(WrapBacktrace_FOUND ON)
|
||||
return()
|
||||
endif()
|
||||
|
||||
find_package(Backtrace)
|
||||
|
||||
if(Backtrace_FOUND)
|
||||
add_library(WrapBacktrace::WrapBacktrace INTERFACE IMPORTED)
|
||||
target_link_libraries(WrapBacktrace::WrapBacktrace
|
||||
INTERFACE ${Backtrace_LIBRARY})
|
||||
target_include_directories(WrapBacktrace::WrapBacktrace
|
||||
INTERFACE ${Backtrace_INCLUDE_DIR})
|
||||
set(WrapBacktrace_FOUND ON)
|
||||
else()
|
||||
set(WrapBacktrace_FOUND OFF)
|
||||
endif()
|
@ -729,6 +729,11 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_commandlineparser
|
||||
tools/qcommandlineparser.cpp tools/qcommandlineparser.h
|
||||
)
|
||||
|
||||
qt_internal_extend_target(Core CONDITION QT_FEATURE_backtrace
|
||||
LIBRARIES
|
||||
WrapBacktrace::WrapBacktrace
|
||||
)
|
||||
|
||||
qt_internal_extend_target(Core CONDITION QT_FEATURE_system_doubleconversion
|
||||
LIBRARIES
|
||||
WrapDoubleConversion::WrapDoubleConversion
|
||||
|
@ -14,6 +14,9 @@ set_property(CACHE INPUT_libb2 PROPERTY STRINGS undefined no qt system)
|
||||
|
||||
#### Libraries
|
||||
|
||||
if((UNIX) OR QT_FIND_ALL_PACKAGES_ALWAYS)
|
||||
qt_find_package(WrapBacktrace PROVIDED_TARGETS WrapBacktrace::WrapBacktrace MODULE_NAME core QMAKE_LIB backtrace)
|
||||
endif()
|
||||
qt_find_package(WrapDoubleConversion PROVIDED_TARGETS WrapDoubleConversion::WrapDoubleConversion MODULE_NAME core QMAKE_LIB doubleconversion)
|
||||
qt_find_package(GLIB2 PROVIDED_TARGETS GLIB2::GLIB2 MODULE_NAME core QMAKE_LIB glib)
|
||||
qt_find_package(ICU COMPONENTS i18n uc data PROVIDED_TARGETS ICU::i18n ICU::uc ICU::data MODULE_NAME core QMAKE_LIB icu)
|
||||
@ -674,6 +677,10 @@ qt_feature("regularexpression" PUBLIC
|
||||
CONDITION QT_FEATURE_system_pcre2 OR QT_FEATURE_pcre2
|
||||
)
|
||||
qt_feature_definition("regularexpression" "QT_NO_REGULAREXPRESSION" NEGATE VALUE "1")
|
||||
qt_feature("backtrace" PRIVATE
|
||||
LABEL "backtrace"
|
||||
CONDITION UNIX AND QT_FEATURE_regularexpression AND WrapBacktrace_FOUND
|
||||
)
|
||||
qt_feature("sharedmemory" PUBLIC
|
||||
SECTION "Kernel"
|
||||
LABEL "QSharedMemory"
|
||||
@ -909,6 +916,7 @@ qt_feature("cborstreamwriter" PUBLIC
|
||||
PURPOSE "Provides support for writing the CBOR binary format."
|
||||
)
|
||||
qt_configure_add_summary_section(NAME "Qt Core")
|
||||
qt_configure_add_summary_entry(ARGS "backtrace")
|
||||
qt_configure_add_summary_entry(ARGS "doubleconversion")
|
||||
qt_configure_add_summary_entry(ARGS "system-doubleconversion")
|
||||
qt_configure_add_summary_entry(ARGS "glib")
|
||||
|
@ -22,6 +22,17 @@
|
||||
},
|
||||
|
||||
"libraries": {
|
||||
"backtrace": {
|
||||
"label": "backtrace",
|
||||
"test": {
|
||||
"main":
|
||||
[ "void *buffer[100];",
|
||||
"int nptrs = backtrace(buffer, 100);"
|
||||
]
|
||||
},
|
||||
"headers": "execinfo.h",
|
||||
"sources": [ "-lexecinfo" ]
|
||||
},
|
||||
"doubleconversion": {
|
||||
"label": "DoubleConversion",
|
||||
"test": {
|
||||
@ -718,6 +729,11 @@
|
||||
"condition": "features.system-pcre2 || features.pcre2",
|
||||
"output": [ "publicFeature", "feature" ]
|
||||
},
|
||||
"backtrace": {
|
||||
"label": "backtrace",
|
||||
"condition": "config.unix && features.regularexpression && libs.backtrace",
|
||||
"output": [ "privateFeature" ]
|
||||
},
|
||||
"sharedmemory": {
|
||||
"label": "QSharedMemory",
|
||||
"purpose": "Provides access to a shared memory segment.",
|
||||
@ -1013,6 +1029,7 @@ Note that this is required for plugin loading. Qt GUI needs QPA plugins for basi
|
||||
{
|
||||
"section": "Qt Core",
|
||||
"entries": [
|
||||
"backtrace",
|
||||
"doubleconversion",
|
||||
"system-doubleconversion",
|
||||
"glib",
|
||||
|
@ -402,6 +402,7 @@ _qt_library_map = [
|
||||
_library_map = [
|
||||
# 3rd party:
|
||||
LibraryMapping("atspi", "ATSPI2", "PkgConfig::ATSPI2"),
|
||||
LibraryMapping("backtrace", "WrapBacktrace", "WrapBacktrace::WrapBacktrace", emit_if="config.unix"),
|
||||
LibraryMapping("bluez", "BlueZ", "PkgConfig::BlueZ"),
|
||||
LibraryMapping("brotli", "WrapBrotli", "WrapBrotli::WrapBrotliDec"),
|
||||
LibraryMapping("corewlan", None, None),
|
||||
|
Loading…
x
Reference in New Issue
Block a user