1# - try to find Oculus VR's SDK for Oculus Rift support 2# 3# Cache Variables: (probably not for direct use in your scripts) 4# OVR_INCLUDE_DIR 5# OVR_SOURCE_DIR 6# OVR_LIBRARY 7# 8# Non-cache variables you might use in your CMakeLists.txt: 9# OVR_FOUND 10# OVR_INCLUDE_DIRS 11# OVR_LIBRARIES 12# 13# Requires these CMake modules: 14# FindPackageHandleStandardArgs (known included with CMake >=2.6.2) 15# 16# Original Author: 17# 2014 Kevin M. Godby <kevin@godby.org> 18# 19# Distributed under the Boost Software License, Version 1.0. 20# (See accompanying file LICENSE_1_0.txt or copy at 21# http://www.boost.org/LICENSE_1_0.txt) 22 23set(OVR_ROOT_DIR 24 "${OVR_ROOT_DIR}" 25 CACHE 26 PATH 27 "Directory to search for Oculus SDK") 28 29# The OVR library is built in a directory tree that varies based on platform, 30# architecture, and compiler. 31# 32# The libraries live in one of the following locations: 33# 34# Lib/Win32/VS2012/libovrd.lib 35# Lib/Win32/VS2012/libovr.lib 36# Lib/Win32/VS2013/libovrd.lib 37# Lib/Win32/VS2013/libovr.lib 38# Lib/Win32/VS2010/libovrd.lib 39# Lib/Win32/VS2010/libovr.lib 40# Lib/x64/VS2012/libovr64d.lib 41# Lib/x64/VS2012/libovr64.lib 42# Lib/x64/VS2013/libovr64d.lib 43# Lib/x64/VS2013/libovr64.lib 44# Lib/x64/VS2010/libovr64d.lib 45# Lib/x64/VS2010/libovr64.lib 46# Lib/Linux/Release/x86_64/libovr.a 47# Lib/Linux/Debug/x86_64/libovr.a 48# Lib/Linux/Release/i386/libovr.a 49# Lib/Linux/Debug/i386/libovr.a 50# Lib/Mac/Release/libovr.a 51# Lib/Mac/Debug/libovr.a 52 53set(OVR_LIBRARY_PATH_SUFFIX "Lib") 54 55# Test compiler 56if(MSVC10) # Microsoft Visual Studio 2010 57 set(_ovr_library_compiler "VS2010") 58elseif(MSVC11) # Microsoft Visual Studio 2012 59 set(_ovr_library_compiler "VS2012") 60elseif(MSVC12) # Microsoft Visual Studio 2013 61 set(_ovr_library_compiler "VS2013") 62endif() 63 64 65# Test 32/64 bits 66if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") 67 set(_ovr_library_arch "x86_64") 68 if (WIN32) 69 set(_ovr_library_arch "x64") 70 set(_ovr_libname_bitsuffix "64") 71 endif(WIN32) 72else() 73 set(_ovr_library_arch "i386") 74 if (WIN32) 75 set(_ovr_library_arch "Win32") 76 set(_ovr_libname_bitsuffix "") 77 endif(WIN32) 78endif() 79 80# Test platform 81if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") 82 set(OVR_LIBRARY_PATH_SUFFIX_START "Lib/Linux") # needs build type and arch 83elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 84 set(OVR_LIBRARY_PATH_SUFFIX_START "Lib/Mac") # needs build type 85elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows") 86 set(OVR_LIBRARY_PATH_SUFFIX "Lib/${_ovr_library_arch}/${_ovr_library_compiler}") 87endif() 88 89find_library(OVR_LIBRARY_RELEASE 90 NAMES 91 ovr${_ovr_libname_bitsuffix} 92 libovr${_ovr_libname_bitsuffix} 93 PATHS 94 "${OVR_ROOT_DIR}" 95 "${OVR_ROOT_DIR}/LibOVR" 96 c:/tools/oculus-sdk.install/OculusSDK/LibOVR 97 PATH_SUFFIXES 98 ${OVR_LIBRARY_PATH_SUFFIX} 99 ${OVR_LIBRARY_PATH_SUFFIX_START}/Release 100 ${OVR_LIBRARY_PATH_SUFFIX_START}/Release/${_ovr_library_arch}) 101 102find_library(OVR_LIBRARY_DEBUG 103 NAMES 104 ovr${_ovr_libname_bitsuffix}d 105 libovr${_ovr_libname_bitsuffix}d 106 PATHS 107 "${OVR_ROOT_DIR}" 108 "${OVR_ROOT_DIR}/LibOVR" 109 c:/tools/oculus-sdk.install/OculusSDK/LibOVR 110 PATH_SUFFIXES 111 ${OVR_LIBRARY_PATH_SUFFIX} 112 ${OVR_LIBRARY_PATH_SUFFIX_START}/Debug 113 ${OVR_LIBRARY_PATH_SUFFIX_START}/Debug/${_ovr_library_arch}) 114 115include(SelectLibraryConfigurations) 116select_library_configurations(OVR) 117 118if(OVR_LIBRARY_RELEASE) 119 get_filename_component(_libdir "${OVR_LIBRARY_RELEASE}" PATH) 120endif() 121 122find_path(OVR_INCLUDE_DIR 123 NAMES 124 OVR.h 125 HINTS 126 "${_libdir}" 127 "${_libdir}/.." 128 "${_libdir}/../.." 129 "${_libdir}/../../.." 130 PATHS 131 "${OVR_ROOT_DIR}" 132 PATH_SUFFIXES 133 include 134 Include 135 ) 136 137find_path(OVR_SOURCE_DIR 138 NAMES 139 OVR_CAPI.h 140 HINTS 141 "${_libdir}" 142 "${_libdir}/.." 143 "${_libdir}/../.." 144 "${_libdir}/../../.." 145 PATHS 146 "${OVR_ROOT_DIR}" 147 PATH_SUFFIXES 148 Src 149 ) 150 151# Dependencies 152 153set(_ovr_dependency_libraries "") 154set(_ovr_dependency_includes "") 155 156if(NOT OPENGL_FOUND) 157 find_package(OpenGL) 158 list(APPEND _ovr_dependency_libraries ${OPENGL_LIBRARIES}) 159 list(APPEND _ovr_dependency_includes ${OPENGL_INCLUDE_DIR}) 160 list(APPEND _ovr_dependencies OPENGL_FOUND) 161endif() 162 163if(NOT THREADS_FOUND) 164 find_package(Threads) 165 list(APPEND _ovr_dependency_libraries ${CMAKE_THREAD_LIBS_INIT}) 166 list(APPEND _ovr_dependencies THREADS_FOUND) 167endif() 168 169# Linux-only dependencies 170if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") 171 if(NOT X11_FOUND) 172 find_package(X11) 173 list(APPEND _ovr_dependency_libraries ${X11_LIBRARIES}) 174 list(APPEND _ovr_dependency_includes ${X11_INCLUDE_DIR}) 175 list(APPEND _ovr_dependencies X11_FOUND) 176 endif() 177 178 if(NOT XRANDR_FOUND) 179 find_package(Xrandr) 180 list(APPEND _ovr_dependency_libraries ${XRANDR_LIBRARIES}) 181 list(APPEND _ovr_dependency_includes ${XRANDR_INCLUDE_DIR}) 182 list(APPEND _ovr_dependencies XRANDR_FOUND) 183 endif() 184 185 if(NOT UDEV_FOUND) 186 find_package(udev) 187 list(APPEND _ovr_dependency_libraries ${UDEV_LIBRARIES}) 188 list(APPEND _ovr_dependency_includes ${UDEV_INCLUDE_DIR}) 189 list(APPEND _ovr_dependencies UDEV_FOUND) 190 endif() 191endif() 192 193if(WIN32) 194 #find_library(OVR_WINMM_LIBRARY winmm) 195 #find_library(OVR_WS2_LIBRARY ws2_32) 196 list(APPEND _ovr_dependency_libraries winmm ws2_32)#${OVR_WINMM_LIBRARY} ${OVR_WS2_LIBRARY}) 197endif() 198 199include(FindPackageHandleStandardArgs) 200find_package_handle_standard_args(OVR 201 DEFAULT_MSG 202 OVR_LIBRARY 203 OVR_INCLUDE_DIR 204 OVR_SOURCE_DIR 205 ${_ovr_dependencies} 206 ) 207 208if(OVR_FOUND) 209 set(OVR_LIBRARIES ${OVR_LIBRARY} ${_ovr_dependency_libraries}) 210 set(OVR_INCLUDE_DIRS ${OVR_INCLUDE_DIR} ${OVR_SOURCE_DIR} ${_ovr_dependency_includes}) 211 mark_as_advanced(OVR_ROOT_DIR) 212endif() 213 214mark_as_advanced(OVR_INCLUDE_DIR 215 OVR_SOURCE_DIR 216 OVR_LIBRARY 217 OVR_WINMM_LIBRARY 218 OVR_WS2_LIBRARY) 219 220