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