152 lines
6.4 KiB
CMake
152 lines
6.4 KiB
CMake
# Copyright (C) 2018 Intel Corporation
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
# FindIE
|
|
# ------
|
|
#
|
|
# You can specify the path to Inference Engine files in IE_ROOT_DIR
|
|
#
|
|
# This will define the following variables:
|
|
#
|
|
# InferenceEngine_FOUND - True if the system has the Inference Engine library
|
|
# InferenceEngine_INCLUDE_DIRS - Inference Engine include directories
|
|
# InferenceEngine_LIBRARIES - Inference Engine libraries
|
|
#
|
|
# and the following imported targets:
|
|
#
|
|
# IE::inference_engine - The Inference Engine library
|
|
#
|
|
|
|
|
|
set(InferenceEngine_FOUND FALSE)
|
|
|
|
if(TARGET IE::inference_engine)
|
|
set(InferenceEngine_FOUND TRUE)
|
|
get_target_property(InferenceEngine_INCLUDE_DIRS IE::inference_engine INTERFACE_INCLUDE_DIRECTORIES)
|
|
set(InferenceEngine_LIBRARIES IE::inference_engine)
|
|
else()
|
|
if (WIN32)
|
|
set(_ARCH intel64)
|
|
else()
|
|
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
|
|
set(_ARCH intel64)
|
|
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i386")
|
|
set(_ARCH ia32)
|
|
endif()
|
|
endif()
|
|
|
|
# check whether setvars.sh is sourced
|
|
if(NOT IE_ROOT_DIR AND (DEFINED ENV{InferenceEngine_DIR} OR InferenceEngine_DIR OR DEFINED ENV{INTEL_CVSDK_DIR}))
|
|
if (EXISTS "${InferenceEngine_DIR}")
|
|
# InferenceEngine_DIR manually set via command line params
|
|
set(IE_ROOT_DIR "${InferenceEngine_DIR}/..")
|
|
elseif (EXISTS "$ENV{InferenceEngine_DIR}")
|
|
# InferenceEngine_DIR manually set via env
|
|
set(IE_ROOT_DIR "$ENV{InferenceEngine_DIR}/..")
|
|
elseif (EXISTS "$ENV{INTEL_CVSDK_DIR}/inference_engine")
|
|
# if we installed DL SDK
|
|
set(IE_ROOT_DIR "$ENV{INTEL_CVSDK_DIR}/inference_engine")
|
|
elseif (EXISTS "$ENV{INTEL_CVSDK_DIR}/deployment_tools/inference_engine")
|
|
# CV SDK is installed
|
|
set(IE_ROOT_DIR "$ENV{INTEL_CVSDK_DIR}/deployment_tools/inference_engine")
|
|
endif()
|
|
endif()
|
|
|
|
if(IE_ROOT_DIR)
|
|
if (WIN32)
|
|
set(_OS_PATH "")
|
|
else()
|
|
if (NOT EXISTS "/etc/lsb-release")
|
|
execute_process(COMMAND find /etc/ -maxdepth 1 -type f -name *-release -exec cat {} \;
|
|
OUTPUT_VARIABLE release_data RESULT_VARIABLE result)
|
|
set(name_regex "NAME=\"([^ \"\n]*).*\"\n")
|
|
set(version_regex "VERSION=\"([0-9]+(\\.[0-9]+)?)[^\n]*\"")
|
|
else()
|
|
#linux version detection using cat /etc/lsb-release
|
|
file(READ "/etc/lsb-release" release_data)
|
|
set(name_regex "DISTRIB_ID=([^ \n]*)\n")
|
|
set(version_regex "DISTRIB_RELEASE=([0-9]+(\\.[0-9]+)?)")
|
|
endif()
|
|
|
|
string(REGEX MATCH ${name_regex} name ${release_data})
|
|
set(os_name ${CMAKE_MATCH_1})
|
|
|
|
string(REGEX MATCH ${version_regex} version ${release_data})
|
|
set(os_name "${os_name} ${CMAKE_MATCH_1}")
|
|
|
|
if (NOT os_name)
|
|
message(FATAL_ERROR "Cannot detect OS via reading /etc/*-release:\n ${release_data}")
|
|
endif()
|
|
|
|
message (STATUS "/etc/*-release distrib: ${os_name}")
|
|
|
|
if (${os_name} STREQUAL "Ubuntu 14.04")
|
|
set(_OS_PATH "ubuntu_14.04/")
|
|
elseif (${os_name} STREQUAL "Ubuntu 16.04")
|
|
set(_OS_PATH "ubuntu_16.04/")
|
|
elseif (${os_name} STREQUAL "CentOS 7")
|
|
set(_OS_PATH "centos_7.4/")
|
|
elseif (${os_name} STREQUAL "poky 2.0")
|
|
set(_OS_PATH "ubuntu_16.04/")
|
|
else()
|
|
message(FATAL_ERROR "${os_name} is not supported. List of supported OS: Ubuntu 14.04, Ubuntu 16.04, CentOS 7")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
if(IE_INCLUDE_DIR AND NOT "${IE_ROOT_DIR}/include" EQUAL "${IE_INCLUDE_DIR}")
|
|
unset(IE_INCLUDE_DIR CACHE)
|
|
endif()
|
|
|
|
if(IE_LIBRARY AND NOT "${IE_ROOT_DIR}/lib/${_OS_PATH}/${_ARCH}" EQUAL "${IE_LIBRARY}")
|
|
unset(IE_LIBRARY CACHE)
|
|
endif()
|
|
|
|
set(_IE_ROOT_INCLUDE_DIR "${IE_ROOT_DIR}/include")
|
|
set(_IE_ROOT_LIBRARY "${IE_ROOT_DIR}/lib/${_OS_PATH}/${_ARCH}")
|
|
|
|
|
|
find_path(IE_INCLUDE_DIR inference_engine.hpp "${_IE_ROOT_INCLUDE_DIR}")
|
|
#message("InferenceEngine_INCLUDE_DIR=${IE_INCLUDE_DIR}:${_IE_ROOT_INCLUDE_DIR}")
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
if (WIN32)
|
|
find_library(IE_RELEASE_LIBRARY inference_engine "${_IE_ROOT_LIBRARY}/Release")
|
|
find_library(IE_DEBUG_LIBRARY inference_engine "${_IE_ROOT_LIBRARY}/Debug")
|
|
find_package_handle_standard_args( IE
|
|
REQUIRED_VARS IE_RELEASE_LIBRARY IE_DEBUG_LIBRARY IE_INCLUDE_DIR
|
|
FAIL_MESSAGE "Inference Engine cannot be found at ${_IE_ROOT_LIBRARY}. Please consult InferenceEgnineConfig.cmake module's help page.")
|
|
else()
|
|
find_library(IE_LIBRARY inference_engine "${_IE_ROOT_LIBRARY}")
|
|
find_package_handle_standard_args( IE
|
|
REQUIRED_VARS IE_LIBRARY IE_INCLUDE_DIR
|
|
FAIL_MESSAGE "Inference Engine cannot be found at ${_IE_ROOT_LIBRARY}. Please consult InferenceEgnineConfig.cmake module's help page.")
|
|
endif()
|
|
if(IE_FOUND)
|
|
add_library(IE::inference_engine SHARED IMPORTED GLOBAL)
|
|
|
|
if (WIN32)
|
|
set_property(TARGET IE::inference_engine APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
|
|
set_property(TARGET IE::inference_engine APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
|
|
|
set_target_properties(IE::inference_engine PROPERTIES
|
|
IMPORTED_IMPLIB_RELEASE "${IE_RELEASE_LIBRARY}"
|
|
IMPORTED_IMPLIB_DEBUG "${IE_DEBUG_LIBRARY}"
|
|
MAP_IMPORTED_CONFIG_DEBUG Debug
|
|
MAP_IMPORTED_CONFIG_RELEASE Release
|
|
MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
|
|
INTERFACE_INCLUDE_DIRECTORIES "${IE_INCLUDE_DIR}")
|
|
else()
|
|
set_target_properties(IE::inference_engine PROPERTIES
|
|
IMPORTED_LOCATION "${IE_LIBRARY}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${IE_INCLUDE_DIR}")
|
|
target_link_libraries(IE::inference_engine INTERFACE ${CMAKE_DL_LIBS})
|
|
endif()
|
|
|
|
set(InferenceEngine_INCLUDE_DIRS ${IE_INCLUDE_DIR})
|
|
set(InferenceEngine_LIBRARIES IE::inference_engine)
|
|
set(InferenceEngine_FOUND TRUE)
|
|
endif()
|
|
endif()
|
|
|