X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=CMakeLists.txt;h=e7d0bf5f1f3a1f9ca19eaa7e4ecc61ae66913aed;hp=66ef33b118ee405d463abd4c03ee1b317a283f2e;hb=6b197c700a2065941671c5ef557dc80ba3c978ac;hpb=e37a0c3e6087c1aaa1dff648ecb0c0d1ed786e6a diff --git a/CMakeLists.txt b/CMakeLists.txt index 66ef33b..e7d0bf5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,16 @@ include(GNUInstallDirs) project(pulseview) +# Let AUTOMOC and AUTOUIC process GENERATED files. +if(POLICY CMP0071) + cmake_policy(SET CMP0071 NEW) +endif() + +# Only interpret if() arguments as variables or keywords when unquoted. +if(POLICY CMP0054) + cmake_policy(SET CMP0054 NEW) +endif() + list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake") #=============================================================================== @@ -32,8 +42,9 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake") option(DISABLE_WERROR "Build without -Werror" FALSE) option(ENABLE_SIGNALS "Build with UNIX signals" TRUE) +option(ENABLE_STACKTRACE "Enable stack trace when crashing" FALSE) option(ENABLE_DECODE "Build with libsigrokdecode" TRUE) -option(ENABLE_TESTS "Enable unit tests" TRUE) +option(ENABLE_TESTS "Enable unit tests" FALSE) option(STATIC_PKGDEPS_LIBS "Statically link to (pkg-config) libraries" FALSE) if(WIN32) @@ -78,7 +89,10 @@ find_package(Qt5 COMPONENTS Core Gui Widgets Svg REQUIRED) if(WIN32) # MXE workaround: Use pkg-config to find Qt5 libs. # https://github.com/mxe/mxe/issues/1642 - pkg_check_modules(QT5ALL REQUIRED Qt5Widgets Qt5Gui Qt5Svg) + # Not required (and doesn't work) on MSYS2. + if(NOT DEFINED ENV{MSYSTEM}) + pkg_check_modules(QT5ALL REQUIRED Qt5Widgets Qt5Gui Qt5Svg) + endif() endif() set(QT_LIBRARIES Qt5::Gui Qt5::Widgets Qt5::Svg) @@ -87,7 +101,12 @@ set(BOOSTCOMPS filesystem serialization system) if(ENABLE_TESTS) list(APPEND BOOSTCOMPS unit_test_framework) endif() -find_package(Boost 1.55 COMPONENTS ${BOOSTCOMPS} REQUIRED) + +if(ENABLE_STACKTRACE) + find_package(Boost 1.65.1 COMPONENTS ${BOOSTCOMPS} REQUIRED) +else() + find_package(Boost 1.55 COMPONENTS ${BOOSTCOMPS} REQUIRED) +endif() # Find the platform's thread library (needed for C++11 threads). # This will set ${CMAKE_THREAD_LIBS_INIT} to the correct, OS-specific value. @@ -192,6 +211,7 @@ set(pulseview_SOURCES pv/application.cpp pv/devicemanager.cpp pv/globalsettings.cpp + pv/logging.cpp pv/mainwindow.cpp pv/session.cpp pv/storesession.cpp @@ -234,7 +254,6 @@ set(pulseview_SOURCES pv/views/trace/rowitem.cpp pv/views/trace/ruler.cpp pv/views/trace/signal.cpp - pv/views/trace/signalscalehandle.cpp pv/views/trace/timeitem.cpp pv/views/trace/timemarker.cpp pv/views/trace/trace.cpp @@ -251,8 +270,8 @@ set(pulseview_SOURCES pv/views/trace/viewwidget.cpp pv/views/viewbase.cpp pv/views/trace/standardbar.cpp - pv/widgets/colourbutton.cpp - pv/widgets/colourpopup.cpp + pv/widgets/colorbutton.cpp + pv/widgets/colorpopup.cpp pv/widgets/devicetoolbutton.cpp pv/widgets/exportmenu.cpp pv/widgets/importmenu.cpp @@ -265,6 +284,7 @@ set(pulseview_SOURCES # This list includes only QObject derived class headers. set(pulseview_HEADERS + pv/logging.hpp pv/globalsettings.hpp pv/mainwindow.hpp pv/session.hpp @@ -297,7 +317,6 @@ set(pulseview_HEADERS pv/views/trace/rowitem.hpp pv/views/trace/ruler.hpp pv/views/trace/signal.hpp - pv/views/trace/signalscalehandle.hpp pv/views/trace/timeitem.hpp pv/views/trace/timemarker.hpp pv/views/trace/trace.hpp @@ -310,8 +329,8 @@ set(pulseview_HEADERS pv/views/trace/viewwidget.hpp pv/views/viewbase.hpp pv/views/trace/standardbar.hpp - pv/widgets/colourbutton.hpp - pv/widgets/colourpopup.hpp + pv/widgets/colorbutton.hpp + pv/widgets/colorpopup.hpp pv/widgets/devicetoolbutton.hpp pv/widgets/exportmenu.hpp pv/widgets/importmenu.hpp @@ -390,6 +409,10 @@ if(ENABLE_SIGNALS) add_definitions(-DENABLE_SIGNALS) endif() +if(ENABLE_STACKTRACE) + add_definitions(-DENABLE_STACKTRACE) +endif() + #=============================================================================== #= Global Include Directories #------------------------------------------------------------------------------- @@ -430,12 +453,20 @@ endif() if(WIN32) # On Windows we need to statically link the libqsvg imageformat # plugin (and the QtSvg component) for SVG graphics/icons to work. - # We also need QWindowsIntegrationPlugin, Qt5PlatformSupport, and all - # Qt libs and their dependencies. + # We also need QWindowsIntegrationPlugin, Qt5PlatformSupport (only for + # Qt < 5.8.0), and all Qt libs and their dependencies. add_definitions(-DQT_STATICPLUGIN) list(APPEND PULSEVIEW_LINK_LIBS Qt5::QSvgPlugin) list(APPEND PULSEVIEW_LINK_LIBS Qt5::QWindowsIntegrationPlugin) - list(APPEND PULSEVIEW_LINK_LIBS -lQt5PlatformSupport ${QT5ALL_LDFLAGS}) + if(Qt5Gui_VERSION VERSION_LESS 5.8.0) + list(APPEND PULSEVIEW_LINK_LIBS -lQt5PlatformSupport) + endif() + list(APPEND PULSEVIEW_LINK_LIBS ${QT5ALL_LDFLAGS}) +endif() + +if(ENABLE_STACKTRACE) + # Needed to resolve dladdr. + list(APPEND PULSEVIEW_LINK_LIBS "-ldl") endif() if(ANDROID) @@ -450,7 +481,7 @@ endif() target_link_libraries(${PROJECT_NAME} ${PULSEVIEW_LINK_LIBS}) -if(WIN32) +if(WIN32 AND NOT ${CMAKE_BUILD_TYPE} STREQUAL "Debug") # Pass -mwindows so that no "DOS box" opens when PulseView is started. set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "-mwindows") endif()