305 lines
6.4 KiB
CMake
305 lines
6.4 KiB
CMake
|
# - try to find VPS library
|
||
|
#
|
||
|
# VPS_LIBRARY_DIR, library search path
|
||
|
# VPS_INCLUDE_DIR, include search path
|
||
|
# VPS_{component}_LIBRARY, the library to link against
|
||
|
# VPS_FOUND, If false, do not try to use this library.
|
||
|
#
|
||
|
# Plural versions refer to this library and its dependencies, and
|
||
|
# are recommended to be used instead, unless you have a good reason.
|
||
|
#
|
||
|
# Useful configuration variables you might want to add to your cache:
|
||
|
# VPS_ROOT_DIR - A directory prefix to search
|
||
|
# (a path that contains include/ as a subdirectory)
|
||
|
#
|
||
|
# Original Author:
|
||
|
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
|
||
|
# http://academic.cleardefinition.com
|
||
|
# Iowa State University HCI Graduate Program/VRAC
|
||
|
#
|
||
|
# Copyright Iowa State University 2009-2010.
|
||
|
# Distributed under the Boost Software License, Version 1.0.
|
||
|
# (See accompanying file LICENSE_1_0.txt or copy at
|
||
|
# http://www.boost.org/LICENSE_1_0.txt)
|
||
|
|
||
|
include(SelectLibraryConfigurations)
|
||
|
include(ListCombinations)
|
||
|
include(CheckVersion)
|
||
|
include(ListFilter)
|
||
|
|
||
|
set(VPS_ROOT_DIR
|
||
|
"${VPS_ROOT_DIR}"
|
||
|
CACHE
|
||
|
PATH
|
||
|
"Root directory to search for VPS")
|
||
|
|
||
|
# Try the config file mode.
|
||
|
find_package(VPS QUIET NO_MODULE)
|
||
|
if(VPS_FOUND)
|
||
|
mark_as_advanced(VPS_DIR VPS_ROOT_DIR)
|
||
|
return()
|
||
|
endif()
|
||
|
|
||
|
if(NOT BITS)
|
||
|
if(CMAKE_SIZEOF_VOID_P MATCHES "8")
|
||
|
set(BITS 64)
|
||
|
else()
|
||
|
set(BITS 32)
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
set(_vpslibnames)
|
||
|
set(_grviewerlibnames)
|
||
|
|
||
|
###
|
||
|
# Cray MTA(Multi-Threaded Architecture) family: CMake build not tested
|
||
|
if("${CMAKE_SYSTEM_NAME}" STREQUAL "MTX")
|
||
|
set(VPS_PLATFORM MTX)
|
||
|
set(_VPS_FLAGS_32 "-pl all.pl -par")
|
||
|
set(_VPS_FLAGS_64 "-pl all.pl -par")
|
||
|
###
|
||
|
# Linux
|
||
|
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
|
||
|
set(VPS_PLATFORM LINUX)
|
||
|
set(_VPS_FLAGS_32 "-O2 -Wno-write-strings")
|
||
|
set(_VPS_FLAGS_64 "-m64 -O3 -ffast-math -funroll-all-loops -Wno-write-strings")
|
||
|
|
||
|
###
|
||
|
# IBM-AIX: CMake build not tested
|
||
|
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "AIX")
|
||
|
set(VPS_PLATFORM AIX)
|
||
|
set(_VPS_FLAGS_32 "-q32")
|
||
|
set(_VPS_FLAGS_64 "-q64")
|
||
|
|
||
|
###
|
||
|
# HP-UX: CMake build not tested
|
||
|
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "HP-UX")
|
||
|
set(VPS_PLATFORM HPUX)
|
||
|
set(_VPS_FLAGS_32 "-O")
|
||
|
|
||
|
###
|
||
|
# SunOS: CMake build not tested
|
||
|
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
|
||
|
set(VPS_PLATFORM SOLARIS)
|
||
|
set(_VPS_FLAGS_32 "-O")
|
||
|
|
||
|
###
|
||
|
# IRIX: CMake build not tested
|
||
|
elseif("${CMAKE_SYSTEM_NAME}" MATCHES "IRIX")
|
||
|
set(VPS_PLATFORM IRIX)
|
||
|
set(_VPS_FLAGS_32 "-O2 -OPT")
|
||
|
set(_VPS_FLAGS_64 "-64 -O2 -OPT")
|
||
|
|
||
|
###
|
||
|
# Mac OS X
|
||
|
elseif(APPLE AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
|
||
|
set(VPS_PLATFORM MACOSX)
|
||
|
set(_VPS_FLAGS_32 "-O2 -lm -lobjc -lstdc++ -Wno-write-strings")
|
||
|
set(_VPS_FLAGS_64 "-m64 -O3 -ffast-math -funroll-all-loops -lm -lobjc -lstdc++ -Wno-write-strings")
|
||
|
|
||
|
###
|
||
|
# Windows
|
||
|
elseif(WIN32)
|
||
|
set(VPS_PLATFORM WINDOWS)
|
||
|
set(_VPS_FLAGS_32 "-O2")
|
||
|
set(_VPS_FLAGS_64 "-O2")
|
||
|
|
||
|
if(MSVC)
|
||
|
set(DEFS_32 -D_CRT_SECURE_NO_DEPRECATE)
|
||
|
set(DEFS_64 -D_CRT_SECURE_NO_DEPRECATE)
|
||
|
if(MSVC60)
|
||
|
set(VPS_CRT "VC6")
|
||
|
elseif(MSVC70)
|
||
|
set(VPS_CRT "VC7")
|
||
|
elseif(MSVC71)
|
||
|
set(VPS_CRT "VC71")
|
||
|
elseif(MSVC80)
|
||
|
set(VPS_CRT "VC8")
|
||
|
elseif(MSVC90)
|
||
|
set(VPS_CRT "VC9")
|
||
|
elseif(MSVC10)
|
||
|
set(VPS_CRT "VC10")
|
||
|
else()
|
||
|
set(VPS_CRT "VC")
|
||
|
endif()
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
if(WIN32 AND MSVC)
|
||
|
set(PLATFORM win${BITS})
|
||
|
set(_threadsuffix Mt)
|
||
|
if(MSVC71)
|
||
|
set(VC_VER vc71)
|
||
|
set(VC_VER_LONG vc71)
|
||
|
elseif(MSVC80)
|
||
|
set(VC_SHORT VC8)
|
||
|
set(VC_LONG MSVC80)
|
||
|
elseif(MSVC90)
|
||
|
set(VC_SHORT VC9)
|
||
|
set(VC_LONG MSVC90)
|
||
|
endif()
|
||
|
list(APPEND
|
||
|
_vpslibnames
|
||
|
"Vps${VC_SHORT}_${BITS}"
|
||
|
"Vps${VC_SHORT}_${BITS}${_threadsuffix}")
|
||
|
endif()
|
||
|
|
||
|
list(APPEND _vpslibnames "Vps${VPS_PLATFORM}${VPS_CRT}_${BITS}")
|
||
|
list(APPEND
|
||
|
_grviewerlibnames
|
||
|
"Viewer"
|
||
|
"GrViewer${VPS_PLATFORM}${VPS_CRT}_${BITS}")
|
||
|
|
||
|
###
|
||
|
# Configure VPS
|
||
|
###
|
||
|
|
||
|
set(_incsearchdirs)
|
||
|
set(_libsearchdirs)
|
||
|
|
||
|
if(WIN32)
|
||
|
include(ProgramFilesGlob)
|
||
|
program_files_glob(_dirs "/VPS*/")
|
||
|
program_files_glob(_dirs2 "/VPS/*/")
|
||
|
list(APPEND _dirs ${_dirs2})
|
||
|
endif()
|
||
|
|
||
|
list_combinations(_libsearchdirs
|
||
|
PREFIXES
|
||
|
"${VPS_ROOT_DIR}"
|
||
|
"${_dirs}"
|
||
|
SUFFIXES
|
||
|
"/lib"
|
||
|
"/Viewer")
|
||
|
list_combinations(_libsearchdirs2
|
||
|
PREFIXES
|
||
|
${_libsearchdirs}
|
||
|
SUFFIXES
|
||
|
"/Release"
|
||
|
"/RelWithDebInfo"
|
||
|
"/MinSizeRel"
|
||
|
"/Debug")
|
||
|
clean_directory_list(_libsearchdirs ${_libsearchdirs2})
|
||
|
|
||
|
list_combinations(_incsearchdirs
|
||
|
PREFIXES
|
||
|
"${VPS_ROOT_DIR}"
|
||
|
"${_dirs}"
|
||
|
SUFFIXES
|
||
|
"/include"
|
||
|
"/include/vps"
|
||
|
"/src"
|
||
|
"/../src"
|
||
|
"/Viewer"
|
||
|
"/../Viewer")
|
||
|
clean_directory_list(_incsearchdirs)
|
||
|
|
||
|
# If a version was specified, the least we can do is remove any directories
|
||
|
# from our search that contain too low of versions
|
||
|
if(VPS_FIND_VERSION)
|
||
|
|
||
|
set(_badversions)
|
||
|
foreach(_dir ${_libsearchdirs})
|
||
|
string(REGEX MATCH "([0-9]).([0-9]).([0-9])" _ver "${_dir}")
|
||
|
if(_ver)
|
||
|
string(REGEX
|
||
|
REPLACE
|
||
|
"([0-9]).([0-9]).([0-9])"
|
||
|
"\\1.\\2.\\3"
|
||
|
_verstd
|
||
|
"${_ver}")
|
||
|
check_version(_result VPS "${_verstd}")
|
||
|
if(NOT _result)
|
||
|
list(APPEND _badversions "${_verstd}")
|
||
|
endif()
|
||
|
endif()
|
||
|
endforeach()
|
||
|
|
||
|
foreach(_badver ${_badversions})
|
||
|
list_filter_out(_libsearchdirs ${_badver} ${_libsearchdirs})
|
||
|
list_filter_out(_incsearchdirs ${_badver} ${_incsearchdirs})
|
||
|
endforeach()
|
||
|
endif()
|
||
|
if(_libsearchdirs)
|
||
|
list(SORT _libsearchdirs)
|
||
|
list(REVERSE _libsearchdirs)
|
||
|
endif()
|
||
|
|
||
|
if(_incsearchdirs)
|
||
|
list(SORT _incsearchdirs)
|
||
|
list(REVERSE _incsearchdirs)
|
||
|
endif()
|
||
|
|
||
|
find_library(VPS_vps_LIBRARY
|
||
|
NAMES
|
||
|
${_vpslibnames}
|
||
|
PATH_SUFFIXES
|
||
|
LP
|
||
|
HINTS
|
||
|
${_libsearchdirs}
|
||
|
PATHS
|
||
|
${VPS_ROOT_DIR}
|
||
|
${VPS_ROOT_DIR}/src
|
||
|
${VPS_ROOT_DIR}/lib)
|
||
|
|
||
|
find_path(VPS_vps_INCLUDE_DIR
|
||
|
NAMES
|
||
|
Vps.h
|
||
|
HINTS
|
||
|
${_incsearchdirs}
|
||
|
PATHS
|
||
|
${VPS_ROOT_DIR}
|
||
|
PATH_SUFFIXES
|
||
|
include
|
||
|
include/vps
|
||
|
src)
|
||
|
|
||
|
find_library(VPS_grviewer_LIBRARY
|
||
|
NAMES
|
||
|
${_grviewerlibnames}
|
||
|
HINTS
|
||
|
${_libsearchdirs}
|
||
|
PATHS
|
||
|
${VPS_ROOT_DIR}
|
||
|
PATH_SUFFIXES
|
||
|
lib
|
||
|
Viewer)
|
||
|
|
||
|
find_path(VPS_grviewer_INCLUDE_DIR
|
||
|
NAMES
|
||
|
grViewerLib.h
|
||
|
HINTS
|
||
|
${_incsearchdirs}
|
||
|
PATHS
|
||
|
${VPS_ROOT_DIR}
|
||
|
PATH_SUFFIXES
|
||
|
include
|
||
|
include/vps
|
||
|
Viewer)
|
||
|
|
||
|
mark_as_advanced(VPS_vps_LIBRARY
|
||
|
VPS_vps_INCLUDE_DIR
|
||
|
VPS_grviewer_LIBRARY
|
||
|
VPS_grviewer_INCLUDE_DIR)
|
||
|
|
||
|
# handle the QUIETLY and REQUIRED arguments and set xxx_FOUND to TRUE if
|
||
|
# all listed variables are TRUE
|
||
|
include(FindPackageHandleStandardArgs)
|
||
|
find_package_handle_standard_args(VPS
|
||
|
DEFAULT_MSG
|
||
|
VPS_vps_LIBRARY
|
||
|
VPS_vps_INCLUDE_DIR)
|
||
|
|
||
|
if(VPS_FOUND)
|
||
|
set(VPS_vps_INCLUDE_DIRS "${VPS_vps_INCLUDE_DIR}")
|
||
|
set(VPS_INCLUDE_DIRS "${VPS_vps_INCLUDE_DIR}")
|
||
|
set(VPS_grviewer_INCLUDE_DIRS
|
||
|
"${VPS_vps_INCLUDE_DIR}"
|
||
|
"${VPS_grviewer_INCLUDE_DIR}")
|
||
|
set(VPS_LIBRARIES "${VPS_vps_LIBRARY}")
|
||
|
set(VPS_grviewer_LIBRARIES
|
||
|
"${VPS_vps_LIBRARY}"
|
||
|
"${VPS_grviewer_LIBRARY}")
|
||
|
mark_as_advanced(VPS_ROOT_DIR VPS_DIR)
|
||
|
endif()
|