Subject: Add -lpthread when using Boost::Thread. Author: Philip Lowman Author: Modestas Vainius Origin: other, http://public.kitware.com/Bug/file_download.php?file_id=3929&type=bug Last-Update: 2013-03-16 Bug: http://cmake.org/Bug/view.php?id=10692 Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=563479 Forwarded: http://cmake.org/Bug/file_download.php?file_id=3629&type=bug --- Modules/FindBoost.cmake | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) --- a/Modules/FindBoost.cmake +++ b/Modules/FindBoost.cmake @@ -861,6 +861,22 @@ function(_Boost_MISSING_DEPENDENCIES com endif() endmacro() +function(_Boost_consider_adding_pthreads _outvar) + # On Unix platforms (excluding cygwin) add pthreads to Boost_LIBRARIES + # if the user is searching for the boost-thread component. + if(UNIX AND NOT CYGWIN) + list(FIND Boost_FIND_COMPONENTS thread _using_boost_thread) + if(_using_boost_thread GREATER -1) + find_library(BOOST_THREAD_LIBRARY NAMES pthread + DOC "The threading library used by boost-thread" + ) + if(BOOST_THREAD_LIBRARY) + set(${_outvar} ${ARGN} ${BOOST_THREAD_LIBRARY} PARENT_SCOPE) + endif() + endif() + endif() +endfunction() + # # End functions/macros # @@ -1748,6 +1764,9 @@ if(Boost_FOUND) list(APPEND Boost_LIBRARIES ${Boost_${UPPERCOMPONENT}_LIBRARY}) endif() endforeach() + + # Add pthread library on UNIX if thread component was found + _Boost_consider_adding_pthreads(Boost_LIBRARIES ${Boost_LIBRARIES}) else() if(Boost_FIND_REQUIRED) message(SEND_ERROR "Unable to find the requested Boost libraries.\n${Boost_ERROR_REASON}")