Merge commit 'c1d65c7f1f6836d4fe961c0a54ea11ff8fdfc62d' as 'cmake'
This commit is contained in:
304
cmake/FindVPS.cmake
Normal file
304
cmake/FindVPS.cmake
Normal file
@@ -0,0 +1,304 @@
|
||||
# - 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()
|
||||
Reference in New Issue
Block a user