1# - try to find JCCL 1.4 library
2# Requires VPR 2.2 (thus FindVPR22.cmake)
3# Optionally uses Flagpoll and FindFlagpoll.cmake
4#
5# This library is a part of VR Juggler 3.0 - you probably want to use
6# find_package(VRJuggler30) instead, for an easy interface to this and
7# related scripts.  See FindVRJuggler30.cmake for more information.
8#
9#  JCCL14_LIBRARY_DIR, library search path
10#  JCCL14_INCLUDE_DIR, include search path
11#  JCCL14_LIBRARY, the library to link against
12#  JCCL14_FOUND, If false, do not try to use this library.
13#
14# Plural versions refer to this library and its dependencies, and
15# are recommended to be used instead, unless you have a good reason.
16#
17# Useful configuration variables you might want to add to your cache:
18#  JCCL14_ROOT_DIR - A directory prefix to search
19#                    (a path that contains include/ as a subdirectory)
20#
21# This script will use Flagpoll, if found, to provide hints to the location
22# of this library, but does not use the compiler flags returned by Flagpoll
23# directly.
24#
25# The VJ_BASE_DIR environment variable is also searched (preferentially)
26# when searching for this component, so most sane build environments should
27# "just work."  Note that you need to manually re-run CMake if you change
28# this environment variable, because it cannot auto-detect this change
29# and trigger an automatic re-run.
30#
31# Original Author:
32# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
33# http://academic.cleardefinition.com
34# Iowa State University HCI Graduate Program/VRAC
35# Updated for VR Juggler 3.0 by:
36# Brandon Newendorp <brandon@newendorp.com>
37
38
39set(_HUMAN "JCCL 1.4")
40set(_FP_PKG_NAME jccl)
41set(_RELEASE_NAMES)
42set(_DEBUG_NAMES)
43foreach(VER 1_4 1_4_0 1_4_1 1_4_2)
44	list(APPEND _RELEASE_NAMES ${_FP_PKG_NAME}-${VER})
45	list(APPEND _DEBUG_NAMES ${_FP_PKG_NAME}_d-${VER})
46endforeach()
47set(_DIR jccl-1.4)
48set(_HEADER jccl/jcclConfig.h)
49
50include(SelectLibraryConfigurations)
51include(CreateImportedTarget)
52include(CleanLibraryList)
53include(CleanDirectoryList)
54
55if(JCCL14_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)
67endif()
68
69set(JCCL14_ROOT_DIR
70	"${JCCL14_ROOT_DIR}"
71	CACHE
72	PATH
73	"Root directory to search for JCCL")
74if(DEFINED VRJUGGLER30_ROOT_DIR)
75	mark_as_advanced(JCCL14_ROOT_DIR)
76endif()
77if(NOT JCCL14_ROOT_DIR)
78	set(JCCL14_ROOT_DIR "${VRJUGGLER30_ROOT_DIR}")
79endif()
80
81set(_ROOT_DIR ${JCCL14_ROOT_DIR})
82
83find_path(JCCL14_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(JCCL14_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(JCCL14_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(JCCL14)
118
119# Dependency
120if(NOT VPR22_FOUND)
121	find_package(VPR22 ${_FIND_FLAGS})
122endif()
123
124# handle the QUIETLY and REQUIRED arguments and set xxx_FOUND to TRUE if
125# all listed variables are TRUE
126include(FindPackageHandleStandardArgs)
127find_package_handle_standard_args(JCCL14
128	DEFAULT_MSG
129	JCCL14_LIBRARY
130	JCCL14_INCLUDE_DIR
131	VPR22_FOUND
132	VPR22_LIBRARIES
133	VPR22_INCLUDE_DIR)
134
135if(JCCL14_FOUND)
136	set(_DEPS ${VPR22_LIBRARIES})
137
138	set(JCCL14_INCLUDE_DIRS ${JCCL14_INCLUDE_DIR})
139	list(APPEND JCCL14_INCLUDE_DIRS ${VPR22_INCLUDE_DIRS})
140	clean_directory_list(JCCL14_INCLUDE_DIRS)
141
142	if(VRJUGGLER30_CREATE_IMPORTED_TARGETS)
143		create_imported_target(JCCL14 ${_DEPS})
144	else()
145		clean_library_list(JCCL14_LIBRARIES)
146	endif()
147
148	mark_as_advanced(JCCL14_ROOT_DIR)
149endif()
150
151mark_as_advanced(JCCL14_LIBRARY_RELEASE
152	JCCL14_LIBRARY_DEBUG
153	JCCL14_INCLUDE_DIR)
154