1 # Copyright (C) 2018 Intel Corporation
3 # SPDX-License-Identifier: Apache-2.0
9 # You can specify the path to Inference Engine files in IE_ROOT_DIR
11 # This will define the following variables:
13 # InferenceEngine_FOUND - True if the system has the Inference Engine library
14 # InferenceEngine_INCLUDE_DIRS - Inference Engine include directories
15 # InferenceEngine_LIBRARIES - Inference Engine libraries
17 # and the following imported targets:
19 # IE::inference_engine - The Inference Engine library
22 macro(ext_message TRACE_LEVEL)
23 if (${TRACE_LEVEL} STREQUAL FATAL_ERROR)
24 if(InferenceEngine_FIND_REQUIRED)
25 message(FATAL_ERROR "${ARGN}")
26 elseif(NOT InferenceEngine_FIND_QUIETLY)
27 message(WARNING "${ARGN}")
30 elseif(NOT InferenceEngine_FIND_QUIETLY)
31 message(${TRACE_LEVEL} "${ARGN}")
35 set(InferenceEngine_FOUND FALSE)
37 if(TARGET IE::inference_engine)
38 set(InferenceEngine_FOUND TRUE)
39 get_target_property(InferenceEngine_INCLUDE_DIRS IE::inference_engine INTERFACE_INCLUDE_DIRECTORIES)
40 set(InferenceEngine_LIBRARIES IE::inference_engine)
45 if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
47 elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
49 elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i386")
54 set(THREADING "@THREADING@")
56 # check whether setvars.sh is sourced
57 if(NOT IE_ROOT_DIR AND (DEFINED ENV{InferenceEngine_DIR} OR InferenceEngine_DIR OR DEFINED ENV{INTEL_CVSDK_DIR}))
58 if (EXISTS "${InferenceEngine_DIR}")
59 # InferenceEngine_DIR manually set via command line params
60 set(IE_ROOT_DIR "${InferenceEngine_DIR}/..")
61 elseif (EXISTS "$ENV{InferenceEngine_DIR}")
62 # InferenceEngine_DIR manually set via env
63 set(IE_ROOT_DIR "$ENV{InferenceEngine_DIR}/..")
64 elseif (EXISTS "$ENV{INTEL_CVSDK_DIR}/inference_engine")
65 # if we installed DL SDK
66 set(IE_ROOT_DIR "$ENV{INTEL_CVSDK_DIR}/inference_engine")
67 elseif (EXISTS "$ENV{INTEL_CVSDK_DIR}/deployment_tools/inference_engine")
69 set(IE_ROOT_DIR "$ENV{INTEL_CVSDK_DIR}/deployment_tools/inference_engine")
77 if (NOT EXISTS "/etc/lsb-release")
78 execute_process(COMMAND find -L /etc/ -maxdepth 1 -type f -name *-release -exec cat {} \;
79 OUTPUT_VARIABLE release_data RESULT_VARIABLE result)
80 set(name_regex "NAME=\"([^ \"\n]*).*\"\n")
81 set(version_regex "VERSION=\"([0-9]+(\\.[0-9]+)?)[^\n]*\"")
83 #linux version detection using cat /etc/lsb-release
84 file(READ "/etc/lsb-release" release_data)
85 set(name_regex "DISTRIB_ID=([^ \n]*)\n")
86 set(version_regex "DISTRIB_RELEASE=([0-9]+(\\.[0-9]+)?)")
89 string(REGEX MATCH ${name_regex} name ${release_data})
90 set(os_name ${CMAKE_MATCH_1})
92 string(REGEX MATCH ${version_regex} version ${release_data})
93 set(os_name "${os_name} ${CMAKE_MATCH_1}")
96 ext_message(FATAL_ERROR "Cannot detect OS via reading /etc/*-release:\n ${release_data}")
99 if (NOT InferenceEngine_FIND_QUIETLY)
100 message (STATUS "/etc/*-release distrib: ${os_name}")
103 if (${os_name} STREQUAL "Ubuntu 14.04")
104 set(_OS_PATH "ubuntu_14.04/")
105 elseif (${os_name} STREQUAL "Ubuntu 16.04")
106 set(_OS_PATH "ubuntu_16.04/")
107 elseif (${os_name} STREQUAL "Ubuntu 18.04")
108 set(_OS_PATH "ubuntu_18.04/")
109 elseif (${os_name} STREQUAL "CentOS 7")
110 set(_OS_PATH "centos_7.4/")
111 elseif (${os_name} STREQUAL "poky 2.0")
112 set(_OS_PATH "ubuntu_16.04/")
113 elseif (${os_name} STREQUAL "poky 2.5")
114 set(_OS_PATH "ubuntu_18.04/")
115 elseif (${os_name} STREQUAL "Raspbian 9")
116 set(_OS_PATH "raspbian_9/")
118 ext_message(FATAL_ERROR "${os_name} is not supported. List of supported OS: Ubuntu 14.04, Ubuntu 16.04, Ubuntu 18.04, CentOS 7, poky 2.0, poky 2.5, Raspbian 9")
123 if(IE_INCLUDE_DIR AND NOT "${IE_ROOT_DIR}/include" EQUAL "${IE_INCLUDE_DIR}")
124 unset(IE_INCLUDE_DIR CACHE)
127 if(IE_SRC_DIR AND NOT "${IE_ROOT_DIR}/src" EQUAL "${IE_SRC_DIR}")
128 unset(IE_SRC_DIR CACHE)
131 if(IE_LIBRARY AND NOT "${IE_ROOT_DIR}/lib/${_OS_PATH}/${_ARCH}" EQUAL "${IE_LIBRARY}")
132 unset(IE_LIBRARY CACHE)
135 set(_IE_ROOT_INCLUDE_DIR "${IE_ROOT_DIR}/include")
136 set(_IE_ROOT_SRC_DIR "${IE_ROOT_DIR}/src")
137 set(_IE_ROOT_LIBRARY "${IE_ROOT_DIR}/lib/${_OS_PATH}/${_ARCH}")
139 find_path(IE_INCLUDE_DIR inference_engine.hpp "${_IE_ROOT_INCLUDE_DIR}")
140 find_path(IE_SRC_DIR extension "${_IE_ROOT_SRC_DIR}")
142 set(IE_LIB_DIR "${_IE_ROOT_LIBRARY}")
143 set(IE_LIB_REL_DIR "${IE_LIB_DIR}/Release")
144 set(IE_LIB_DBG_DIR "${IE_LIB_DIR}/Debug")
145 set(IE_EXTERNAL_DIR "${IE_ROOT_DIR}/external")
147 include(FindPackageHandleStandardArgs)
150 find_library(IE_RELEASE_LIBRARY inference_engine@IE_RELEASE_POSTFIX_WIN@ "${IE_LIB_REL_DIR}")
151 find_library(IE_DEBUG_LIBRARY inference_engine@IE_DEBUG_POSTFIX_WIN@ "${IE_LIB_DBG_DIR}")
152 find_package_handle_standard_args( InferenceEngine
153 FOUND_VAR INFERENCEENGINE_FOUND
154 REQUIRED_VARS IE_RELEASE_LIBRARY IE_DEBUG_LIBRARY IE_INCLUDE_DIR
155 FAIL_MESSAGE "Inference Engine cannot be found at ${_IE_ROOT_LIBRARY}. Please consult InferenceEgnineConfig.cmake module's help page.")
157 find_library(IE_LIBRARY inference_engine@IE_RELEASE_POSTFIX_LIN@ "${IE_LIB_DIR}")
158 find_package_handle_standard_args( InferenceEngine
159 FOUND_VAR INFERENCEENGINE_FOUND
160 REQUIRED_VARS IE_LIBRARY IE_INCLUDE_DIR
161 FAIL_MESSAGE "Inference Engine cannot be found at ${_IE_ROOT_LIBRARY}. Please consult InferenceEgnineConfig.cmake module's help page.")
163 if(INFERENCEENGINE_FOUND)
164 # to keep this line for successful execution in CMake 2.8
165 set(InferenceEngine_FOUND TRUE)
167 add_library(IE::inference_engine SHARED IMPORTED GLOBAL)
170 set_property(TARGET IE::inference_engine APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
171 set_property(TARGET IE::inference_engine APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
173 set_target_properties(IE::inference_engine PROPERTIES
174 IMPORTED_IMPLIB_RELEASE "${IE_RELEASE_LIBRARY}"
175 IMPORTED_IMPLIB_DEBUG "${IE_DEBUG_LIBRARY}"
176 MAP_IMPORTED_CONFIG_DEBUG Debug
177 MAP_IMPORTED_CONFIG_RELEASE Release
178 MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
179 INTERFACE_INCLUDE_DIRECTORIES "${IE_INCLUDE_DIR}")
181 set_target_properties(IE::inference_engine PROPERTIES
182 IMPORTED_LOCATION "${IE_LIBRARY}"
183 INTERFACE_INCLUDE_DIRECTORIES "${IE_INCLUDE_DIR}")
184 target_link_libraries(IE::inference_engine INTERFACE ${CMAKE_DL_LIBS})
187 set(InferenceEngine_INCLUDE_DIRS ${IE_INCLUDE_DIR})
188 set(InferenceEngine_LIBRARIES IE::inference_engine)
190 include("${IE_ROOT_DIR}/share/ie_parallel.cmake")
192 add_subdirectory(${IE_SRC_DIR}/extension EXCLUDE_FROM_ALL ie_cpu_extension)
193 add_library(IE::ie_cpu_extension ALIAS ie_cpu_extension)