Temp commit for openvino v2021.2
[platform/upstream/dldt.git] / CMakeLists.txt
index 4322f01..5c3585a 100644 (file)
@@ -2,18 +2,7 @@
 # SPDX-License-Identifier: Apache-2.0
 #
 
-cmake_policy(SET CMP0054 NEW)
-
-# TODO: for make instal / package we need to use 3.13.3 version because
-# it allows to install targets created outside of current projects
-# See https://blog.kitware.com/cmake-3-13-0-available-for-download/
-
-if (APPLE)
-    # due to https://cmake.org/cmake/help/v3.12/policy/CMP0068.html
-    cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
-else()
-    cmake_minimum_required(VERSION 3.7.2 FATAL_ERROR)
-endif()
+cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
 
 project(OpenVINO)
 
@@ -27,8 +16,7 @@ include(features)
 # include developer package
 include(developer_package)
 
-# These options are shared with 3rdparty plugins
-# by means of developer package
+# These options are shared with 3rdparty plugins by means of developer package
 include(check_features)
 include(dependencies)
 
@@ -45,6 +33,10 @@ message (STATUS "CMAKE_BUILD_TYPE ...................... " ${CMAKE_BUILD_TYPE})
 file(REMOVE "${CMAKE_BINARY_DIR}/targets_developer.cmake")
 file(REMOVE "${CMAKE_BINARY_DIR}/targets.cmake")
 
+#
+# Build
+#
+
 function(build_ngraph)
     function(ngraph_set option value)
         if(NOT DEFINED ${option})
@@ -61,23 +53,44 @@ function(build_ngraph)
         ngraph_set(NGRAPH_ADDRESS_SANITIZER FALSE)
     endif ()
     ngraph_set(NGRAPH_PYTHON_BUILD_ENABLE FALSE)
-    if (NOT ANDROID)
-        if(ENABLE_TESTS)
-            ngraph_set(NGRAPH_UNIT_TEST_ENABLE TRUE)
-            ngraph_set(NGRAPH_IE_ENABLE TRUE)
-        else()
-            ngraph_set(NGRAPH_UNIT_TEST_ENABLE FALSE)
-            ngraph_set(NGRAPH_IE_ENABLE FALSE)
-        endif()
-        ngraph_set(NGRAPH_ONNX_IMPORT_ENABLE TRUE)
+
+    if(ENABLE_TESTS AND NOT ANDROID)
+        ngraph_set(NGRAPH_UNIT_TEST_ENABLE TRUE)
     else()
         ngraph_set(NGRAPH_UNIT_TEST_ENABLE FALSE)
-        ngraph_set(NGRAPH_TEST_UTIL_ENABLE FALSE)
-        ngraph_set(NGRAPH_IE_ENABLE FALSE)
+    endif()
+
+    if(NOT (ANDROID OR WINDOWS_STORE OR (MSVC AND (ARM OR AARCH64)) ))
+        ngraph_set(NGRAPH_ONNX_IMPORT_ENABLE TRUE)
+    else()
         ngraph_set(NGRAPH_ONNX_IMPORT_ENABLE FALSE)
     endif()
     ngraph_set(NGRAPH_INTERPRETER_ENABLE TRUE)
 
+    if(TREAT_WARNING_AS_ERROR)
+        ngraph_set(NGRAPH_WARNINGS_AS_ERRORS ON)
+    else()
+        ngraph_set(NGRAPH_WARNINGS_AS_ERRORS OFF)
+    endif()
+
+    if(COVERAGE)
+        ngraph_set(NGRAPH_CODE_COVERAGE_ENABLE ON)
+    else()
+        ngraph_set(NGRAPH_CODE_COVERAGE_ENABLE OFF)
+    endif()
+
+    if(ENABLE_SANITIZER)
+        ngraph_set(NGRAPH_ADDRESS_SANITIZER_ENABLE ON)
+    else()
+        ngraph_set(NGRAPH_ADDRESS_SANITIZER_ENABLE OFF)
+    endif()
+
+    if(ENABLE_THREAD_SANITIZER)
+        ngraph_set(NGRAPH_THREAD_SANITIZER_ENABLE ON)
+    else()
+        ngraph_set(NGRAPH_THREAD_SANITIZER_ENABLE OFF)
+    endif()
+
     if(CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$")
         ie_add_compiler_flags(-Wno-error=uninitialized -Wno-error=literal-conversion)
     elseif(UNIX)
@@ -91,11 +104,11 @@ function(build_ngraph)
     if (UNIX)
         ie_add_compiler_flags(-Wno-error=return-type -Wno-undef)
     elseif(WIN32)
-        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4308 /wd4146 /wd4703 /wd4244")
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4308 /wd4146 /wd4703 /wd4244 /wd4819")
     endif()
-
+    
     if(ENABLE_LTO)
-        ie_enable_lto()
+        set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
     endif()
 
     ie_cpack_add_component(ngraph)
@@ -106,13 +119,60 @@ function(build_ngraph)
     set(NGRAPH_LIBRARIES ngraph PARENT_SCOPE)
 endfunction()
 
+file(REMOVE "${CMAKE_BINARY_DIR}/openvino_targets_developer.cmake")
+
+unset(OpenVINODeveloperPackageTargets CACHE)
+
+function(openvino_developer_export_targets)
+    set(OpenVINODeveloperPackageTargets "${OpenVINODeveloperPackageTargets};${ARGV}")
+
+    # to allow exporting of aliased targets with the original names
+    foreach(target_name ${OpenVINODeveloperPackageTargets})
+        if(TARGET "${target_name}")
+            get_target_property(original_name ${target_name} ALIASED_TARGET)
+            if(TARGET "${original_name}")
+                message(STATUS "The name ${target_name} is an ALIAS for ${original_name}. "
+                        "It will be exported to the InferenceEngineDeveloperPackage with the original name.")
+                list(REMOVE_ITEM OpenVINODeveloperPackageTargets ${target_name})
+                list(APPEND OpenVINODeveloperPackageTargets ${original_name})
+            endif()
+        endif()
+    endforeach()
+
+    list(REMOVE_DUPLICATES OpenVINODeveloperPackageTargets)
+    set(OpenVINODeveloperPackageTargets "${OpenVINODeveloperPackageTargets}" CACHE INTERNAL
+        "Paths to extra Inference Engine plugins" FORCE)
+endfunction()
+
+add_subdirectory(openvino)
+
 build_ngraph()
 
 add_subdirectory(inference-engine)
 
+add_subdirectory(model-optimizer)
 add_subdirectory(docs)
 
+#
+# Shellcheck
+#
+
+ie_shellcheck_process(DIRECTORY "${OpenVINO_MAIN_SOURCE_DIR}"
+                      SKIP "${OpenVINO_MAIN_SOURCE_DIR}/bin"
+                           "${OpenVINO_MAIN_SOURCE_DIR}/build"
+                           "${IE_MAIN_SOURCE_DIR}/tests/ie_test_utils/common_test_utils/gtest"
+                           "${IE_MAIN_SOURCE_DIR}/samples/thirdparty"
+                           "${IE_MAIN_SOURCE_DIR}/thirdparty"
+                           "${IE_MAIN_SOURCE_DIR}/temp"
+                           # TODO fix and enable back:
+                           "${OpenVINO_MAIN_SOURCE_DIR}/scripts/install_dependencies"
+                           "${OpenVINO_MAIN_SOURCE_DIR}/scripts/demo"
+                           "${OpenVINO_MAIN_SOURCE_DIR}/ngraph"
+                           "${IE_MAIN_SOURCE_DIR}/scripts")
+
+#
 # cpack
+#
 
 # install setupvars