+ # On Windows/MinGW we need to statically link to libraries.
+ # This option is user configurable, but enable it by default on win32.
+ set(STATIC_PKGDEPS_LIBS TRUE)
+
+ # For boost-thread we need two additional settings on win32:
+ set(Boost_USE_STATIC_LIBS ON)
+ add_definitions(-DBOOST_THREAD_USE_LIB)
+
+ # On Windows/MinGW we need to use 'thread_win32' instead of 'thread'.
+ # The library is named libboost_thread_win32* (not libboost_thread*).
+ set(Boost_THREADAPI win32)
+
+ # Windows does not support UNIX signals.
+ set(ENABLE_SIGNALS FALSE)
+endif()
+
+if(NOT CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
+ "Choose the type of build (None, Debug, Release, RelWithDebInfo, MinSizeRel)."
+ FORCE)
+endif()
+
+#===============================================================================
+#= Dependencies
+#-------------------------------------------------------------------------------
+
+list(APPEND PKGDEPS libsigrokcxx>=0.3.0)
+
+if(ENABLE_DECODE)
+ list(APPEND PKGDEPS libsigrokdecode>=0.3.0)
+endif()
+
+if(ANDROID)
+ list(APPEND PKGDEPS libsigrokandroidutils>=0.1.0)
+endif()
+
+find_package(PkgConfig)
+pkg_check_modules(PKGDEPS REQUIRED ${PKGDEPS})
+
+if(FORCE_QT4)
+ set(Qt5Core_FOUND FALSE)
+else()
+ find_package(Qt5Core QUIET)
+endif()
+
+if(Qt5Core_FOUND)
+ message("-- Using Qt5")
+ find_package(Qt5Widgets REQUIRED)
+ find_package(Qt5Gui REQUIRED)
+ find_package(Qt5Svg REQUIRED)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
+ set(QT_INCLUDE_DIRS ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS})
+ set(QT_LIBRARIES Qt5::Gui Qt5::Widgets Qt5::Svg)
+ add_definitions(${Qt5Gui_DEFINITIONS} ${Qt5Widgets_DEFINITIONS})
+else()
+ find_program(QT_QMAKE_EXECUTABLE NAMES qmake4 qmake-qt4 qmake-mac)
+ find_package(Qt4 REQUIRED QtCore QtGui QtSvg)
+endif()
+
+if(ENABLE_TESTS)
+ find_package(Boost 1.42 COMPONENTS filesystem system thread unit_test_framework REQUIRED)
+else()
+ find_package(Boost 1.42 COMPONENTS filesystem system thread 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.
+find_package(Threads REQUIRED)
+
+#===============================================================================
+#= System Introspection
+#-------------------------------------------------------------------------------
+
+include(memaccess)
+memaccess_check_unaligned_le(HAVE_UNALIGNED_LITTLE_ENDIAN_ACCESS)
+
+#===============================================================================
+#= Config Header
+#-------------------------------------------------------------------------------