From 2a21747e9daac2a45cd9a5ceb9a351f9775c5704 Mon Sep 17 00:00:00 2001 From: Uwe Hermann Date: Fri, 21 Nov 2014 16:52:57 +0100 Subject: [PATCH] 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). --- CMakeLists.txt | 12 +++++++++++- INSTALL | 1 + test/CMakeLists.txt | 8 +++++++- 3 files changed, 19 insertions(+), 2 deletions(-) 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. -- 2.30.2