updated readme files (#54)
[platform/upstream/dldt.git] / inference-engine / cmake / share / InferenceEngineConfig.cmake.in
1 # Copyright (C) 2018 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_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")
68             # CV SDK is installed
69             set(IE_ROOT_DIR "$ENV{INTEL_CVSDK_DIR}/deployment_tools/inference_engine")
70         endif()
71     endif()
72
73     if(IE_ROOT_DIR)
74         if (WIN32)
75             set(_OS_PATH "")
76         else()
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]*\"")
82             else()
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]+)?)")
87             endif()
88
89             string(REGEX MATCH ${name_regex} name ${release_data})
90             set(os_name ${CMAKE_MATCH_1})
91
92             string(REGEX MATCH ${version_regex} version ${release_data})
93             set(os_name "${os_name} ${CMAKE_MATCH_1}")
94
95             if (NOT os_name)
96                 ext_message(FATAL_ERROR "Cannot detect OS via reading /etc/*-release:\n ${release_data}")
97             endif()
98
99             if (NOT InferenceEngine_FIND_QUIETLY)
100                 message (STATUS "/etc/*-release distrib: ${os_name}")
101             endif()
102
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/")
117             else()
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")
119             endif()
120         endif()
121     endif()
122
123     if(IE_INCLUDE_DIR AND NOT "${IE_ROOT_DIR}/include" EQUAL "${IE_INCLUDE_DIR}")
124         unset(IE_INCLUDE_DIR CACHE)
125     endif()
126
127     if(IE_SRC_DIR AND NOT "${IE_ROOT_DIR}/src" EQUAL "${IE_SRC_DIR}")
128         unset(IE_SRC_DIR CACHE)
129     endif()
130
131     if(IE_LIBRARY AND NOT "${IE_ROOT_DIR}/lib/${_OS_PATH}/${_ARCH}" EQUAL "${IE_LIBRARY}")
132         unset(IE_LIBRARY CACHE)
133     endif()
134
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}")
138
139     find_path(IE_INCLUDE_DIR inference_engine.hpp "${_IE_ROOT_INCLUDE_DIR}")
140     find_path(IE_SRC_DIR extension "${_IE_ROOT_SRC_DIR}")
141
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")
146
147     include(FindPackageHandleStandardArgs)
148
149     if (WIN32)
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.")
156     else()
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.")
162     endif()
163     if(INFERENCEENGINE_FOUND)
164         # to keep this line for successful execution in CMake 2.8
165         set(InferenceEngine_FOUND TRUE)
166
167         add_library(IE::inference_engine SHARED IMPORTED GLOBAL)
168
169         if (WIN32)
170             set_property(TARGET IE::inference_engine APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
171             set_property(TARGET IE::inference_engine APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
172
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}")
180         else()
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})
185         endif()
186
187         set(InferenceEngine_INCLUDE_DIRS ${IE_INCLUDE_DIR})
188         set(InferenceEngine_LIBRARIES IE::inference_engine)
189
190         include("${IE_ROOT_DIR}/share/ie_parallel.cmake")
191
192         add_subdirectory(${IE_SRC_DIR}/extension EXCLUDE_FROM_ALL ie_cpu_extension)
193         add_library(IE::ie_cpu_extension ALIAS ie_cpu_extension)
194     endif()
195 endif()