3bbb0cf7ec19f29b5cf222f6554b1047cde40826
[platform/upstream/dldt.git] / inference-engine / cmake / share / InferenceEngineConfig.cmake.in
1 # Copyright (C) 2018-2019 Intel Corporation
2 # SPDX-License-Identifier: Apache-2.0
3 #
4 #
5 # FindIE
6 # ------
7 #
8 #   You can specify the path to Inference Engine files in IE_ROOT_DIR
9 #
10 # This will define the following variables:
11 #
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
15 #
16 # and the following imported targets:
17 #
18 #   IE::inference_engine    - The Inference Engine library
19 #
20
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}")
27         endif()
28         return()
29     elseif(NOT InferenceEngine_FIND_QUIETLY)
30         message(${TRACE_LEVEL} "${ARGN}")
31     endif ()
32 endmacro()
33
34 set(InferenceEngine_FOUND FALSE)
35
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)
40 else()
41     if (WIN32)
42         set(_ARCH intel64)
43     else()
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
46             set(_ARCH intel64)
47         elseif(_ARCH STREQUAL "i386")
48             set(_ARCH ia32)
49         endif()
50     endif()
51
52     set(THREADING "@THREADING@")
53
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")
66             # CV SDK is installed
67             set(IE_ROOT_DIR "$ENV{INTEL_OPENVINO_DIR}/deployment_tools/inference_engine")
68         endif()
69     endif()
70
71     if(NOT IE_ROOT_DIR)
72         ext_message(FATAL_ERROR "inference_engine root directory is not found")
73     endif()
74
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)
77
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")
81
82     include(FindPackageHandleStandardArgs)
83
84     if(WIN32)
85         find_library(IE_RELEASE_LIBRARY inference_engine@IE_RELEASE_POSTFIX_WIN@ "${IE_LIB_REL_DIR}" NO_DEFAULT_PATH)
86     elseif(APPLE)
87         find_library(IE_RELEASE_LIBRARY inference_engine@IE_RELEASE_POSTFIX_MAC@ "${IE_LIB_DIR}" NO_DEFAULT_PATH)
88     else()
89         find_library(IE_RELEASE_LIBRARY inference_engine@IE_RELEASE_POSTFIX_LIN@ "${IE_LIB_DIR}" NO_DEFAULT_PATH)
90     endif()
91
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.")
96
97     if(INFERENCEENGINE_FOUND)
98         # to keep this line for successful execution in CMake 2.8
99         set(InferenceEngine_FOUND TRUE)
100
101         add_library(IE::inference_engine SHARED IMPORTED GLOBAL)
102
103         if (WIN32)
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}")
110
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)
118             else()
119                 ext_message(WARNING "Inference Engine DEBUG binaries are missed.")
120             endif()
121         elseif (APPLE)
122             set_target_properties(IE::inference_engine PROPERTIES
123                     IMPORTED_LOCATION_RELEASE "${IE_RELEASE_LIBRARY}"
124                     INTERFACE_INCLUDE_DIRECTORIES "${IE_INCLUDE_DIR}")
125
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}")
131             else()
132                 ext_message(WARNING "Inference Engine DEBUG binaries are missed")
133             endif()
134
135             target_link_libraries(IE::inference_engine INTERFACE ${CMAKE_DL_LIBS})
136         else()
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})
142         endif()
143
144         set(InferenceEngine_INCLUDE_DIRS ${IE_INCLUDE_DIR})
145         set(InferenceEngine_LIBRARIES IE::inference_engine)
146
147         set(IE_EXTERNAL_DIR "${IE_ROOT_DIR}/external")
148         include("${IE_ROOT_DIR}/share/ie_parallel.cmake")
149
150         add_subdirectory(${IE_SRC_DIR}/extension EXCLUDE_FROM_ALL ie_cpu_extension)
151         add_library(IE::ie_cpu_extension ALIAS ie_cpu_extension)
152     endif()
153 endif()