8647ab0 update help 8c434a7 have luatargets.cmake actually try building (parsing) the lua scripts abbbe59 update rendered help 4226520 remove unnecessary whitespace fce2353 fix some leftover juggler 2.2 bits in the juggler 3.0 finder 072dda4 fix libusb finder on windows 3bf666c be sure to find all needed boost libraries for juggler 3.0 3e0d529 handle windows names for juggler 3.0 libraries 6cb00f4 handle config types in dashboard scripts 449fe46 Improve vrpn/quatlib finders to find the default locations on Windows 450a051 improve launcher templates e8e1aee Fix the gdb finder 099d79f Fix finding OSG in some cases 2d5319f Update help files 9567cf8 Improve glove5dt finder 73d4de3 Find git.cmd on windows cef7140 Silly bug in simpler juggler finder 5706470 Improve juggler finder 2f6f3ef Fix gdb finder ae37c1a Clean up juggler finding 9416490 Improve gdb finder d30789e Merge changes from finding juggler 2.2 into 3.0 00d407e Don't force juggler into debug mode 6668496 No more nspr on windows 737b8e2 Fix boost finding in VPR 2.2 c530fa3 Don't need a separate cppdom module for juggler 30 c10441c Merge branch 'master' of https://github.com/bnewendorp/cmake-modules into bnewendorp-master 0485c6c Update rendered help c4c1ea8 Improve formatting of copyright notice when rendered to html 58ba978 Add reference to help in the readme 2052efb Generate text too, and rename e3a0f3f Add help files and aboutthesemodules dummy module dab6182 GetGitRevisionDescription: Fix HEAD hash finding in case of a detached HEAD checkout 278658c Fix a wee bug in the gdb finder f0ac2bc Launchers now check version of GDB before throwing options at it. Fixes --debugger option on Macs. 6e66227 find gdb 1cbceb8 rename luatargets to filecopytargets, and forward calls from the old name 0bdd129 add the upcoming boost 1.46 86cfbb4 make boost test targets succeed on macs with homebrew c290bbe Merge boost fix from pre-2.8.4 cc24a0d Improve dcubed finder and use nested targets 69b25b4 Clean up parasolid nested target f467bb0 Don't force juggler into debug mode 250c5f0 Find boost 1.45 b15faa5 Add HIDAPI and libusb1 7236f4f Add OptionRequires module 7032b46 Improvements to cutil 9f0e966 Tweak to boost test c60a1ea Added Juggler 3.0 files git-subtree-dir: cmake git-subtree-split: 8647ab061587c8c0fd7343b77b3e3bd367da0180
454 lines
11 KiB
CMake
454 lines
11 KiB
CMake
# - try to find JTTK library
|
|
#
|
|
# JTTK_LIBRARY_DIRS, library search path
|
|
# JTTK_INCLUDE_DIRS, include search path
|
|
# JTTK_{component}_LIBRARY, the library to link against
|
|
# JTTK_ENVIRONMENT, environment variables to set
|
|
# JTTK_RUNTIME_LIBRARY_DIRS
|
|
# JTTK_FOUND, If false, do not try to use this library.
|
|
#
|
|
# If you have license issues, you might run this command on each JtTk-using target:
|
|
# jttk_stamp_binary(<targetname>)
|
|
#
|
|
# 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:
|
|
# JTTK_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(ListCombinations)
|
|
include(CheckVersion)
|
|
include(GetDirectoryList)
|
|
include(PrefixListGlob)
|
|
include(GetCompilerInfoString)
|
|
if(WIN32)
|
|
include(ProgramFilesGlob)
|
|
endif()
|
|
|
|
set(JTTK_ROOT_DIR
|
|
"${JTTK_ROOT_DIR}"
|
|
CACHE
|
|
PATH
|
|
"Root directory to search for JtTk")
|
|
|
|
if(NOT JTTK_CUSTOMER_ID)
|
|
set(JTTK_CUSTOMER_ID "$ENV{JTTK_CUSTOMER_ID}")
|
|
endif()
|
|
|
|
set(JTTK_CUSTOMER_ID
|
|
"${JTTK_CUSTOMER_ID}"
|
|
CACHE
|
|
STRING
|
|
"JtTk customer ID, to place in the environment")
|
|
|
|
|
|
get_filename_component(_jttk_mod_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
|
|
|
if(NOT BITS)
|
|
if(CMAKE_SIZEOF_VOID_P MATCHES "8")
|
|
set(BITS 64)
|
|
else()
|
|
set(BITS 32)
|
|
endif()
|
|
endif()
|
|
|
|
set(JTTK_ENVIRONMENT "JTTK_DEV_PLATFORM=${BITS}")
|
|
if(JTTK_CUSTOMER_ID)
|
|
list(APPEND JTTK_ENVIRONMENT "JTTK_CUSTOMER_ID=${JTTK_CUSTOMER_ID}")
|
|
endif()
|
|
|
|
if(WIN32 AND MSVC)
|
|
if(MSVC90)
|
|
set(VC_VER vc9)
|
|
set(VC_VER_LONG vc90)
|
|
elseif(MSVC80)
|
|
set(VC_VER vc8)
|
|
set(VC_VER_LONG vc80)
|
|
elseif(MSVC71)
|
|
set(VC_VER vc71)
|
|
set(VC_VER_LONG vc71)
|
|
endif()
|
|
|
|
if(BITS EQUAL 32)
|
|
set(PLATFORM win32)
|
|
else()
|
|
set(PLATFORM win64)
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT "${3RDPARTYROOT}")
|
|
set(3RDPARTYROOT ${CMAKE_SOURCE_DIR}/third-party)
|
|
endif()
|
|
|
|
set(libsearchdirs)
|
|
set(includesearchdirs)
|
|
set(_jttklibs)
|
|
set(_libsuffixes)
|
|
if(WIN32)
|
|
program_files_fallback_glob(_dirs "/UGS/JTOpenToolkit/*/dev")
|
|
program_files_fallback_glob(_dirs2 "/Siemens/JTOpenToolkit/*/dev")
|
|
list(APPEND _dirs ${_dirs2})
|
|
|
|
file(TO_CMAKE_PATH "$ENV{JTTK_DEV_PATH}" _envloc)
|
|
list(APPEND _dirs "${_envloc}")
|
|
|
|
if(MSVC90)
|
|
prefix_list_glob(_vc9_libdirs
|
|
"/lib/win_${BITS}vc9/JtTk*.dll"
|
|
"${JTTK_ROOT_DIR}"
|
|
${_dirs})
|
|
list(APPEND _jttklibs ${_vc9_libdirs})
|
|
prefix_list_glob(_vc9_libdirs
|
|
"/lib/win_${BITS}_vc9/JtTk*.dll"
|
|
"${JTTK_ROOT_DIR}"
|
|
${_dirs})
|
|
list(APPEND _jttklibs ${_vc9_libdirs})
|
|
list(APPEND _libsuffixes "/lib/win_${BITS}vc9" "/lib/win_${BITS}_vc9")
|
|
endif()
|
|
if(MSVC80)
|
|
prefix_list_glob(_vc8_libdirs
|
|
"/lib/win_${BITS}/JtTk*.dll"
|
|
"${JTTK_ROOT_DIR}"
|
|
${_dirs})
|
|
list(APPEND _jttklibs ${_vc8_libdirs})
|
|
list(APPEND _libsuffixes "/lib/win_${BITS}")
|
|
endif()
|
|
if(MSVC71)
|
|
prefix_list_glob(_vc71_libdirs
|
|
"/lib/win_${BITS}vs7/JtTk*.dll"
|
|
"${dirs}")
|
|
list(APPEND _jttklibs "${_vc71_libdirs}")
|
|
list(APPEND _libsuffixes "/lib/win_${BITS}vs7")
|
|
endif()
|
|
|
|
elseif(UNIX)
|
|
|
|
get_gcc_version(_gccver)
|
|
if("${_gccver}" VERSION_LESS "4.1.0")
|
|
set(_compiler "")
|
|
else()
|
|
set(_compiler "_gcc41")
|
|
endif()
|
|
|
|
string(TOLOWER "${CMAKE_SYSTEM_NAME}" _sysname)
|
|
file(TO_CMAKE_PATH "$ENV{JTTK_DEV_PATH}" _envloc)
|
|
prefix_list_glob(_jttklibs
|
|
"lib/${_sysname}_${BITS}${_compiler}/libJtTk*"
|
|
"/usr/"
|
|
"/usr/local/"
|
|
"/usr/local/siemens/"
|
|
"/usr/local/ugs/")
|
|
prefix_list_glob(_jttklibs2
|
|
"dev/lib/${_sysname}_${BITS}${_compiler}/libJtTk*"
|
|
"/usr/"
|
|
"/usr/local/"
|
|
"/usr/local/siemens/"
|
|
"/usr/local/ugs/"
|
|
"${_envloc}/")
|
|
list(APPEND _jttklibs ${_jttklibs2})
|
|
|
|
list(APPEND _libsuffixes "/lib/${_sysname}_${BITS}${_compiler}")
|
|
endif()
|
|
|
|
foreach(_lib ${_jttklibs})
|
|
string(REGEX MATCH "JtTk[0-9][0-9]" _jttkver "${_lib}")
|
|
if(_jttkver)
|
|
string(REGEX
|
|
REPLACE
|
|
"JtTk([0-9])([0-9])"
|
|
"\\1.\\2"
|
|
_verstd
|
|
"${_jttkver}")
|
|
string(REGEX
|
|
REPLACE
|
|
"JtTk([0-9])([0-9])"
|
|
"\\1\\2"
|
|
_vernodot
|
|
"${_jttkver}")
|
|
endif()
|
|
check_version(_result JtTk "${_verstd}")
|
|
if(_result)
|
|
get_filename_component(_libpath "${_lib}" PATH)
|
|
list(APPEND JTTK_JTTK_VERSIONS ${_vernodot})
|
|
list(APPEND JTTK_DEV_PATHS "${_libpath}")
|
|
else()
|
|
#message(STATUS "Found JtTk version ${ver}, does not meet requirements")
|
|
endif()
|
|
endforeach()
|
|
|
|
if(JTTK_JTTK_VERSIONS)
|
|
list(SORT JTTK_JTTK_VERSIONS)
|
|
list(REVERSE JTTK_JTTK_VERSIONS)
|
|
endif()
|
|
|
|
###
|
|
# Configure JtTk
|
|
###
|
|
|
|
###
|
|
# Find the link library
|
|
###
|
|
list_combinations(names PREFIXES "JtTk" SUFFIXES ${JTTK_JTTK_VERSIONS})
|
|
find_library(JTTK_JtTk_LIBRARY
|
|
NAMES
|
|
${names}
|
|
HINTS
|
|
${JTTK_DEV_PATHS}
|
|
PATH_SUFFIXES
|
|
${_libsuffixes})
|
|
set(JTTK_LIBRARY "${JTTK_JtTk_LIBRARY}")
|
|
set(JTTK_LIBRARIES "${JTTK_JtTk_LIBRARY}")
|
|
|
|
###
|
|
# Prepare for the rest of our search based off of where we found the link library
|
|
###
|
|
get_filename_component(JTTK_LIBRARY_DIR "${JTTK_LIBRARY}" PATH)
|
|
get_filename_component(JTTK_DEV_PATH
|
|
"${JTTK_LIBRARY_DIR}/../.."
|
|
ABSOLUTE)
|
|
|
|
# Grab JtTk version
|
|
string(REGEX MATCH "JtTk[0-9]*" _ver "${JTTK_LIBRARY}")
|
|
string(REGEX
|
|
REPLACE
|
|
"JtTk([0-9])([0-9])"
|
|
"\\1.\\2"
|
|
JTTK_JTTK_VERSION
|
|
"${_ver}")
|
|
string(REGEX
|
|
REPLACE
|
|
"JtTk([0-9])([0-9])"
|
|
"\\1\\2"
|
|
JTTK_JTTK_VERNODOT
|
|
"${_ver}")
|
|
|
|
# Grab JT version
|
|
file(GLOB _jtdll "${JTTK_LIBRARY_DIR}/*JtBrep*")
|
|
string(REGEX MATCH "JtBrep[0-9]*" _jtver "${_jtdll}")
|
|
string(REGEX
|
|
REPLACE
|
|
"JtBrep([0-9])([0-9])"
|
|
"\\1\\2"
|
|
JTTK_JT_VERNODOT
|
|
"${_jtver}")
|
|
|
|
# Setup dev path
|
|
get_filename_component(JTTK_DEV_PATH
|
|
"${JTTK_LIBRARY_DIR}/../../"
|
|
ABSOLUTE)
|
|
|
|
list(APPEND JTTK_ENVIRONMENT "JTTK_DEV_PATH=${JTTK_DEV_PATH}")
|
|
set(ENV{JTTK_DEV_PLATFORM} ${BITS})
|
|
set(ENV{JTTK_DEV_PATH} "${JTTK_DEV_PATH}")
|
|
|
|
set(_deps_libs)
|
|
set(_deps_includes)
|
|
set(_deps_check)
|
|
|
|
###
|
|
# Find the headers
|
|
###
|
|
find_path(JTTK_INCLUDE_DIR
|
|
JtTk/JtkEntity.h
|
|
HINTS
|
|
${JTTK_DEV_PATH}/include)
|
|
|
|
if(WIN32)
|
|
###
|
|
# Find the DLL's
|
|
###
|
|
|
|
# Find the versioned DLL's
|
|
foreach(dll Jt JtBrep JtLibra JtSimp JtSupt JtXTBrep ParaSupt)
|
|
find_file(JTTK_${dll}_DLL
|
|
NAMES
|
|
"${dll}${JTTK_JT_VERNODOT}.dll"
|
|
HINTS
|
|
"${JTTK_LIBRARY_DIR}")
|
|
list(APPEND JTTK_DLLS ${JTTK_${dll}_DLL})
|
|
mark_as_advanced(JTTK_${dll}_DLL)
|
|
endforeach()
|
|
|
|
# Find the unversioned DLL's and the matching JtTk dll
|
|
foreach(dll psbodyshop pskernel psxttoolkit JtTk${JTTK_JTTK_VERNODOT})
|
|
list_combinations(names PREFIXES "${dll}" SUFFIXES ".dll")
|
|
find_file(JTTK_${dll}_DLL
|
|
NAMES
|
|
${names}
|
|
HINTS
|
|
"${JTTK_LIBRARY_DIR}")
|
|
list(APPEND JTTK_DLLS ${JTTK_${dll}_DLL})
|
|
mark_as_advanced(JTTK_${dll}_DLL)
|
|
endforeach()
|
|
|
|
get_directory_list(JTTK_RUNTIME_LIBRARY_DIRS ${JTTK_DLLS})
|
|
|
|
elseif(UNIX)
|
|
|
|
foreach(_lib Jt JtBrep JtLibra JtSimp JtSupt JtXTBrep ParaSupt)
|
|
find_library(JTTK_${_lib}_LIBRARY
|
|
NAMES
|
|
"${_lib}${JTTK_JT_VERNODOT}"
|
|
HINTS
|
|
"${JTTK_LIBRARY_DIR}")
|
|
list(APPEND _deps_libs "${JTTK_${_lib}_LIBRARY}")
|
|
list(APPEND _deps_check JTTK_${_lib}_LIBRARY)
|
|
mark_as_advanced(JTTK_${_lib}_LIBRARY)
|
|
endforeach()
|
|
|
|
# Find the unversioned libs
|
|
foreach(_lib psbodyshop pskernel psxttoolkit eaiunicode)
|
|
find_library(JTTK_${_lib}_LIBRARY
|
|
NAMES
|
|
${_lib}
|
|
HINTS
|
|
"${JTTK_LIBRARY_DIR}")
|
|
list(APPEND _deps_libs "${JTTK_${_lib}_LIBRARY}")
|
|
list(APPEND _deps_check JTTK_${_lib}_LIBRARY)
|
|
mark_as_advanced(JTTK_${_lib}_LIBRARY)
|
|
endforeach()
|
|
|
|
# Find stamper
|
|
#list(APPEND _deps_check JTTK_KEYS)
|
|
|
|
find_program(JTTK_STAMP_COMMAND
|
|
stampkey
|
|
HINTS
|
|
"${JTTK_DEV_PATH}/../bin")
|
|
list(APPEND _deps_check JTTK_STAMP_COMMAND)
|
|
|
|
find_program(JTTK_STAMP_PLATFORM_COMMAND
|
|
stampkey
|
|
HINTS
|
|
"${JTTK_DEV_PATH}/../bin/${_sysname}")
|
|
list(APPEND _deps_check JTTK_STAMP_PLATFORM_COMMAND)
|
|
|
|
|
|
if("${JTTK_KEYS}" STREQUAL "${JTTK_KEYS_AUTO}" OR NOT JTTK_KEYS)
|
|
find_file(JTTK_INSTALL_LOG
|
|
install.log
|
|
HINTS
|
|
"${JTTK_DEV_PATH}/.."
|
|
NO_DEFAULT_PATH)
|
|
#list(APPEND _deps_check JTTK_INSTALL_LOG)
|
|
mark_as_advanced(JTTK_INSTALL_LOG)
|
|
|
|
if(JTTK_INSTALL_LOG)
|
|
file(READ "${JTTK_INSTALL_LOG}" _log)
|
|
string(REGEX MATCHALL "..key ([0-9A-Z])+" _keylines "${_log}")
|
|
set(JTTK_KEYS)
|
|
foreach(_keyline ${_keylines})
|
|
string(REGEX
|
|
REPLACE
|
|
"..key (([0-9A-Z])+)$"
|
|
"\\1"
|
|
_key
|
|
"${_keyline}")
|
|
list(APPEND JTTK_KEYS "${_key}")
|
|
message(STATUS "Found JtTk key: ${_key}")
|
|
endforeach()
|
|
set(JTTK_KEYS
|
|
"${JTTK_KEYS}"
|
|
CACHE
|
|
STRING
|
|
"A semi-colon separated list of JtTk keys to stamp on the binaries."
|
|
FORCE)
|
|
set(JTTK_KEYS_AUTO
|
|
"${JTTK_KEYS}"
|
|
CACHE
|
|
INTERNAL
|
|
"The keys we auto-detected"
|
|
FORCE)
|
|
endif()
|
|
else()
|
|
foreach(_key ${JTTK_KEYS})
|
|
message(STATUS "Using cached JtTk key: ${_key}")
|
|
endforeach()
|
|
set(JTTK_KEYS
|
|
"${JTTK_KEYS}"
|
|
CACHE
|
|
STRING
|
|
"A semi-colon separated list of JtTk keys to stamp on the binaries.")
|
|
endif()
|
|
|
|
# Find dependencies
|
|
find_library(JTTK_MATH_LIBRARY m)
|
|
mark_as_advanced(JTTK_MATH_LIBRARY)
|
|
list(APPEND _deps_check JTTK_MATH_LIBRARY)
|
|
list(APPEND _deps_libs ${JTTK_MATH_LIBRARY})
|
|
|
|
if(NOT X11_FOUND)
|
|
find_package(X11)
|
|
endif()
|
|
list(APPEND _deps_check X11_FOUND)
|
|
list(APPEND _deps_libs ${X11_LIBRARIES})
|
|
list(APPEND _deps_includes ${X11_INCLUDE_DIRS})
|
|
|
|
if(NOT OPENGL_FOUND)
|
|
find_package(OpenGL)
|
|
endif()
|
|
list(APPEND _deps_check OPENGL_FOUND)
|
|
list(APPEND _deps_libs ${OPENGL_LIBRARIES})
|
|
list(APPEND _deps_includes ${OPENGL_INCLUDE_DIR})
|
|
|
|
if(NOT THREADS_FOUND)
|
|
find_package(Threads)
|
|
endif()
|
|
list(APPEND _deps_check THREADS_FOUND)
|
|
list(APPEND _deps_libs ${CMAKE_THREAD_LIBS_INIT})
|
|
|
|
get_directory_list(JTTK_RUNTIME_LIBRARY_DIRS ${_deps_libs})
|
|
endif()
|
|
|
|
# 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(JtTk
|
|
DEFAULT_MSG
|
|
JTTK_JtTk_LIBRARY
|
|
JTTK_CUSTOMER_ID
|
|
JTTK_INCLUDE_DIR
|
|
${_deps_check})
|
|
|
|
if(JTTK_FOUND)
|
|
set(JTTK_INCLUDE_DIRS "${JTTK_INCLUDE_DIR}" ${_deps_includes})
|
|
set(JTTK_LIBRARIES "${JTTK_LIBRARY}" ${_deps_libs})
|
|
mark_as_advanced(JTTK_CUSTOMER_ID JTTK_ROOT_DIR)
|
|
endif()
|
|
|
|
function(jttk_stamp_binary _target)
|
|
if(UNIX)
|
|
get_target_property(_binary "${_target}" LOCATION)
|
|
configure_file("${_jttk_mod_dir}/FindJtTk.stampkey.cmake.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${_target}.stampkey.cmake"
|
|
@ONLY)
|
|
add_custom_command(TARGET
|
|
"${_target}"
|
|
POST_BUILD
|
|
COMMAND
|
|
"${CMAKE_COMMAND}"
|
|
-P
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${_target}.stampkey.cmake"
|
|
COMMENT
|
|
"Stamping executable ${_binary} with JtTk keys..."
|
|
VERBATIM)
|
|
endif()
|
|
endfunction()
|
|
|
|
mark_as_advanced(JTTK_JtTk_LIBRARY
|
|
JTTK_INCLUDE_DIR
|
|
JTTK_KEYS
|
|
JTTK_STAMP_COMMAND
|
|
JTTK_STAMP_PLATFORM_COMMAND)
|