1# - try to find VR Juggler 2.2 core library 2# Requires JCCL 1.2, Gadgeteer 1.2, VPR 2.0, and Sonix 1.2 3# (thus FindJCCL12.cmake, FindGadgeteer12.cmake, FindVPR20.cmake, 4# and FindSonix12.cmake) 5# Requires X11 if not on Mac or Windows. 6# Optionally uses Flagpoll and FindFlagpoll.cmake 7# 8# This library is a part of VR Juggler 2.2 - you probably want to use 9# find_package(VRJuggler22) instead, for an easy interface to this and 10# related scripts. See FindVRJuggler22.cmake for more information. 11# 12# VRJ22_LIBRARY_DIR, library search path 13# VRJ22_INCLUDE_DIR, include search path 14# VRJ22_LIBRARY, the library to link against 15# VRJ22_FOUND, If false, do not try to use this library. 16# 17# Plural versions refer to this library and its dependencies, and 18# are recommended to be used instead, unless you have a good reason. 19# 20# Useful configuration variables you might want to add to your cache: 21# VRJ22_ROOT_DIR - A directory prefix to search 22# (a path that contains include/ as a subdirectory) 23# 24# This script will use Flagpoll, if found, to provide hints to the location 25# of this library, but does not use the compiler flags returned by Flagpoll 26# directly. 27# 28# The VJ_BASE_DIR environment variable is also searched (preferentially) 29# when searching for this component, so most sane build environments should 30# "just work." Note that you need to manually re-run CMake if you change 31# this environment variable, because it cannot auto-detect this change 32# and trigger an automatic re-run. 33# 34# Original Author: 35# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net> 36# http://academic.cleardefinition.com 37# Iowa State University HCI Graduate Program/VRAC 38# 39# Copyright Iowa State University 2009-2010. 40# Distributed under the Boost Software License, Version 1.0. 41# (See accompanying file LICENSE_1_0.txt or copy at 42# http://www.boost.org/LICENSE_1_0.txt) 43 44 45set(_HUMAN "VR Juggler 2.2 Core") 46set(_RELEASE_NAMES vrj-2_2 libvrj-2_2) 47set(_DEBUG_NAMES vrj_d-2_2 libvrj_d-2_2) 48set(_DIR vrjuggler-2.2) 49set(_HEADER vrj/Kernel/Kernel.h) 50set(_FP_PKG_NAME vrjuggler) 51 52include(SelectLibraryConfigurations) 53include(CreateImportedTarget) 54include(CleanLibraryList) 55include(CleanDirectoryList) 56 57if(VRJ22_FIND_QUIETLY) 58 set(_FIND_FLAGS "QUIET") 59else() 60 set(_FIND_FLAGS "") 61endif() 62 63# Try flagpoll. 64find_package(Flagpoll QUIET) 65 66if(FLAGPOLL) 67 flagpoll_get_include_dirs(${_FP_PKG_NAME} NO_DEPS) 68 flagpoll_get_library_dirs(${_FP_PKG_NAME} NO_DEPS) 69 flagpoll_get_extra_libs(${_FP_PKG_NAME} NO_DEPS) 70endif() 71 72set(VRJ22_ROOT_DIR 73 "${VRJ22_ROOT_DIR}" 74 CACHE 75 PATH 76 "Root directory to search for VRJ") 77if(DEFINED VRJUGGLER22_ROOT_DIR) 78 mark_as_advanced(VRJ22_ROOT_DIR) 79endif() 80if(NOT VRJ22_ROOT_DIR) 81 set(VRJ22_ROOT_DIR "${VRJUGGLER22_ROOT_DIR}") 82endif() 83 84set(_ROOT_DIR "${VRJ22_ROOT_DIR}") 85 86find_path(VRJ22_INCLUDE_DIR 87 ${_HEADER} 88 HINTS 89 "${_ROOT_DIR}" 90 ${${_FP_PKG_NAME}_FLAGPOLL_INCLUDE_DIRS} 91 PATH_SUFFIXES 92 ${_DIR} 93 include/${_DIR} 94 include/ 95 DOC 96 "Path to ${_HUMAN} includes root") 97 98find_library(VRJ22_LIBRARY_RELEASE 99 NAMES 100 ${_RELEASE_NAMES} 101 HINTS 102 "${_ROOT_DIR}" 103 ${${_FP_PKG_NAME}_FLAGPOLL_LIBRARY_DIRS} 104 PATH_SUFFIXES 105 ${_VRJ_LIBSUFFIXES} 106 DOC 107 "${_HUMAN} release library full path") 108 109find_library(VRJ22_LIBRARY_DEBUG 110 NAMES 111 ${_DEBUG_NAMES} 112 HINTS 113 "${_ROOT_DIR}" 114 ${${_FP_PKG_NAME}_FLAGPOLL_LIBRARY_DIRS} 115 PATH_SUFFIXES 116 ${_VRJ_LIBDSUFFIXES} 117 DOC 118 "${_HUMAN} debug library full path") 119 120select_library_configurations(VRJ22) 121 122# Dependencies 123if(NOT JCCL12_FOUND) 124 find_package(JCCL12 ${_FIND_FLAGS}) 125endif() 126 127if(NOT GADGETEER12_FOUND) 128 find_package(Gadgeteer12 ${_FIND_FLAGS}) 129endif() 130 131if(NOT VPR20_FOUND) 132 find_package(VPR20 ${_FIND_FLAGS}) 133endif() 134 135if(NOT SONIX12_FOUND) 136 find_package(Sonix12 ${_FIND_FLAGS}) 137endif() 138 139if(UNIX AND NOT APPLE AND NOT WIN32) 140 if(NOT X11_FOUND) 141 find_package(X11 ${_FIND_FLAGS}) 142 endif() 143 set(_CHECK_EXTRAS 144 X11_FOUND 145 X11_X11_LIB 146 X11_ICE_LIB 147 X11_SM_LIB 148 X11_INCLUDE_DIR) 149endif() 150if(UNIX AND NOT WIN32) 151 find_library(VRJ22_libm_LIBRARY m) 152 mark_as_advanced(VRJ22_libm_LIBRARY) 153 list(APPEND _CHECK_EXTRAS VRJ22_libm_LIBRARY) 154endif() 155 156# handle the QUIETLY and REQUIRED arguments and set xxx_FOUND to TRUE if 157# all listed variables are TRUE 158include(FindPackageHandleStandardArgs) 159find_package_handle_standard_args(VRJ22 160 DEFAULT_MSG 161 VRJ22_LIBRARY 162 VRJ22_INCLUDE_DIR 163 JCCL12_FOUND 164 JCCL12_LIBRARIES 165 JCCL12_INCLUDE_DIR 166 GADGETEER12_FOUND 167 GADGETEER12_LIBRARIES 168 GADGETEER12_INCLUDE_DIR 169 VPR20_FOUND 170 VPR20_LIBRARIES 171 VPR20_INCLUDE_DIR 172 SONIX12_FOUND 173 SONIX12_LIBRARIES 174 SONIX12_INCLUDE_DIR 175 ${_CHECK_EXTRAS}) 176 177if(VRJ22_FOUND) 178 set(_DEPS 179 ${JCCL12_LIBRARIES} 180 ${GADGETEER12_LIBRARIES} 181 ${VPR20_LIBRARIES} 182 ${SONIX12_LIBRARIES}) 183 if(UNIX AND NOT APPLE AND NOT WIN32) 184 list(APPEND _DEPS ${X11_X11_LIB} ${X11_ICE_LIB} ${X11_SM_LIB}) 185 endif() 186 if(UNIX AND NOT WIN32) 187 list(APPEND _DEPS ${VRJ22_libm_LIBRARY}) 188 endif() 189 190 set(VRJ22_INCLUDE_DIRS "${VRJ22_INCLUDE_DIR}") 191 list(APPEND 192 VRJ22_INCLUDE_DIRS 193 ${JCCL12_INCLUDE_DIRS} 194 ${GADGETEER12_INCLUDE_DIRS} 195 ${VPR20_INCLUDE_DIRS} 196 ${SONIX12_INCLUDE_DIRS}) 197 clean_directory_list(VRJ22_INCLUDE_DIRS) 198 199 if(VRJUGGLER22_CREATE_IMPORTED_TARGETS) 200 create_imported_target(VRJ22 ${_DEPS}) 201 else() 202 clean_library_list(VRJ22_LIBRARIES ${_DEPS}) 203 endif() 204 205 mark_as_advanced(VRJ22_ROOT_DIR) 206endif() 207 208mark_as_advanced(VRJ22_LIBRARY_RELEASE 209 VRJ22_LIBRARY_DEBUG 210 VRJ22_INCLUDE_DIR) 211