diff --git a/CMakeLists.txt b/CMakeLists.txt index df0b186f8debf8eb3e860eab3cda4d55047128f0..d202d299414871ef89b9a16445cb1cb12ff70fa2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,7 +61,52 @@ ENDIF (\"${CMAKE_BUILD_TYPE}\" STREQUAL \"\") OPTION(BUILD_SHARED_LIBS "Build ${PROJECT_NAME} with shared libraries." ON) OPTION(GENERATE_DOC "Generate html documentation" OFF) -OPTION(USE_BOOST "Compile with boost." ON) +# --- BOOST --------------------------------------------------- +SET(Boost_THREAD_FOUND 0) +FIND_PACKAGE(Boost COMPONENTS thread) +IF(Boost_THREAD_FOUND) + #MESSAGE(STATUS "Boost_THREAD_LIBRARY:" ${Boost_THREAD_LIBRARY}) + #MESSAGE(STATUS "Boost_THREAD_LIBRARY_RELEASE:" ${Boost_THREAD_LIBRARY_RELEASE}) + #MESSAGE(STATUS "Boost_THREAD_LIBRARY_DEBUG:" ${Boost_THREAD_LIBRARY_DEBUG}) + + # Look for the type of pattern to find. + SET(BOOST_PATTERN_TOFIND "") + IF(${CMAKE_BUILD_TYPE} MATCHES RELEASE) + SET(BOOST_PATTERN_TOFIND optimized) + ENDIF(${CMAKE_BUILD_TYPE} MATCHES RELEASE) + IF(${CMAKE_BUILD_TYPE} MATCHES DEBUG) + SET(BOOST_PATTERN_TOFIND debug) + ENDIF(${CMAKE_BUILD_TYPE} MATCHES DEBUG) + + IF(BOOST_PATTERN_TOFIND) + SET(BOOST_THREAD_LIST_LENGTH 0) + LIST(LENGTH Boost_THREAD_LIBRARY BOOST_THREAD_LIST_LENGTH) + # Debug or optimized library. + IF(${BOOST_THREAD_LIST_LENGTH} MATCHES 4) + LIST(FIND Boost_THREAD_LIBRARY ${BOOST_PATTERN_TOFIND} BTLB_index) + LIST(REMOVE_AT Boost_THREAD_LIBRARY ${BTLB_index}) + LIST(GET Boost_THREAD_LIBRARY ${BTLB_index} BOOST_THREAD_LIB_NAME) + # Default strategy + ELSE(${BOOST_THREAD_LIST_LENGTH} MATCHES 4) + SET(BOOST_THREAD_LIB_NAME ${Boost_THREAD_LIBRARY}) + ENDIF(${BOOST_THREAD_LIST_LENGTH} MATCHES 4) + # Default strategy + ELSE(BOOST_PATTERN_TOFIND) + SET(BOOST_THREAD_LIB_NAME ${Boost_THREAD_LIBRARY}) + ENDIF(BOOST_PATTERN_TOFIND) + +ELSE(Boost_THREAD_FOUND) + MESSAGE("WARNING: Boost thread not found. Trying without the thread library") + FIND_PACKAGE(Boost) + IF(NOT Boost_FOUND) + MESSAGE(SEND_ERROR "!! ERROR: Boost not found.") + ENDIF(NOT Boost_FOUND) +ENDIF(Boost_THREAD_FOUND) +MESSAGE(STATUS "Boost thread lib name: ${BOOST_THREAD_LIB_NAME} ${Boost_THREAD_LIBRARY}") + +INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) +LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) + # # Look for dependencies