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")
#===============================================================================
#= User Options
#-------------------------------------------------------------------------------
-option(DISABLE_WERROR "Build without -Werror" FALSE)
+option(DISABLE_WERROR "Build without -Werror" TRUE)
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)
FORCE)
endif()
+#===============================================================================
+#= Documentation
+#-------------------------------------------------------------------------------
+
+add_subdirectory(manual)
+
#===============================================================================
#= Dependencies
#-------------------------------------------------------------------------------
list(APPEND PKGDEPS glib-2.0>=2.28.0)
list(APPEND PKGDEPS glibmm-2.4>=2.28.0)
-list(APPEND PKGDEPS libsigrokcxx>=0.6.0)
+set(LIBSR_CXX_BINDING "libsigrokcxx>=0.6.0")
+list(APPEND PKGDEPS "${LIBSR_CXX_BINDING}")
if(ENABLE_DECODE)
list(APPEND PKGDEPS libsigrokdecode>=0.6.0)
endif()
find_package(PkgConfig)
+pkg_check_modules(LIBSRCXX QUIET ${LIBSR_CXX_BINDING})
+if(NOT LIBSRCXX_FOUND OR NOT LIBSRCXX_VERSION)
+ message(FATAL_ERROR "libsigrok C++ bindings missing, check libsigrok's 'configure' output (missing dependencies?)")
+endif()
pkg_check_modules(PKGDEPS REQUIRED ${PKGDEPS})
set(CMAKE_AUTOMOC TRUE)
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.
set(PV_VERSION_SUFFIX ${CMAKE_MATCH_4})
endif()
-message("-- ${PV_TITLE} version: ${PV_VERSION_STRING}")
+message(STATUS "${PV_TITLE} version: ${PV_VERSION_STRING}")
configure_file (
${PROJECT_SOURCE_DIR}/config.h.in
pv/application.cpp
pv/devicemanager.cpp
pv/globalsettings.cpp
+ pv/logging.cpp
pv/mainwindow.cpp
pv/session.cpp
pv/storesession.cpp
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
# This list includes only QObject derived class headers.
set(pulseview_HEADERS
+ pv/logging.hpp
pv/globalsettings.hpp
pv/mainwindow.hpp
pv/session.hpp
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
add_definitions(-DENABLE_SIGNALS)
endif()
+if(ENABLE_STACKTRACE)
+ add_definitions(-DENABLE_STACKTRACE)
+endif()
+
#===============================================================================
#= Global Include Directories
#-------------------------------------------------------------------------------
list(APPEND PULSEVIEW_LINK_LIBS ${QT5ALL_LDFLAGS})
endif()
+if(ENABLE_STACKTRACE)
+ # Needed to resolve dladdr.
+ list(APPEND PULSEVIEW_LINK_LIBS "-ldl")
+endif()
+
if(ANDROID)
list(APPEND PULSEVIEW_LINK_LIBS "-llog")
endif()