1 # Copyright (C) 2018-2019 Intel Corporation
2 # SPDX-License-Identifier: Apache-2.0
8 # You can specify the path to Inference Engine files in IE_ROOT_DIR
10 # This will define the following variables:
12 # InferenceEngine_FOUND - True if the system has the Inference Engine library
13 # InferenceEngine_INCLUDE_DIRS - Inference Engine include directories
14 # InferenceEngine_LIBRARIES - Inference Engine libraries
16 # and the following imported targets:
18 # IE::inference_engine - The Inference Engine library
21 macro(ext_message TRACE_LEVEL)
22 if (${TRACE_LEVEL} STREQUAL FATAL_ERROR)
23 if(InferenceEngine_FIND_REQUIRED)
24 message(FATAL_ERROR "${ARGN}")
25 elseif(NOT InferenceEngine_FIND_QUIETLY)
26 message(WARNING "${ARGN}")
29 elseif(NOT InferenceEngine_FIND_QUIETLY)
30 message(${TRACE_LEVEL} "${ARGN}")
34 set(InferenceEngine_FOUND FALSE)
36 if(TARGET IE::inference_engine)
37 set(InferenceEngine_FOUND TRUE)
38 get_target_property(InferenceEngine_INCLUDE_DIRS IE::inference_engine INTERFACE_INCLUDE_DIRECTORIES)
39 set(InferenceEngine_LIBRARIES IE::inference_engine)
44 string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} _ARCH)
45 if(_ARCH STREQUAL "x86_64" OR _ARCH STREQUAL "amd64") # Windows detects Intel's 64-bit CPU as AMD64
47 elseif(_ARCH STREQUAL "i386")
52 set(THREADING "@THREADING@")
54 # check whether setvars.sh is sourced
55 if(NOT IE_ROOT_DIR AND (DEFINED ENV{InferenceEngine_DIR} OR InferenceEngine_DIR OR DEFINED ENV{INTEL_OPENVINO_DIR}))
56 if (EXISTS "${InferenceEngine_DIR}")
57 # InferenceEngine_DIR manually set via command line params
58 set(IE_ROOT_DIR "${InferenceEngine_DIR}/..")
59 elseif (EXISTS "$ENV{InferenceEngine_DIR}")
60 # InferenceEngine_DIR manually set via env
61 set(IE_ROOT_DIR "$ENV{InferenceEngine_DIR}/..")
62 elseif (EXISTS "$ENV{INTEL_OPENVINO_DIR}/inference_engine")
63 # if we installed DL SDK
64 set(IE_ROOT_DIR "$ENV{INTEL_OPENVINO_DIR}/inference_engine")
65 elseif (EXISTS "$ENV{INTEL_OPENVINO_DIR}/deployment_tools/inference_engine")
67 set(IE_ROOT_DIR "$ENV{INTEL_OPENVINO_DIR}/deployment_tools/inference_engine")
72 ext_message(FATAL_ERROR "inference_engine root directory is not found")
75 find_path(IE_INCLUDE_DIR inference_engine.hpp "${IE_ROOT_DIR}/include" NO_DEFAULT_PATH)
76 find_path(IE_SRC_DIR extension "${IE_ROOT_DIR}/src" NO_DEFAULT_PATH)
78 set(IE_LIB_DIR "${IE_ROOT_DIR}/lib/${_ARCH}")
79 set(IE_LIB_REL_DIR "${IE_LIB_DIR}/Release")
80 set(IE_LIB_DBG_DIR "${IE_LIB_DIR}/Debug")
82 include(FindPackageHandleStandardArgs)
85 find_library(IE_RELEASE_LIBRARY inference_engine@IE_RELEASE_POSTFIX_WIN@ "${IE_LIB_REL_DIR}" NO_DEFAULT_PATH)
87 find_library(IE_RELEASE_LIBRARY inference_engine@IE_RELEASE_POSTFIX_MAC@ "${IE_LIB_DIR}" NO_DEFAULT_PATH)
89 find_library(IE_RELEASE_LIBRARY inference_engine@IE_RELEASE_POSTFIX_LIN@ "${IE_LIB_DIR}" NO_DEFAULT_PATH)
92 find_package_handle_standard_args( InferenceEngine
93 FOUND_VAR INFERENCEENGINE_FOUND
94 REQUIRED_VARS IE_RELEASE_LIBRARY IE_INCLUDE_DIR
95 FAIL_MESSAGE "Some of mandatory Inference Engine components are not found. Please consult InferenceEgnineConfig.cmake module's help page.")
97 if(INFERENCEENGINE_FOUND)
98 # to keep this line for successful execution in CMake 2.8
99 set(InferenceEngine_FOUND TRUE)
101 add_library(IE::inference_engine SHARED IMPORTED GLOBAL)
104 set_target_properties(IE::inference_engine PROPERTIES
105 IMPORTED_CONFIGURATIONS RELEASE
106 IMPORTED_IMPLIB_RELEASE "${IE_RELEASE_LIBRARY}"
107 MAP_IMPORTED_CONFIG_RELEASE Release
108 MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
109 INTERFACE_INCLUDE_DIRECTORIES "${IE_INCLUDE_DIR}")
111 # Debug binaries are optional
112 find_library(IE_DEBUG_LIBRARY inference_engine@IE_DEBUG_POSTFIX_WIN@ "${IE_LIB_DBG_DIR}" NO_DEFAULT_PATH)
113 if (IE_DEBUG_LIBRARY)
114 set_property(TARGET IE::inference_engine APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
115 set_target_properties(IE::inference_engine PROPERTIES
116 IMPORTED_IMPLIB_DEBUG "${IE_DEBUG_LIBRARY}"
117 MAP_IMPORTED_CONFIG_DEBUG Debug)
119 ext_message(WARNING "Inference Engine DEBUG binaries are missed.")
122 set_target_properties(IE::inference_engine PROPERTIES
123 IMPORTED_LOCATION_RELEASE "${IE_RELEASE_LIBRARY}"
124 INTERFACE_INCLUDE_DIRECTORIES "${IE_INCLUDE_DIR}")
126 # Debug binaries are optional
127 find_library(IE_DEBUG_LIBRARY inference_engine@IE_DEBUG_POSTFIX_MAC@ "${IE_LIB_DIR}" NO_DEFAULT_PATH)
128 if (IE_DEBUG_LIBRARY)
129 set_target_properties(IE::inference_engine PROPERTIES
130 IMPORTED_LOCATION_DEBUG "${IE_DEBUG_LIBRARY}")
132 ext_message(WARNING "Inference Engine DEBUG binaries are missed")
135 target_link_libraries(IE::inference_engine INTERFACE ${CMAKE_DL_LIBS})
137 # Only Release binaries are distributed for Linux systems
138 set_target_properties(IE::inference_engine PROPERTIES
139 IMPORTED_LOCATION "${IE_RELEASE_LIBRARY}"
140 INTERFACE_INCLUDE_DIRECTORIES "${IE_INCLUDE_DIR}")
141 target_link_libraries(IE::inference_engine INTERFACE ${CMAKE_DL_LIBS})
144 set(InferenceEngine_INCLUDE_DIRS ${IE_INCLUDE_DIR})
145 set(InferenceEngine_LIBRARIES IE::inference_engine)
147 set(IE_EXTERNAL_DIR "${IE_ROOT_DIR}/external")
148 include("${IE_ROOT_DIR}/share/ie_parallel.cmake")
150 add_subdirectory(${IE_SRC_DIR}/extension EXCLUDE_FROM_ALL ie_cpu_extension)
151 add_library(IE::ie_cpu_extension ALIAS ie_cpu_extension)