Temp commit for openvino v2021.2
[platform/upstream/dldt.git] / CMakeLists.txt
1 # Copyright (C) 2018-2020 Intel Corporation
2 # SPDX-License-Identifier: Apache-2.0
3 #
4
5 cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
6
7 project(OpenVINO)
8
9 set(OpenVINO_MAIN_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
10 set(IE_MAIN_SOURCE_DIR ${OpenVINO_MAIN_SOURCE_DIR}/inference-engine)
11 list(APPEND CMAKE_MODULE_PATH "${OpenVINO_MAIN_SOURCE_DIR}/cmake")
12
13 include(CTest)
14 include(features)
15
16 # include developer package
17 include(developer_package)
18
19 # These options are shared with 3rdparty plugins by means of developer package
20 include(check_features)
21 include(dependencies)
22
23 # resolving dependencies for the project
24 message (STATUS "PROJECT ............................... " ${PROJECT_NAME})
25 message (STATUS "CMAKE_BINARY_DIR ...................... " ${CMAKE_BINARY_DIR})
26 message (STATUS "OpenVINO_MAIN_SOURCE_DIR .............. " ${OpenVINO_MAIN_SOURCE_DIR})
27 message (STATUS "IE_MAIN_SOURCE_DIR .................... " ${IE_MAIN_SOURCE_DIR})
28 message (STATUS "CMAKE_GENERATOR ....................... " ${CMAKE_GENERATOR})
29 message (STATUS "CMAKE_C_COMPILER_ID ................... " ${CMAKE_C_COMPILER_ID})
30 message (STATUS "CMAKE_BUILD_TYPE ...................... " ${CMAKE_BUILD_TYPE})
31
32 # remove file with exported developer targets to force its regeneration
33 file(REMOVE "${CMAKE_BINARY_DIR}/targets_developer.cmake")
34 file(REMOVE "${CMAKE_BINARY_DIR}/targets.cmake")
35
36 #
37 # Build
38 #
39
40 function(build_ngraph)
41     function(ngraph_set option value)
42         if(NOT DEFINED ${option})
43             set(${option} ${value} CACHE BOOL "" FORCE)
44         endif()
45     endfunction()
46
47     set(NGRAPH_BUILD_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} CACHE STRING "" FORCE)
48     set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${OpenVINO_MAIN_SOURCE_DIR}/ngraph/cmake/Modules/")
49
50     if (ENABLE_SANITIZER)
51         ngraph_set(NGRAPH_ADDRESS_SANITIZER TRUE)
52     else ()
53         ngraph_set(NGRAPH_ADDRESS_SANITIZER FALSE)
54     endif ()
55     ngraph_set(NGRAPH_PYTHON_BUILD_ENABLE FALSE)
56
57     if(ENABLE_TESTS AND NOT ANDROID)
58         ngraph_set(NGRAPH_UNIT_TEST_ENABLE TRUE)
59     else()
60         ngraph_set(NGRAPH_UNIT_TEST_ENABLE FALSE)
61     endif()
62
63     if(NOT (ANDROID OR WINDOWS_STORE OR (MSVC AND (ARM OR AARCH64)) ))
64         ngraph_set(NGRAPH_ONNX_IMPORT_ENABLE TRUE)
65     else()
66         ngraph_set(NGRAPH_ONNX_IMPORT_ENABLE FALSE)
67     endif()
68     ngraph_set(NGRAPH_INTERPRETER_ENABLE TRUE)
69
70     if(TREAT_WARNING_AS_ERROR)
71         ngraph_set(NGRAPH_WARNINGS_AS_ERRORS ON)
72     else()
73         ngraph_set(NGRAPH_WARNINGS_AS_ERRORS OFF)
74     endif()
75
76     if(COVERAGE)
77         ngraph_set(NGRAPH_CODE_COVERAGE_ENABLE ON)
78     else()
79         ngraph_set(NGRAPH_CODE_COVERAGE_ENABLE OFF)
80     endif()
81
82     if(ENABLE_SANITIZER)
83         ngraph_set(NGRAPH_ADDRESS_SANITIZER_ENABLE ON)
84     else()
85         ngraph_set(NGRAPH_ADDRESS_SANITIZER_ENABLE OFF)
86     endif()
87
88     if(ENABLE_THREAD_SANITIZER)
89         ngraph_set(NGRAPH_THREAD_SANITIZER_ENABLE ON)
90     else()
91         ngraph_set(NGRAPH_THREAD_SANITIZER_ENABLE OFF)
92     endif()
93
94     if(CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$")
95         ie_add_compiler_flags(-Wno-error=uninitialized -Wno-error=literal-conversion)
96     elseif(UNIX)
97         ie_add_compiler_flags(-Wno-error=maybe-uninitialized -Wno-error=return-type -fPIC)
98     endif()
99     if(ANDROID)
100         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=defaulted-function-deleted -Wno-error=unused-command-line-argument")
101     endif()
102
103     # WA for GCC 7.0
104     if (UNIX)
105         ie_add_compiler_flags(-Wno-error=return-type -Wno-undef)
106     elseif(WIN32)
107         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4308 /wd4146 /wd4703 /wd4244 /wd4819")
108     endif()
109     
110     if(ENABLE_LTO)
111         set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
112     endif()
113
114     ie_cpack_add_component(ngraph)
115
116     set(SDL_cmake_included ON)
117     # set(NGRAPH_COMPONENT_PREFIX "deployment_tools/ngraph/")
118     add_subdirectory(ngraph)
119     set(NGRAPH_LIBRARIES ngraph PARENT_SCOPE)
120 endfunction()
121
122 file(REMOVE "${CMAKE_BINARY_DIR}/openvino_targets_developer.cmake")
123
124 unset(OpenVINODeveloperPackageTargets CACHE)
125
126 function(openvino_developer_export_targets)
127     set(OpenVINODeveloperPackageTargets "${OpenVINODeveloperPackageTargets};${ARGV}")
128
129     # to allow exporting of aliased targets with the original names
130     foreach(target_name ${OpenVINODeveloperPackageTargets})
131         if(TARGET "${target_name}")
132             get_target_property(original_name ${target_name} ALIASED_TARGET)
133             if(TARGET "${original_name}")
134                 message(STATUS "The name ${target_name} is an ALIAS for ${original_name}. "
135                         "It will be exported to the InferenceEngineDeveloperPackage with the original name.")
136                 list(REMOVE_ITEM OpenVINODeveloperPackageTargets ${target_name})
137                 list(APPEND OpenVINODeveloperPackageTargets ${original_name})
138             endif()
139         endif()
140     endforeach()
141
142     list(REMOVE_DUPLICATES OpenVINODeveloperPackageTargets)
143     set(OpenVINODeveloperPackageTargets "${OpenVINODeveloperPackageTargets}" CACHE INTERNAL
144         "Paths to extra Inference Engine plugins" FORCE)
145 endfunction()
146
147 add_subdirectory(openvino)
148
149 build_ngraph()
150
151 add_subdirectory(inference-engine)
152
153 add_subdirectory(model-optimizer)
154 add_subdirectory(docs)
155
156 #
157 # Shellcheck
158 #
159
160 ie_shellcheck_process(DIRECTORY "${OpenVINO_MAIN_SOURCE_DIR}"
161                       SKIP "${OpenVINO_MAIN_SOURCE_DIR}/bin"
162                            "${OpenVINO_MAIN_SOURCE_DIR}/build"
163                            "${IE_MAIN_SOURCE_DIR}/tests/ie_test_utils/common_test_utils/gtest"
164                            "${IE_MAIN_SOURCE_DIR}/samples/thirdparty"
165                            "${IE_MAIN_SOURCE_DIR}/thirdparty"
166                            "${IE_MAIN_SOURCE_DIR}/temp"
167                            # TODO fix and enable back:
168                            "${OpenVINO_MAIN_SOURCE_DIR}/scripts/install_dependencies"
169                            "${OpenVINO_MAIN_SOURCE_DIR}/scripts/demo"
170                            "${OpenVINO_MAIN_SOURCE_DIR}/ngraph"
171                            "${IE_MAIN_SOURCE_DIR}/scripts")
172
173 #
174 # cpack
175 #
176
177 # install setupvars
178
179 ie_cpack_add_component(setupvars REQUIRED)
180
181 if(UNIX)
182     install(PROGRAMS scripts/setupvars/setupvars.sh
183             DESTINATION bin
184             COMPONENT setupvars)
185 elseif(WIN32)
186     install(PROGRAMS scripts/setupvars/setupvars.bat
187             DESTINATION bin
188             COMPONENT setupvars)
189 endif()
190
191 # install install_dependencies
192
193 if(UNIX)
194     ie_cpack_add_component(install_dependencies REQUIRED)
195     install(DIRECTORY scripts/install_dependencies/
196             DESTINATION install_dependencies
197             COMPONENT install_dependencies)
198 endif()
199
200 # install files for demo
201
202 ie_cpack_add_component(demo_scripts REQUIRED DEPENDS core)
203
204 if(UNIX)
205     install(DIRECTORY scripts/demo/
206             DESTINATION deployment_tools/demo
207             COMPONENT demo_scripts
208             USE_SOURCE_PERMISSIONS
209             PATTERN *.bat EXCLUDE)
210 elseif(WIN32)
211     install(DIRECTORY scripts/demo/
212             DESTINATION deployment_tools/demo
213             COMPONENT demo_scripts
214             USE_SOURCE_PERMISSIONS
215             PATTERN *.sh EXCLUDE)
216 endif()
217
218 ie_cpack(${IE_CPACK_COMPONENTS_ALL})