diff options
Diffstat (limited to 'Modules/FindThreads.cmake')
-rw-r--r-- | Modules/FindThreads.cmake | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/Modules/FindThreads.cmake b/Modules/FindThreads.cmake new file mode 100644 index 0000000..5354b4d --- /dev/null +++ b/Modules/FindThreads.cmake @@ -0,0 +1,68 @@ +# This module determines the thread library of the system. +# The following variables are set +# CMAKE_THREAD_LIBS - the thread library to link into an application (-lpthread ) +# CMAKE_USE_SPROC - are we using sproc? +# CMAKE_USE_WIN32_THREADS - are we using WIN32 threads +# CMAKE_USE_PTHREADS - are we using pthreads +# + +INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) +INCLUDE (${CMAKE_ROOT}/Modules/CheckLibraryExists.cmake) + +IF(CMAKE_SYSTEM MATCHES IRIX) + CHECK_INCLUDE_FILE("sys/prctl.h" CMAKE_HAVE_SPROC_H) +ENDIF(CMAKE_SYSTEM MATCHES IRIX) + +CHECK_INCLUDE_FILE("pthread.h" CMAKE_HAVE_PTHREAD_H) +IF(CMAKE_HAVE_PTHREAD_H) + IF(NOT CMAKE_HAVE_SPROC_H) + CHECK_LIBRARY_EXISTS(pthreads pthread_create "" CMAKE_HAVE_PTHREADS_CREATE) + IF(CMAKE_HAVE_PTHREADS_CREATE) + SET(CMAKE_THREAD_LIBS "-lpthreads") + ENDIF(CMAKE_HAVE_PTHREADS_CREATE) + CHECK_LIBRARY_EXISTS(pthread pthread_create "" CMAKE_HAVE_PTHREAD_CREATE) + IF(CMAKE_HAVE_PTHREAD_CREATE) + SET(CMAKE_THREAD_LIBS "-lpthread") + ENDIF(CMAKE_HAVE_PTHREAD_CREATE) + IF(CMAKE_SYSTEM MATCHES "SunOS.*") + CHECK_LIBRARY_EXISTS(thread thr_create "" CMAKE_HAVE_THR_CREATE) + IF(CMAKE_HAVE_THR_CREATE) + SET(CMAKE_THREAD_LIBS "-lthread") + ENDIF(CMAKE_HAVE_THR_CREATE) + ENDIF(CMAKE_SYSTEM MATCHES "SunOS.*") + ENDIF(NOT CMAKE_HAVE_SPROC_H) +ENDIF(CMAKE_HAVE_PTHREAD_H) + +IF(CMAKE_HAVE_SPROC_H) + SET(CMAKE_USE_SPROC 1) +ENDIF(CMAKE_HAVE_SPROC_H) +IF(CMAKE_THREAD_LIBS) + SET(CMAKE_USE_PTHREADS 1) +ENDIF(CMAKE_THREAD_LIBS) + +IF(CMAKE_SYSTEM MATCHES "Windows") + SET(CMAKE_USE_WIN32_THREADS 1) +ENDIF(CMAKE_SYSTEM MATCHES "Windows") + +IF(CMAKE_SYSTEM MATCHES "HP-UX-*") + SET(CMAKE_THREAD_LIBS "-lcma") + SET(CMAKE_USE_PTHREADS 1) + SET(CMAKE_HP_PTHREADS 1) +ENDIF(CMAKE_SYSTEM MATCHES "HP-UX-*") + +IF(CMAKE_SYSTEM MATCHES "OSF1-V*") + SET(CMAKE_USE_PTHREADS 0) + SET(CMAKE_THREAD_LIBS ) +ENDIF(CMAKE_SYSTEM MATCHES "OSF1-V*") + +IF(CMAKE_SYSTEM MATCHES "FreeBSD*") + SET(CMAKE_USE_PTHREADS 0) + SET(CMAKE_THREAD_LIBS ) +ENDIF(CMAKE_SYSTEM MATCHES "FreeBSD*") + +IF(CMAKE_SYSTEM MATCHES "CYGWIN_NT*") + SET(CMAKE_USE_PTHREADS 1) + SET(CMAKE_THREAD_LIBS ) + SET(CMAKE_USE_WIN32_THREADS 0) +ENDIF(CMAKE_SYSTEM MATCHES "CYGWIN_NT*") + |