FindThreads.cmake 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # This module determines the thread library of the system.
  2. # The following variables are set
  3. # CMAKE_THREAD_LIBS_INIT - the thread library to link into an application (-lpthread )
  4. # CMAKE_USE_SPROC_INIT - are we using sproc?
  5. # CMAKE_USE_WIN32_THREADS_INIT - are we using WIN32 threads
  6. # CMAKE_USE_PTHREADS_INIT - are we using pthreads
  7. # CMAKE_HP_PTHREADS_INIT - are we using hp pthreads
  8. INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
  9. INCLUDE (${CMAKE_ROOT}/Modules/CheckLibraryExists.cmake)
  10. IF(CMAKE_SYSTEM MATCHES IRIX)
  11. CHECK_INCLUDE_FILE("sys/prctl.h" CMAKE_HAVE_SPROC_H)
  12. ENDIF(CMAKE_SYSTEM MATCHES IRIX)
  13. CHECK_INCLUDE_FILE("pthread.h" CMAKE_HAVE_PTHREAD_H)
  14. IF(CMAKE_HAVE_PTHREAD_H)
  15. IF(NOT CMAKE_HAVE_SPROC_H)
  16. CHECK_LIBRARY_EXISTS(pthreads pthread_create "" CMAKE_HAVE_PTHREADS_CREATE)
  17. IF(CMAKE_HAVE_PTHREADS_CREATE)
  18. SET(CMAKE_THREAD_LIBS_INIT "-lpthreads")
  19. ENDIF(CMAKE_HAVE_PTHREADS_CREATE)
  20. CHECK_LIBRARY_EXISTS(pthread pthread_create "" CMAKE_HAVE_PTHREAD_CREATE)
  21. IF(CMAKE_HAVE_PTHREAD_CREATE)
  22. SET(CMAKE_THREAD_LIBS_INIT "-lpthread")
  23. ENDIF(CMAKE_HAVE_PTHREAD_CREATE)
  24. IF(CMAKE_SYSTEM MATCHES "SunOS.*")
  25. CHECK_LIBRARY_EXISTS(thread thr_create "" CMAKE_HAVE_THR_CREATE)
  26. IF(CMAKE_HAVE_THR_CREATE)
  27. SET(CMAKE_THREAD_LIBS_INIT "-lthread")
  28. ENDIF(CMAKE_HAVE_THR_CREATE)
  29. ENDIF(CMAKE_SYSTEM MATCHES "SunOS.*")
  30. ENDIF(NOT CMAKE_HAVE_SPROC_H)
  31. ENDIF(CMAKE_HAVE_PTHREAD_H)
  32. IF(CMAKE_HAVE_SPROC_H)
  33. SET(CMAKE_USE_SPROC_INIT 1)
  34. ENDIF(CMAKE_HAVE_SPROC_H)
  35. IF(CMAKE_THREAD_LIBS_INIT)
  36. SET(CMAKE_USE_PTHREADS_INIT 1)
  37. ENDIF(CMAKE_THREAD_LIBS_INIT)
  38. IF(CMAKE_SYSTEM MATCHES "Windows")
  39. SET(CMAKE_USE_WIN32_THREADS_INIT 1)
  40. ENDIF(CMAKE_SYSTEM MATCHES "Windows")
  41. IF(CMAKE_USE_PTHREADS_INIT)
  42. IF(CMAKE_SYSTEM MATCHES "HP-UX-*")
  43. SET(CMAKE_THREAD_LIBS_INIT "-lcma")
  44. SET(CMAKE_USE_PTHREADS_INIT 1)
  45. SET(CMAKE_HP_PTHREADS_INIT 1)
  46. ENDIF(CMAKE_SYSTEM MATCHES "HP-UX-*")
  47. IF(CMAKE_SYSTEM MATCHES "OSF1-V*")
  48. SET(CMAKE_USE_PTHREADS_INIT 0)
  49. SET(CMAKE_THREAD_LIBS_INIT )
  50. ENDIF(CMAKE_SYSTEM MATCHES "OSF1-V*")
  51. IF(CMAKE_SYSTEM MATCHES "FreeBSD*")
  52. SET(CMAKE_USE_PTHREADS_INIT 0)
  53. SET(CMAKE_THREAD_LIBS_INIT )
  54. ENDIF(CMAKE_SYSTEM MATCHES "FreeBSD*")
  55. IF(CMAKE_SYSTEM MATCHES "CYGWIN_NT*")
  56. SET(CMAKE_USE_PTHREADS_INIT 1)
  57. SET(CMAKE_THREAD_LIBS_INIT )
  58. SET(CMAKE_USE_WIN32_THREADS_INIT 0)
  59. ENDIF(CMAKE_SYSTEM MATCHES "CYGWIN_NT*")
  60. ENDIF(CMAKE_USE_PTHREADS_INIT)