1# - try to find Sonix 1.4 library
2# Requires VPR 2.2 and GMTL (thus FindVPR22.cmake and FindGMTL.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#  SONIX14_LIBRARY_DIR, library search path
10#  SONIX14_INCLUDE_DIR, include search path
11#  SONIX14_LIBRARY, the library to link against
12#  SONIX14_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#  SONIX14_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 "Sonix 1.4")
40set(_FP_PKG_NAME sonix)
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 sonix-1.4)
48set(_HEADER snx/sonix.h)
49
50include(SelectLibraryConfigurations)
51include(CreateImportedTarget)
52include(CleanLibraryList)
53include(CleanDirectoryList)
54
55if(SONIX14_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(SONIX14_ROOT_DIR
70	"${SONIX14_ROOT_DIR}"
71	CACHE
72	PATH
73	"Root directory to search for Sonix")
74if(DEFINED VRJUGGLER30_ROOT_DIR)
75	mark_as_advanced(SONIX14_ROOT_DIR)
76endif()
77if(NOT SONIX14_ROOT_DIR)
78	set(SONIX14_ROOT_DIR "${VRJUGGLER30_ROOT_DIR}")
79endif()
80
81set(_ROOT_DIR "${SONIX14_ROOT_DIR}")
82
83find_path(SONIX14_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(SONIX14_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(SONIX14_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(SONIX14)
118
119# Dependencies
120if(NOT VPR22_FOUND)
121	find_package(VPR22 ${_FIND_FLAGS})
122endif()
123
124if(NOT GMTL_FOUND)
125	find_package(GMTL ${_FIND_FLAGS})
126endif()
127
128# handle the QUIETLY and REQUIRED arguments and set xxx_FOUND to TRUE if
129# all listed variables are TRUE
130include(FindPackageHandleStandardArgs)
131find_package_handle_standard_args(SONIX14
132	DEFAULT_MSG
133	SONIX14_LIBRARY
134	SONIX14_INCLUDE_DIR
135	VPR22_FOUND
136	VPR22_LIBRARIES
137	VPR22_INCLUDE_DIR
138	GMTL_FOUND
139	GMTL_INCLUDE_DIR)
140
141if(SONIX14_FOUND)
142	set(_DEPS ${VPR22_LIBRARIES})
143
144	set(SONIX14_INCLUDE_DIRS ${SONIX14_INCLUDE_DIR})
145	list(APPEND
146		SONIX14_INCLUDE_DIRS
147		${VPR22_INCLUDE_DIRS}
148		${GMTL_INCLUDE_DIRS})
149
150	clean_directory_list(SONIX14_INCLUDE_DIRS)
151
152	if(VRJUGGLER30_CREATE_IMPORTED_TARGETS)
153		create_imported_target(SONIX14 ${_DEPS})
154	else()
155		clean_library_list(SONIX14_LIBRARIES ${_DEPS})
156	endif()
157
158	mark_as_advanced(SONIX14_ROOT_DIR)
159endif()
160
161mark_as_advanced(SONIX14_LIBRARY_RELEASE
162	SONIX14_LIBRARY_DEBUG
163	SONIX14_INCLUDE_DIR)
164