# Find the Vision Labs TrackEngine SDK. # Sets the usual variables expected for find_package scripts: # TSDK_INCLUDE_DIRS - headers location # TSDK_LIBRARIES - libraries to link against # TSDK_FOUND - true if TrackEngine SDK was found. # This is the directory where the TrackEngine SDK is located. # By default TSDKDIR environment variable value is taken. set(TSDK_ROOT "$ENV{TSDKDIR}" CACHE PATH "Vision Labs TrackEngine SDK root directory.") # Look for headers. find_path(TSDK_INCLUDE_DIRS NAMES tsdk/ITrackEngine.h tsdk/ITrackCallbacks tsdk/IStream.h tsdk/TrackEngineDefs.h tsdk/TrackEngineTypes.h HINTS $ENV{TSDKDIR} PATHS ${TSDK_ROOT} PATH_SUFFIXES include) #message(STATUS "TSDK: TSDK_INCLUDE_DIRS = ${TSDK_INCLUDE_DIRS}.") # Determine compiler version and architecture. # ios has no architechture/compiler branching, because only can only use clang # and if you need multiple architechtures there still compiled into single universal binary if(MSVC10) set(TSDK_COMPILER_NAME vs2010) elseif(MSVC11) set(TSDK_COMPILER_NAME vs2012) elseif(MSVC12) set(TSDK_COMPILER_NAME vs2013) elseif(MSVC14) set(TSDK_COMPILER_NAME vs2015) elseif(CMAKE_COMPILER_IS_GNUCXX) set(TSDK_COMPILER_NAME gcc4) elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") set(TSDK_COMPILER_NAME clang) elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") set(TSDK_COMPILER_NAME clang) else() message(SEND_ERROR "Unsupported compiler: ${TSDK_COMPILER_NAME}") endif() if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(TSDK_TARGET_NAME x64) else() set(TSDK_TARGET_NAME x86) endif() # What version of TrackEngine SDK to use. if(ANDROID) set(TSDK_LIB_PREFIX ${TSDK_COMPILER_NAME}/${ANDROID_ABI}) else() set(TSDK_LIB_PREFIX ${TSDK_COMPILER_NAME}/${TSDK_TARGET_NAME}) endif() # List of all SDK libraries. set(TSDK_LIB_NAMES TrackEngineSDK) set(TSDK_LIB_PATH_SUFFIX lib/${TSDK_LIB_PREFIX}) set(TSDK_BIN_PATH_SUFFIX bin/${TSDK_LIB_PREFIX}) set(TSDK_LIB) foreach(LIB ${TSDK_LIB_NAMES}) set(LIB_PATH ${LIB}-NOTFOUND) find_library(LIB_PATH NAMES ${LIB} HINTS $ENV{TSDKDIR} PATHS ${TSDK_ROOT} PATH_SUFFIXES ${TSDK_LIB_PATH_SUFFIX} ${TSDK_BIN_PATH_SUFFIX} NO_DEFAULT_PATH) list(APPEND TSDK_LIB ${LIB_PATH}) endforeach() # Find debug libraries (may be missing in your distribution). set(TSDK_LIBD) foreach(LIB ${TSDK_LIB_NAMES}) set(LIB_PATH ${LIB}-NOTFOUND) find_library(LIB_PATH NAMES ${LIB}d HINTS $ENV{TSDKDIR} PATHS ${TSDK_ROOT} PATH_SUFFIXES ${TSDK_LIB_PATH_SUFFIX} ${TSDK_BIN_PATH_SUFFIX} NO_DEFAULT_PATH) list(APPEND TSDK_LIBD ${LIB_PATH}) endforeach() # Support the REQUIRED and QUIET arguments, and set TSDK_FOUND if found. include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(TSDK DEFAULT_MSG TSDK_INCLUDE_DIRS) set(TSDK_LIBRARIES) if(TSDK_FOUND) if(TSDK_LIB) foreach(LIB ${TSDK_LIB}) list(APPEND TSDK_LIBRARIES optimized ${LIB}) endforeach() message(STATUS "TSDK [INFO]: Release libraries are available.") elseif(TSDK_LIBD) message(STATUS "TSDK [WARN]: Release libraries are NOT available.") else() message(FATAL_ERROR "TSDK [ERROR]: TrackEngine libraries are NOT available.") endif() if(TSDK_LIBD) foreach(LIB ${TSDK_LIBD}) list(APPEND TSDK_LIBRARIES debug ${LIB}) endforeach() message(STATUS "TSDK [INFO]: Debug libraries are available.") elseif(TSDK_LIB) message(STATUS "TSDK [WARN]: Debug libraries are NOT available.") else() message(FATAL_ERROR "TSDK [ERROR]: TrackEngine libraries are NOT available.") endif() message(STATUS "TSDK [INFO]: Found TDK in ${TSDK_ROOT}.") else() message(STATUS "TSDK [WARN]: TrackEngineSDK was NOT found.") endif(TSDK_FOUND) #message(STATUS "TSDK [DEBUG]: TSDK_LIBRARIES = ${TSDK_LIBRARIES}.") # Don't show in GUI mark_as_advanced( TSDK_INCLUDE_DIRS TSDK_LIBRARIES TSDK_COMPILER_NAME TSDK_TARGET_NAME TSDK_LIB_PREFIX TSDK_LIB_NAMES TSDK_LIB_NAMESD TSDK_LIB TSDK_LIBD LIB_PATH )