1# - try to find Gadgeteer 1.2 library
2# Requires JCCL 1.2 and VPR 2.0 (thus FindJCCL12.cmake and FindVPR20.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 2.2 - you probably want to use
7# find_package(VRJuggler22) instead, for an easy interface to this and
8# related scripts.  See FindVRJuggler22.cmake for more information.
9#
10#  GADGETEER12_LIBRARY_DIR, library search path
11#  GADGETEER12_INCLUDE_DIR, include search path
12#  GADGETEER12_LIBRARY, the library to link against
13#  GADGETEER12_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#  GADGETEER12_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#
37# Copyright Iowa State University 2009-2010.
38# Distributed under the Boost Software License, Version 1.0.
39# (See accompanying file LICENSE_1_0.txt or copy at
40# http://www.boost.org/LICENSE_1_0.txt)
41
42set(_HUMAN "Gadgeteer 1.2")
43set(_RELEASE_NAMES gadget-1_2 libgadget-1_2)
44set(_DEBUG_NAMES gadget_d-1_2 libgadget_d-1_2)
45set(_DIR gadgeteer-1.2)
46set(_HEADER gadget/gadgetConfig.h)
47set(_FP_PKG_NAME gadgeteer)
48
49include(SelectLibraryConfigurations)
50include(CreateImportedTarget)
51include(CleanLibraryList)
52include(CleanDirectoryList)
53
54if(Gadgeteer12_FIND_QUIETLY)
55	set(_FIND_FLAGS "QUIET")
56else()
57	set(_FIND_FLAGS "")
58endif()
59
60# Try flagpoll.
61find_package(Flagpoll QUIET)
62
63if(FLAGPOLL)
64	flagpoll_get_include_dirs(${_FP_PKG_NAME} NO_DEPS)
65	flagpoll_get_library_dirs(${_FP_PKG_NAME} NO_DEPS)
66	flagpoll_get_extra_libs(${_FP_PKG_NAME} NO_DEPS)
67endif()
68
69set(GADGETEER12_ROOT_DIR
70	"${GADGETEER12_ROOT_DIR}"
71	CACHE
72	PATH
73	"Root directory to search for Gadgeteer")
74if(DEFINED VRJUGGLER22_ROOT_DIR)
75	mark_as_advanced(GADGETEER12_ROOT_DIR)
76endif()
77if(NOT GADGETEER12_ROOT_DIR)
78	set(GADGETEER12_ROOT_DIR "${VRJUGGLER22_ROOT_DIR}")
79endif()
80
81set(_ROOT_DIR "${GADGETEER12_ROOT_DIR}")
82
83find_path(GADGETEER12_INCLUDE_DIR
84	${_HEADER}
85	HINTS
86	"${_ROOT_DIR}"
87	${${_FP_PKG_NAME}_FLAGPOLL_INCLUDE_DIRS}
88	PATH_SUFFIXES
89	${_DIR}
90	include/${_DIR}
91	include/
92	DOC
93	"Path to ${_HUMAN} includes root")
94
95find_library(GADGETEER12_LIBRARY_RELEASE
96	NAMES
97	${_RELEASE_NAMES}
98	HINTS
99	"${_ROOT_DIR}"
100	${${_FP_PKG_NAME}_FLAGPOLL_LIBRARY_DIRS}
101	PATH_SUFFIXES
102	${_VRJ_LIBSUFFIXES}
103	DOC
104	"${_HUMAN} release library full path")
105
106find_library(GADGETEER12_LIBRARY_DEBUG
107	NAMES
108	${_DEBUG_NAMES}
109	HINTS
110	"${_ROOT_DIR}"
111	${${_FP_PKG_NAME}_FLAGPOLL_LIBRARY_DIRS}
112	PATH_SUFFIXES
113	${_VRJ_LIBDSUFFIXES}
114	DOC
115	"${_HUMAN} debug library full path")
116
117select_library_configurations(GADGETEER12)
118
119# Dependencies
120foreach(package JCCL12 VPR20 GMTL)
121	if(NOT ${PACKAGE}_FOUND)
122		find_package(${package} ${_FIND_FLAGS})
123	endif()
124endforeach()
125
126if(UNIX AND NOT APPLE AND NOT WIN32)
127	# We need X11 if not on Mac or Windows
128	if(NOT X11_FOUND)
129		find_package(X11 ${_FIND_FLAGS})
130	endif()
131
132	set(_CHECK_EXTRAS
133		X11_FOUND
134		X11_X11_LIB
135		X11_ICE_LIB
136		X11_SM_LIB
137		X11_INCLUDE_DIR)
138endif()
139
140# handle the QUIETLY and REQUIRED arguments and set xxx_FOUND to TRUE if
141# all listed variables are TRUE
142include(FindPackageHandleStandardArgs)
143find_package_handle_standard_args(Gadgeteer12
144	DEFAULT_MSG
145	GADGETEER12_LIBRARY
146	GADGETEER12_INCLUDE_DIR
147	JCCL12_FOUND
148	JCCL12_LIBRARIES
149	JCCL12_INCLUDE_DIR
150	VPR20_FOUND
151	VPR20_LIBRARIES
152	VPR20_INCLUDE_DIR
153	GMTL_FOUND
154	GMTL_INCLUDE_DIR
155	${_CHECK_EXTRAS})
156
157if(GADGETEER12_FOUND)
158	set(_DEPS ${JCCL12_LIBRARIES} ${VPR20_LIBRARIES})
159
160	set(GADGETEER12_INCLUDE_DIRS ${GADGETEER12_INCLUDE_DIR})
161	list(APPEND
162		GADGETEER12_INCLUDE_DIRS
163		${JCCL12_INCLUDE_DIRS}
164		${VPR20_INCLUDE_DIRS}
165		${GMTL_INCLUDE_DIRS})
166
167	if(UNIX AND NOT APPLE AND NOT WIN32)
168		# We need X11 if not on Mac or Windows
169		list(APPEND _DEPS ${X11_X11_LIB} ${X11_ICE_LIB} ${X11_SM_LIB})
170		list(APPEND GADGETEER12_INCLUDE_DIRS ${X11_INCLUDE_DIR})
171	endif()
172
173	clean_directory_list(GADGETEER12_INCLUDE_DIRS)
174
175	if(VRJUGGLER22_CREATE_IMPORTED_TARGETS)
176		create_imported_target(GADGETEER12 ${_DEPS})
177	else()
178		clean_library_list(GADGETEER12_LIBRARIES ${_DEPS})
179	endif()
180
181	mark_as_advanced(GADGETEER12_ROOT_DIR)
182endif()
183
184mark_as_advanced(GADGETEER12_LIBRARY_RELEASE
185	GADGETEER12_LIBRARY_DEBUG
186	GADGETEER12_INCLUDE_DIR)
187