1# - try to find Sensable GHOST library and include files
2#  GHOST_INCLUDE_DIRS, where to find GL/glut.h, etc.
3#  GHOST_LIBRARIES, the libraries to link against
4#  GHOST_FOUND, If false, do not try to use GLUT.
5#  GHOST_RUNTIME_LIBRARY_DIRS, path to DLL on Windows for runtime use.
6#
7# Requires these CMake modules:
8#  no additional modules required
9#
10# Original Author:
11# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
12# http://academic.cleardefinition.com
13# Iowa State University HCI Graduate Program/VRAC
14#
15# Copyright Iowa State University 2009-2010.
16# Distributed under the Boost Software License, Version 1.0.
17# (See accompanying file LICENSE_1_0.txt or copy at
18# http://www.boost.org/LICENSE_1_0.txt)
19
20set(GHOST_ROOT_DIR
21	"${GHOST_ROOT_DIR}"
22	CACHE
23	PATH
24	"Path to search for GHOST")
25
26set(_dirs)
27if(WIN32)
28	include(ProgramFilesGlob)
29	program_files_fallback_glob(_dirs "/Sensable/GHOST/v*/")
30endif()
31
32find_path(GHOST_INCLUDE_DIR
33	gstPHANToM.h
34	PATHS
35	${_dirs}
36	HINTS
37	"${GHOST_ROOT_DIR}"
38	PATH_SUFFIXES
39	include)
40
41find_library(GHOST_LIBRARY
42	GHOST40
43	GHOST31
44	PATHS
45	${_dirs}
46	HINTS
47	"${GHOST_ROOT_DIR}"
48	PATH_SUFFIXES
49	lib)
50
51if(MSVC)
52	if(MSVC_VERSION GREATER 1300)
53		# .NET and newer: fake the STL headers
54		get_filename_component(_moddir "${CMAKE_CURRENT_LIST_FILE}" PATH)
55		set(GHOST_STL_INCLUDE_DIR "${_moddir}/ghost-fake-stl")
56	else()
57		# 6.0 and earlier - use GHOST-provided STL
58		find_path(GHOST_STL_INCLUDE_DIR
59			vector.h
60			PATHS
61			${_dirs}
62			HINTS
63			"${GHOST_ROOT_DIR}"
64			"${GHOST_INCLUDE_DIR}"
65			PATH_SUFFIXES
66			external/stl
67			stl)
68	endif()
69	set(_deps_check GHOST_STL_INCLUDE_DIR)
70else()
71	set(_deps_check)
72endif()
73
74# handle the QUIETLY and REQUIRED arguments and set xxx_FOUND to TRUE if
75# all listed variables are TRUE
76include(FindPackageHandleStandardArgs)
77find_package_handle_standard_args(GHOST
78	DEFAULT_MSG
79	GHOST_LIBRARY
80	${_deps_check}
81	GHOST_INCLUDE_DIR)
82
83if(GHOST_FOUND)
84	set(GHOST_LIBRARIES "${GHOST_LIBRARY}")
85	set(GHOST_INCLUDE_DIRS "${GHOST_INCLUDE_DIR}")
86
87	mark_as_advanced(GHOST_ROOT_DIR)
88endif()
89
90mark_as_advanced(GHOST_LIBRARY GHOST_STL_INCLUDE_DIR GHOST_INCLUDE_DIR)
91