# Find the Vision Labs Vehicle Engine SDK kit.
# Sets the usual variables expected for find_package scripts:
# VSDK_INCLUDE_DIRS - headers location
# VSDK_LIBRARIES - libraries to link against
# VSDK_FOUND - true if Vehicle SDK was found.

# Look for headers.
find_path(VSDK_INCLUDE_DIRS
	NAMES vsdk/VehicleEngine.h vsdk/VSDKStatus.h
	HINTS $ENV{VSDKDIR}
	PATHS ${VSDK_ROOT}
	PATH_SUFFIXES include
)

#find additional include path for fsdk headers
find_path(VSDK_ADDITIONAL_INCLUDE_DIRS
	NAMES fsdk/ISettingsProvider.h fsdk/Types.h
	HINTS $ENV{VSDKDIR}
	PATHS ${VSDK_ROOT}
	PATH_SUFFIXES include
)

#determine compiler vendor tag
if(MSVC10)
	set(VSDK_COMPILER_NAME vs2010)
elseif(MSVC11)
	set(VSDK_COMPILER_NAME vs2012)
elseif(MSVC12)
	set(VSDK_COMPILER_NAME vs2013)
elseif(MSVC14)
	set(VSDK_COMPILER_NAME vs2015)
elseif(MSVC15)
	set(VSDK_COMPILER_NAME vs2017)
elseif(CMAKE_COMPILER_IS_GNUCXX)
	set(VSDK_COMPILER_NAME gcc4)
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
	set(VSDK_COMPILER_NAME clang)
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
	set(VSDK_COMPILER_NAME clang)
else()
	message(SEND_ERROR "Unsupported compiler: ${VSDK_COMPILER_NAME}")
endif()

if(CMAKE_SIZEOF_VOID_P EQUAL 8)
	set(VSDK_TARGET_NAME x64)
else()
	set(VSDK_TARGET_NAME x86)
endif()

find_library(VSDK_LIBRARIES
	NAMES VehicleEngineSDK
	PATHS ${VSDK_ROOT}
	PATH_SUFFIXES lib/${VSDK_COMPILER_NAME}/${VSDK_TARGET_NAME}
	NO_DEFAULT_PATH)

if(VSDK_INCLUDE_DIRS AND VSDK_LIBRARIES)
	set(VSDK_FOUND TRUE)
endif()

message(STATUS "VSDK: VSDK_INCLUDE_DIRS = ${VSDK_INCLUDE_DIRS}. VSDK_LIBRARIES = ${VSDK_LIBRARIES}")

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(VSDK_FOUND VSDK_INCLUDE_DIRS VSDK_ADDITIONAL_INCLUDE_DIRS VSDK_LIBRARIES)

set(VSDK_INCLUDE_DIRS ${VSDK_INCLUDE_DIRS} ${VSDK_ADDITIONAL_INCLUDE_DIRS})

mark_as_advanced(
	VSDK_FOUND
	VSDK_INCLUDE_DIRS
	VSDK_LIBRARIES
)