diff options
Diffstat (limited to 'Modules/FindOpenThreads.cmake')
-rw-r--r-- | Modules/FindOpenThreads.cmake | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/Modules/FindOpenThreads.cmake b/Modules/FindOpenThreads.cmake new file mode 100644 index 0000000..bc45eea --- /dev/null +++ b/Modules/FindOpenThreads.cmake @@ -0,0 +1,103 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#[=======================================================================[.rst: +FindOpenThreads +--------------- + + + +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. + +[CMake 2.8.10]: The CMake variables OPENTHREADS_DIR or OSG_DIR can now +be used as well to influence detection, instead of needing to specify +an environment variable. + +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. + +include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) + +find_path(OPENTHREADS_INCLUDE_DIR OpenThreads/Thread + HINTS + ENV OPENTHREADS_INCLUDE_DIR + ENV OPENTHREADS_DIR + ENV OSG_INCLUDE_DIR + ENV OSG_DIR + ENV OSGDIR + ENV OpenThreads_ROOT + ENV OSG_ROOT + ${OPENTHREADS_DIR} + ${OSG_DIR} + PATH_SUFFIXES include +) + + +find_library(OPENTHREADS_LIBRARY_RELEASE + NAMES OpenThreads OpenThreadsWin32 + HINTS + ENV OPENTHREADS_LIBRARY_DIR + ENV OPENTHREADS_DIR + ENV OSG_LIBRARY_DIR + ENV OSG_DIR + ENV OSGDIR + ENV OpenThreads_ROOT + ENV OSG_ROOT + ${OPENTHREADS_DIR} + ${OSG_DIR} + PATH_SUFFIXES lib +) + +find_library(OPENTHREADS_LIBRARY_DEBUG + NAMES OpenThreadsd OpenThreadsWin32d + HINTS + ENV OPENTHREADS_DEBUG_LIBRARY_DIR + ENV OPENTHREADS_LIBRARY_DIR + ENV OPENTHREADS_DIR + ENV OSG_LIBRARY_DIR + ENV OSG_DIR + ENV OSGDIR + ENV OpenThreads_ROOT + ENV OSG_ROOT + ${OPENTHREADS_DIR} + ${OSG_DIR} + PATH_SUFFIXES lib +) + +select_library_configurations(OPENTHREADS) + +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenThreads DEFAULT_MSG + OPENTHREADS_LIBRARY OPENTHREADS_INCLUDE_DIR) |