1# - try to find Gadgeteer 2.0 library 2# Requires JCCL 1.4 and VPR 2.2 (thus FindJCCL14.cmake and FindVPR22.cmake) 3# Requires X11 if not on Mac or Windows. 4# Optionally uses Flagpoll and FindFlagpoll.cmake 5# 6# This library is a part of VR Juggler 3.0 - you probably want to use 7# find_package(VRJuggler30) instead, for an easy interface to this and 8# related scripts. See FindVRJuggler30.cmake for more information. 9# 10# GADGETEER20_LIBRARY_DIR, library search path 11# GADGETEER20_INCLUDE_DIR, include search path 12# GADGETEER20_LIBRARY, the library to link against 13# GADGETEER20_FOUND, If false, do not try to use this library. 14# 15# Plural versions refer to this library and its dependencies, and 16# are recommended to be used instead, unless you have a good reason. 17# 18# Useful configuration variables you might want to add to your cache: 19# GADGETEER20_ROOT_DIR - A directory prefix to search 20# (a path that contains include/ as a subdirectory) 21# 22# This script will use Flagpoll, if found, to provide hints to the location 23# of this library, but does not use the compiler flags returned by Flagpoll 24# directly. 25# 26# The VJ_BASE_DIR environment variable is also searched (preferentially) 27# when searching for this component, so most sane build environments should 28# "just work." Note that you need to manually re-run CMake if you change 29# this environment variable, because it cannot auto-detect this change 30# and trigger an automatic re-run. 31# 32# Original Author: 33# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net> 34# http://academic.cleardefinition.com 35# Iowa State University HCI Graduate Program/VRAC 36# Updated for VR Juggler 3.0 by: 37# Brandon Newendorp <brandon@newendorp.com> 38 39set(_HUMAN "Gadgeteer 2.0") 40set(_FP_PKG_NAME gadgeteer) 41set(_RELEASE_NAMES) 42set(_DEBUG_NAMES) 43foreach(VER 2_0 2_0_0 2_0_1 2_0_2) 44 list(APPEND _RELEASE_NAMES gadget-${VER}) 45 list(APPEND _DEBUG_NAMES gadget_d-${VER}) 46endforeach() 47set(_DIR gadgeteer-2.0) 48set(_HEADER gadget/gadgetConfig.h) 49 50include(SelectLibraryConfigurations) 51include(CreateImportedTarget) 52include(CleanLibraryList) 53include(CleanDirectoryList) 54 55if(GADGETEER20_FIND_QUIETLY) 56 set(_FIND_FLAGS "QUIET") 57else() 58 set(_FIND_FLAGS "") 59endif() 60 61# Try flagpoll. 62find_package(Flagpoll QUIET) 63 64if(FLAGPOLL) 65 flagpoll_get_include_dirs(${_FP_PKG_NAME} NO_DEPS) 66 flagpoll_get_library_dirs(${_FP_PKG_NAME} NO_DEPS) 67 flagpoll_get_extra_libs(${_FP_PKG_NAME} NO_DEPS) 68endif() 69 70set(GADGETEER20_ROOT_DIR 71 "${GADGETEER20_ROOT_DIR}" 72 CACHE 73 PATH 74 "Root directory to search for Gadgeteer") 75if(DEFINED VRJUGGLER30_ROOT_DIR) 76 mark_as_advanced(GADGETEER20_ROOT_DIR) 77endif() 78if(NOT GADGETEER20_ROOT_DIR) 79 set(GADGETEER20_ROOT_DIR "${VRJUGGLER30_ROOT_DIR}") 80endif() 81 82set(_ROOT_DIR "${GADGETEER20_ROOT_DIR}") 83 84find_path(GADGETEER20_INCLUDE_DIR 85 ${_HEADER} 86 HINTS 87 "${_ROOT_DIR}" 88 ${${_FP_PKG_NAME}_FLAGPOLL_INCLUDE_DIRS} 89 PATH_SUFFIXES 90 ${_DIR} 91 include/${_DIR} 92 include/ 93 DOC 94 "Path to ${_HUMAN} includes root") 95 96find_library(GADGETEER20_LIBRARY_RELEASE 97 NAMES 98 ${_RELEASE_NAMES} 99 HINTS 100 "${_ROOT_DIR}" 101 ${${_FP_PKG_NAME}_FLAGPOLL_LIBRARY_DIRS} 102 PATH_SUFFIXES 103 ${_VRJ_LIBSUFFIXES} 104 DOC 105 "${_HUMAN} release library full path") 106 107find_library(GADGETEER20_LIBRARY_DEBUG 108 NAMES 109 ${_DEBUG_NAMES} 110 HINTS 111 "${_ROOT_DIR}" 112 ${${_FP_PKG_NAME}_FLAGPOLL_LIBRARY_DIRS} 113 PATH_SUFFIXES 114 ${_VRJ_LIBDSUFFIXES} 115 DOC 116 "${_HUMAN} debug library full path") 117 118select_library_configurations(GADGETEER20) 119 120# Dependencies 121foreach(package JCCL14 VPR22 GMTL) 122 if(NOT ${PACKAGE}_FOUND) 123 find_package(${package} ${_FIND_FLAGS}) 124 endif() 125endforeach() 126 127if(UNIX AND NOT APPLE AND NOT WIN32) 128 # We need X11 if not on Mac or Windows 129 if(NOT X11_FOUND) 130 find_package(X11 ${_FIND_FLAGS}) 131 endif() 132 133 set(_CHECK_EXTRAS 134 X11_FOUND 135 X11_X11_LIB 136 X11_ICE_LIB 137 X11_SM_LIB 138 X11_INCLUDE_DIR) 139endif() 140 141# handle the QUIETLY and REQUIRED arguments and set xxx_FOUND to TRUE if 142# all listed variables are TRUE 143include(FindPackageHandleStandardArgs) 144find_package_handle_standard_args(GADGETEER20 145 DEFAULT_MSG 146 GADGETEER20_LIBRARY 147 GADGETEER20_INCLUDE_DIR 148 JCCL14_FOUND 149 JCCL14_LIBRARIES 150 JCCL14_INCLUDE_DIR 151 VPR22_FOUND 152 VPR22_LIBRARIES 153 VPR22_INCLUDE_DIR 154 GMTL_FOUND 155 GMTL_INCLUDE_DIR 156 ${_CHECK_EXTRAS}) 157 158if(GADGETEER20_FOUND) 159 set(_DEPS ${JCCL14_LIBRARIES} ${VPR22_LIBRARIES}) 160 161 set(GADGETEER20_INCLUDE_DIRS ${GADGETEER20_INCLUDE_DIR}) 162 list(APPEND 163 GADGETEER20_INCLUDE_DIRS 164 ${JCCL14_INCLUDE_DIRS} 165 ${VPR22_INCLUDE_DIRS} 166 ${GMTL_INCLUDE_DIRS}) 167 168 if(UNIX AND NOT APPLE AND NOT WIN32) 169 # We need X11 if not on Mac or Windows 170 list(APPEND _DEPS ${X11_X11_LIB} ${X11_ICE_LIB} ${X11_SM_LIB}) 171 list(APPEND GADGETEER20_INCLUDE_DIRS ${X11_INCLUDE_DIR}) 172 endif() 173 174 clean_directory_list(GADGETEER20_INCLUDE_DIRS) 175 176 if(VRJUGGLER30_CREATE_IMPORTED_TARGETS) 177 create_imported_target(GADGETEER20 ${_DEPS}) 178 else() 179 clean_library_list(GADGETEER20_LIBRARIES ${_DEPS}) 180 endif() 181 182 mark_as_advanced(GADGETEER20_ROOT_DIR) 183endif() 184 185mark_as_advanced(GADGETEER20_LIBRARY_RELEASE 186 GADGETEER20_LIBRARY_DEBUG 187 GADGETEER20_INCLUDE_DIR) 188