1# - try to find VRPN library 2# 3# Cache Variables: 4# VRPN_LIBRARY 5# VRPN_SERVER_LIBRARY 6# VRPN_INCLUDE_DIR 7# 8# Non-cache variables you might use in your CMakeLists.txt: 9# VRPN_FOUND 10# VRPN_SERVER_LIBRARIES - server libraries 11# VRPN_LIBRARIES - client libraries 12# VRPN_CLIENT_DEFINITIONS - definitions if you only use the client library 13# VRPN_DEFINITIONS - Client-only definition if all we found was the client library. 14# VRPN_INCLUDE_DIRS 15# 16# VRPN_ROOT_DIR is searched preferentially for these files 17# 18# Requires these CMake modules: 19# FindPackageHandleStandardArgs (known included with CMake >=2.6.2) 20# 21# Original Author: 22# 2009-2012 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net> 23# http://academic.cleardefinition.com 24# Iowa State University HCI Graduate Program/VRAC 25# 26# Copyright Iowa State University 2009-2012. 27# Distributed under the Boost Software License, Version 1.0. 28# (See accompanying file LICENSE_1_0.txt or copy at 29# http://www.boost.org/LICENSE_1_0.txt) 30 31set(VRPN_ROOT_DIR 32 "${VRPN_ROOT_DIR}" 33 CACHE 34 PATH 35 "Root directory to search for VRPN") 36 37if("${CMAKE_SIZEOF_VOID_P}" MATCHES "8") 38 set(_libsuffixes lib64 lib) 39 40 # 64-bit dir: only set on win64 41 file(TO_CMAKE_PATH "$ENV{ProgramW6432}" _progfiles) 42else() 43 set(_libsuffixes lib) 44 set(_PF86 "ProgramFiles(x86)") 45 if(NOT "$ENV{${_PF86}}" STREQUAL "") 46 # 32-bit dir: only set on win64 47 file(TO_CMAKE_PATH "$ENV{${_PF86}}" _progfiles) 48 else() 49 # 32-bit dir on win32, useless to us on win64 50 file(TO_CMAKE_PATH "$ENV{ProgramFiles}" _progfiles) 51 endif() 52endif() 53 54set(_vrpn_quiet) 55if(VRPN_FIND_QUIETLY) 56 set(_vrpn_quiet QUIET) 57endif() 58 59### 60# Configure VRPN 61### 62 63find_path(VRPN_INCLUDE_DIR 64 NAMES 65 vrpn_Connection.h 66 PATH_SUFFIXES 67 include 68 include/vrpn 69 HINTS 70 "${VRPN_ROOT_DIR}" 71 PATHS 72 "${_progfiles}/VRPN" 73 C:/usr/local 74 /usr/local) 75 76find_library(VRPN_LIBRARY 77 NAMES 78 vrpn 79 PATH_SUFFIXES 80 ${_libsuffixes} 81 HINTS 82 "${VRPN_ROOT_DIR}" 83 PATHS 84 "${_progfiles}/VRPN" 85 C:/usr/local 86 /usr/local) 87 88find_library(VRPN_SERVER_LIBRARY 89 NAMES 90 vrpnserver 91 PATH_SUFFIXES 92 ${_libsuffixes} 93 HINTS 94 "${VRPN_ROOT_DIR}" 95 PATHS 96 "${_progfiles}/VRPN" 97 C:/usr/local 98 /usr/local) 99 100### 101# Dependencies 102### 103set(_deps_libs) 104set(_deps_includes) 105set(_deps_check) 106 107find_package(quatlib ${_vrpn_quiet}) 108list(APPEND _deps_libs ${QUATLIB_LIBRARIES}) 109list(APPEND _deps_includes ${QUATLIB_INCLUDE_DIRS}) 110list(APPEND _deps_check QUATLIB_FOUND) 111 112if(NOT WIN32) 113 find_package(Threads ${_vrpn_quiet}) 114 list(APPEND _deps_libs ${CMAKE_THREAD_LIBS_INIT}) 115 list(APPEND _deps_check CMAKE_HAVE_THREADS_LIBRARY) 116endif() 117 118if(WIN32) 119 find_package(Libusb1 QUIET) 120 if(LIBUSB1_FOUND) 121 list(APPEND _deps_libs ${LIBUSB1_LIBRARIES}) 122 list(APPEND _deps_includes ${LIBUSB1_INCLUDE_DIRS}) 123 endif() 124endif() 125 126 127# handle the QUIETLY and REQUIRED arguments and set xxx_FOUND to TRUE if 128# all listed variables are TRUE 129include(FindPackageHandleStandardArgs) 130find_package_handle_standard_args(VRPN 131 DEFAULT_MSG 132 VRPN_LIBRARY 133 VRPN_INCLUDE_DIR 134 ${_deps_check}) 135 136if(VRPN_FOUND) 137 set(VRPN_INCLUDE_DIRS "${VRPN_INCLUDE_DIR}" ${_deps_includes}) 138 set(VRPN_LIBRARIES "${VRPN_LIBRARY}" ${_deps_libs}) 139 set(VRPN_SERVER_LIBRARIES "${VRPN_SERVER_LIBRARY}" ${_deps_libs}) 140 141 if(VRPN_LIBRARY) 142 set(VRPN_CLIENT_DEFINITIONS -DVRPN_CLIENT_ONLY) 143 else() 144 unset(VRPN_CLIENT_DEFINITIONS) 145 endif() 146 147 if(VRPN_LIBRARY AND NOT VRPN_SERVER_LIBRARY) 148 set(VRPN_DEFINITIONS -DVRPN_CLIENT_ONLY) 149 else() 150 unset(VRPN_DEFINITIONS) 151 endif() 152 153 mark_as_advanced(VRPN_ROOT_DIR) 154endif() 155 156mark_as_advanced(VRPN_LIBRARY VRPN_SERVER_LIBRARY VRPN_INCLUDE_DIR) 157