diff --git a/CMakeLists.txt b/CMakeLists.txt index 116131e4e2b45e7f3ac2e6fbae647ce4e3c6de14..d3dbc36fb2b45953c8d94723f465fa2f9a7b90a6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,9 @@ SET(OS ${CMAKE_SYSTEM_NAME}) #---------------------------------------------------- # --- GENERIC FLAGS --------------------------------- #---------------------------------------------------- +# For CMAKE Modules +SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") + # Specify the compile flags for the overall library. IF(WIN32) SET(LIBDIR_KW "/LIBPATH:") @@ -68,6 +71,8 @@ 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}) + + ADD_DEFINITIONS(-DHAVE_LIBBOOST_THREAD) # Look for the type of pattern to find. SET(BOOST_PATTERN_TOFIND "") @@ -95,6 +100,17 @@ IF(Boost_THREAD_FOUND) SET(BOOST_THREAD_LIB_NAME ${Boost_THREAD_LIBRARY}) ENDIF(BOOST_PATTERN_TOFIND) + # --- PTHREAD ------------------------------------------------------- + FIND_PACKAGE(PTHREAD REQUIRED) + IF(PTHREAD_FOUND) + ADD_DEFINITIONS(-DHAVE_PTHREAD) + IF(UNIX) + ADD_DEFINITIONS(-pthread) + ENDIF(UNIX) + INCLUDE_DIRECTORIES(${PTHREAD_INCLUDE_DIRS}) + LINK_DIRECTORIES(${PTHREAD_LIBRARY_DIRS}) + ENDIF(PTHREAD_FOUND) + ELSE(Boost_THREAD_FOUND) MESSAGE("WARNING: Boost thread not found. Trying without the thread library") FIND_PACKAGE(Boost) diff --git a/CMakeModules/FindPTHREAD.cmake b/CMakeModules/FindPTHREAD.cmake new file mode 100644 index 0000000000000000000000000000000000000000..ea0001700f424dd1fbb72b9ee83b93cf147e8085 --- /dev/null +++ b/CMakeModules/FindPTHREAD.cmake @@ -0,0 +1,89 @@ +############################################################################# +# +# $Id: FindPTHREAD.cmake,v 1.5 2007/03/21 13:59:33 asaunier Exp $ +# +# Copyright (C) 1998-2006 Inria. All rights reserved. +# +# This software was developed at: +# IRISA/INRIA Rennes +# Projet Lagadic +# Campus Universitaire de Beaulieu +# 35042 Rennes Cedex +# http://www.irisa.fr/lagadic +# +# This file is part of the ViSP toolkit. +# +# This file may be distributed under the terms of the Q Public License +# as defined by Trolltech AS of Norway and appearing in the file +# LICENSE included in the packaging of this file. +# +# Licensees holding valid ViSP Professional Edition licenses may +# use this file in accordance with the ViSP Commercial License +# Agreement provided with the Software. +# +# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +# +# Contact visp@irisa.fr if any conditions of this licensing are +# not clear to you. +# +# Description: +# Try to find pthread library. +# Once run this will define: +# +# PTHREAD_FOUND +# PTHREAD_INCLUDE_DIR +# PTHREAD_LIBRARIES +# +# Authors: +# Fabien Spindler +# +############################################################################# + +#IF(NOT UNIX AND NOT WIN32) +# SET(PTHREAD_FOUND FALSE) +#ELSE(NOT UNIX AND NOT WIN32) + + FIND_PATH(PTHREAD_INCLUDE_DIR pthread.h + /usr/include + "$ENV{PTHREAD_INCLUDE_PATH}" + "$ENV{PTHREAD_HOME}/include" + ) + # pthreadVSE pthreadGCE pthreadGC pthreadVC1 pthreadVC2 are comming from web + FIND_LIBRARY(PTHREAD_LIBRARY + NAMES pthread pthreadGC2 pthreadVSE pthreadGCE pthreadGC pthreadVC1 pthreadVC2 + PATHS + /usr/lib + /usr/local/lib + /lib + "$ENV{PTHREAD_LIBRARY_PATH}" + "$ENV{PTHREAD_HOME}/lib" + ) + + #MESSAGE(STATUS "DBG PTHREAD_LIBRARY=${PTHREAD_LIBRARY}") + + ## -------------------------------- + + IF(PTHREAD_LIBRARY) + SET(PTHREAD_LIBRARIES ${PTHREAD_LIBRARY}) + ELSE(PTHREAD_LIBRARY) + #MESSAGE(SEND_ERROR "pthread library not found.") + ENDIF(PTHREAD_LIBRARY) + + IF(NOT PTHREAD_INCLUDE_DIR) + #MESSAGE(SEND_ERROR "pthread include dir not found.") + ENDIF(NOT PTHREAD_INCLUDE_DIR) + + IF(PTHREAD_LIBRARIES AND PTHREAD_INCLUDE_DIR) + SET(PTHREAD_FOUND TRUE) + ELSE(PTHREAD_LIBRARIES AND PTHREAD_INCLUDE_DIR) + SET(PTHREAD_FOUND FALSE) + ENDIF(PTHREAD_LIBRARIES AND PTHREAD_INCLUDE_DIR) + + #MARK_AS_ADVANCED( + # PTHREAD_INCLUDE_DIR + # PTHREAD_LIBRARIES + # ) + #MESSAGE(STATUS "PTHREAD_FOUND : ${PTHREAD_FOUND}") + +#ENDIF(NOT UNIX AND NOT WIN32) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index aaafded9c495b4521032b355329e4d04fff956c5..795852278affe66b57a81d898bd33f9cca20ca7c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -46,7 +46,7 @@ SET_TARGET_PROPERTIES(${LIBRARY_NAME} ) IF (UNIX) - TARGET_LINK_LIBRARIES(${LIBRARY_NAME} dl) + TARGET_LINK_LIBRARIES(${LIBRARY_NAME} dl pthread) ENDIF (UNIX) INSTALL(TARGETS ${LIBRARY_NAME}