Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / cmake / share / InferenceEngineConfig.cmake.in
1 # Copyright (C) 2018-2019 Intel Corporation
2 #
3 # SPDX-License-Identifier: Apache-2.0
4 #
5 #
6 # FindIE
7 # ------
8 #
9 #   You can specify the path to Inference Engine files in IE_ROOT_DIR
10 #
11 # This will define the following variables:
12 #
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
16 #
17 # and the following imported targets:
18 #
19 #   IE::inference_engine    - The Inference Engine library
20 #
21
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}")
28         endif()
29         return()
30     elseif(NOT InferenceEngine_FIND_QUIETLY)
31         message(${TRACE_LEVEL} "${ARGN}")
32     endif ()
33 endmacro()
34
35 set(InferenceEngine_FOUND FALSE)
36
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)
41 else()
42     if (WIN32)
43         set(_ARCH intel64)
44     else()
45         if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
46             set(_ARCH armv7l)
47         elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
48             set(_ARCH intel64)
49         elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i386")
50             set(_ARCH ia32)
51         endif()
52     endif()
53
54     set(THREADING "@THREADING@")
55
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_OPENVINO_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_OPENVINO_DIR}/inference_engine")
65             # if we installed DL SDK
66             set(IE_ROOT_DIR "$ENV{INTEL_OPENVINO_DIR}/inference_engine")
67         elseif (EXISTS "$ENV{INTEL_OPENVINO_DIR}/deployment_tools/inference_engine")
68             # CV SDK is installed
69             set(IE_ROOT_DIR "$ENV{INTEL_OPENVINO_DIR}/deployment_tools/inference_engine")
70         endif()
71     endif()
72
73     if(NOT IE_ROOT_DIR)  
74         ext_message(FATAL_ERROR "inference_engine directory is not found")
75     endif()
76
77
78     if(IE_INCLUDE_DIR AND NOT "${IE_ROOT_DIR}/include" EQUAL "${IE_INCLUDE_DIR}")
79         unset(IE_INCLUDE_DIR CACHE)
80     endif()
81
82     if(IE_SRC_DIR AND NOT "${IE_ROOT_DIR}/src" EQUAL "${IE_SRC_DIR}")
83         unset(IE_SRC_DIR CACHE)
84     endif()
85
86     if(IE_LIBRARY AND NOT "${IE_ROOT_DIR}/lib/${_ARCH}" EQUAL "${IE_LIBRARY}")
87         unset(IE_LIBRARY CACHE)
88     endif()
89
90     set(_IE_ROOT_INCLUDE_DIR "${IE_ROOT_DIR}/include")
91     set(_IE_ROOT_SRC_DIR "${IE_ROOT_DIR}/src")
92     set(_IE_ROOT_LIBRARY "${IE_ROOT_DIR}/lib/${_ARCH}")
93
94     find_path(IE_INCLUDE_DIR inference_engine.hpp "${_IE_ROOT_INCLUDE_DIR}")
95     find_path(IE_SRC_DIR extension "${_IE_ROOT_SRC_DIR}")
96
97     set(IE_LIB_DIR "${_IE_ROOT_LIBRARY}")
98     set(IE_LIB_REL_DIR "${IE_LIB_DIR}/Release")
99     set(IE_LIB_DBG_DIR "${IE_LIB_DIR}/Debug")
100     set(IE_EXTERNAL_DIR "${IE_ROOT_DIR}/external")
101
102     include(FindPackageHandleStandardArgs)
103
104     if (WIN32)
105         find_library(IE_RELEASE_LIBRARY inference_engine@IE_RELEASE_POSTFIX_WIN@ "${IE_LIB_REL_DIR}")
106         find_library(IE_DEBUG_LIBRARY inference_engine@IE_DEBUG_POSTFIX_WIN@ "${IE_LIB_DBG_DIR}")
107         find_package_handle_standard_args(  InferenceEngine
108                                             FOUND_VAR INFERENCEENGINE_FOUND
109                                             REQUIRED_VARS IE_RELEASE_LIBRARY IE_DEBUG_LIBRARY IE_INCLUDE_DIR
110                                             FAIL_MESSAGE "Inference Engine cannot be found at ${_IE_ROOT_LIBRARY}. Please consult InferenceEgnineConfig.cmake module's help page.")
111     else()
112         find_library(IE_LIBRARY inference_engine@IE_RELEASE_POSTFIX_LIN@ "${IE_LIB_DIR}")
113         find_package_handle_standard_args(  InferenceEngine
114                                             FOUND_VAR INFERENCEENGINE_FOUND
115                                             REQUIRED_VARS IE_LIBRARY IE_INCLUDE_DIR
116                                             FAIL_MESSAGE "Inference Engine cannot be found at ${_IE_ROOT_LIBRARY}. Please consult InferenceEgnineConfig.cmake module's help page.")
117     endif()
118     if(INFERENCEENGINE_FOUND)
119         # to keep this line for successful execution in CMake 2.8
120         set(InferenceEngine_FOUND TRUE)
121
122         add_library(IE::inference_engine SHARED IMPORTED GLOBAL)
123
124         if (WIN32)
125             set_property(TARGET IE::inference_engine APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
126             set_property(TARGET IE::inference_engine APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
127
128             set_target_properties(IE::inference_engine PROPERTIES
129                     IMPORTED_IMPLIB_RELEASE    "${IE_RELEASE_LIBRARY}"
130                     IMPORTED_IMPLIB_DEBUG      "${IE_DEBUG_LIBRARY}"
131                     MAP_IMPORTED_CONFIG_DEBUG Debug
132                     MAP_IMPORTED_CONFIG_RELEASE Release
133                     MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
134                     INTERFACE_INCLUDE_DIRECTORIES "${IE_INCLUDE_DIR}")
135         else()
136             set_target_properties(IE::inference_engine PROPERTIES
137                     IMPORTED_LOCATION "${IE_LIBRARY}"
138                     INTERFACE_INCLUDE_DIRECTORIES "${IE_INCLUDE_DIR}")
139             target_link_libraries(IE::inference_engine INTERFACE ${CMAKE_DL_LIBS})
140         endif()
141
142         set(InferenceEngine_INCLUDE_DIRS ${IE_INCLUDE_DIR})
143         set(InferenceEngine_LIBRARIES IE::inference_engine)
144
145         include("${IE_ROOT_DIR}/share/ie_parallel.cmake")
146
147         add_subdirectory(${IE_SRC_DIR}/extension EXCLUDE_FROM_ALL ie_cpu_extension)
148         add_library(IE::ie_cpu_extension ALIAS ie_cpu_extension)
149     endif()
150 endif()