From: Uwe Hermann Date: Fri, 21 Nov 2014 15:52:57 +0000 (+0100) Subject: Fix build on MinGW (boost thread related). X-Git-Tag: pulseview-0.3.0~441 X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=commitdiff_plain;h=2a21747e9daac2a45cd9a5ceb9a351f9775c5704 Fix build on MinGW (boost thread related). Now that PulseView uses boost thread again, bring back the required settings to make it all work on MinGW (and with static builds). --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e2ac695..136880e0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,6 +44,10 @@ if(WIN32) # 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) + # Windows does not support UNIX signals. set(ENABLE_SIGNALS FALSE) endif() @@ -91,7 +95,13 @@ else() find_package(Qt4 REQUIRED QtCore QtGui QtSvg) endif() -find_package(Boost 1.42 COMPONENTS filesystem system thread REQUIRED) +if(WIN32) + # On Windows/MinGW we need to use 'thread_win32' instead of 'thread'. + # The library is named libboost_thread_win32* (not libboost_thread*). + find_package(Boost 1.42 COMPONENTS filesystem system thread_win32 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. diff --git a/INSTALL b/INSTALL index 5d0be6a2..18513ae6 100644 --- a/INSTALL +++ b/INSTALL @@ -18,6 +18,7 @@ Requirements - libboost >= 1.42 (including the following libs): - libboost-system - libboost-filesystem + - libboost-thread - libboost-test (optional, only needed to run the unit tests) - libsigrokxx >= 0.3.0 (libsigrok C++ bindings) - libsigrokdecode >= 0.3.0 diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 13bb6dd6..4bac48bb 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -29,7 +29,13 @@ endif() find_package(PkgConfig) pkg_check_modules(PKGDEPS REQUIRED ${PKGDEPS}) -find_package(Boost 1.42 COMPONENTS filesystem system unit_test_framework REQUIRED) +if(WIN32) + # On Windows/MinGW we need to use 'thread_win32' instead of 'thread'. + # The library is named libboost_thread_win32* (not libboost_thread*). + find_package(Boost 1.42 COMPONENTS filesystem system thread_win32 unit_test_framework REQUIRED) +else() + find_package(Boost 1.42 COMPONENTS filesystem system thread unit_test_framework 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.