summaryrefslogtreecommitdiffstats
path: root/Modules/FindOpenThreads.cmake
blob: fc5cd36591fe9d1c1fe9f013ff8a2a9a12f63463 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# OpenThreads is a C++ based threading library. Its largest userbase 
# seems to OpenSceneGraph so you might notice I accept OSGDIR as an
# environment path.
# I consider this part of the Findosg* suite used to find OpenSceneGraph 
# components.
# Each component is separate and you must opt in to each module.
# 
# Locate OpenThreads
# This module defines
# OPENTHREADS_LIBRARY
# OPENTHREADS_FOUND, if false, do not try to link to OpenThreads
# OPENTHREADS_INCLUDE_DIR, where to find the headers
#
# $OPENTHREADS_DIR is an environment variable that would
# correspond to the ./configure --prefix=$OPENTHREADS_DIR
# used in building osg.
#
# Created by Eric Wing.

# Header files are presumed to be included like
# #include <OpenThreads/Thread>

# To make it easier for one-step automated configuration/builds,
# we leverage environmental paths. This is preferable 
# to the -DVAR=value switches because it insulates the 
# users from changes we may make in this script.
# It also offers a little more flexibility than setting
# the CMAKE_*_PATH since we can target specific components.
# However, the default CMake behavior will search system paths
# before anything else. This is problematic in the cases
# where you have an older (stable) version installed, but
# are trying to build a newer version.
# CMake doesn't offer a nice way to globally control this behavior
# so we have to do a nasty "double FIND_" in this module.
# The first FIND disables the CMAKE_ search paths and only checks
# the environmental paths.
# If nothing is found, then the second find will search the
# standard install paths.
# Explicit -DVAR=value arguments should still be able to override everything.

FIND_PATH(OPENTHREADS_INCLUDE_DIR OpenThreads/Thread
    PATHS
    $ENV{OPENTHREADS_INCLUDE_DIR}
    $ENV{OPENTHREADS_DIR}/include
    $ENV{OPENTHREADS_DIR}
    $ENV{OSG_INCLUDE_DIR}
    $ENV{OSG_DIR}/include
    $ENV{OSG_DIR}
    $ENV{OSGDIR}/include
    $ENV{OSGDIR}
    NO_DEFAULT_PATH
)



FIND_PATH(OPENTHREADS_INCLUDE_DIR OpenThreads/Thread
    ~/Library/Frameworks
    /Library/Frameworks
    /usr/local/include
    /usr/include
    /sw/include # Fink
    /opt/local/include # DarwinPorts
    /opt/csw/include # Blastwave
    /opt/include
    [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OpenThreads_ROOT]/include
    [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OSG_ROOT]/include
)


FIND_LIBRARY(OPENTHREADS_LIBRARY 
    NAMES OpenThreads OpenThreadsWin32 
    PATHS
    $ENV{OPENTHREADS_LIBRARY_DIR}
    $ENV{OPENTHREADS_DIR}/lib64
    $ENV{OPENTHREADS_DIR}/lib
    $ENV{OPENTHREADS_DIR}
    $ENV{OSG_LIBRARY_DIR}
    $ENV{OSG_DIR}/lib64
    $ENV{OSG_DIR}/lib
    $ENV{OSG_DIR}
    $ENV{OSGDIR}/lib64
    $ENV{OSGDIR}/lib
    $ENV{OSGDIR}
    NO_DEFAULT_PATH
)



FIND_LIBRARY(OPENTHREADS_LIBRARY 
    NAMES OpenThreads OpenThreadsWin32 
    PATHS
    ~/Library/Frameworks
    /Library/Frameworks
    /usr/local/lib64
    /usr/local/lib
    /usr/lib64
    /usr/lib
    /sw/lib64
    /sw/lib
    /opt/local/lib64
    /opt/local/lib
    /opt/csw/lib64
    /opt/csw/lib
    /opt/lib64
    /opt/lib
    [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OpenThreads_ROOT]/lib
    [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OSG_ROOT]/lib
)


FIND_LIBRARY(OPENTHREADS_LIBRARY_DEBUG 
    NAMES OpenThreadsd OpenThreadsWin32d
    PATHS
    $ENV{OPENTHREADS_DEBUG_LIBRARY_DIR}
    $ENV{OPENTHREADS_LIBRARY_DIR}
    $ENV{OPENTHREADS_DIR}/lib64
    $ENV{OPENTHREADS_DIR}/lib
    $ENV{OPENTHREADS_DIR}
    $ENV{OSG_LIBRARY_DIR}
    $ENV{OSG_DIR}/lib64
    $ENV{OSG_DIR}/lib
    $ENV{OSG_DIR}
    $ENV{OSGDIR}/lib64
    $ENV{OSGDIR}/lib
    $ENV{OSGDIR}
    NO_DEFAULT_PATH
)



FIND_LIBRARY(OPENTHREADS_LIBRARY_DEBUG 
    NAMES OpenThreadsd OpenThreadsWin32d
    PATHS
    /usr/local/lib64
    /usr/local/lib
    /usr/lib64
    /usr/lib
    /sw/lib64
    /sw/lib
    /opt/local/lib64
    /opt/local/lib
    /opt/csw/lib64
    /opt/csw/lib
    /opt/lib64
    /opt/lib
    [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OpenThreads_ROOT]/lib
    [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OSG_ROOT]/lib
)


IF(OPENTHREADS_LIBRARY)
  IF(NOT OPENTHREADS_LIBRARY_DEBUG)
      #MESSAGE("-- Warning Debug OpenThreads not found, using: ${OPENTHREADS_LIBRARY}")
      #SET(OPENTHREADS_LIBRARY_DEBUG "${OPENTHREADS_LIBRARY}")
      SET(OPENTHREADS_LIBRARY_DEBUG "${OPENTHREADS_LIBRARY}" CACHE FILEPATH "Debug version of OpenThreads Library (use regular version if not available)" FORCE)
  ENDIF(NOT OPENTHREADS_LIBRARY_DEBUG)
ENDIF(OPENTHREADS_LIBRARY)
    
SET(OPENTHREADS_FOUND "NO")
IF(OPENTHREADS_INCLUDE_DIR AND OPENTHREADS_LIBRARY)
  SET(OPENTHREADS_FOUND "YES")
  # MESSAGE("-- Found OpenThreads: "${OPENTHREADS_LIBRARY})
ENDIF(OPENTHREADS_INCLUDE_DIR AND OPENTHREADS_LIBRARY)