CMAKE: moved GNA var setting to proper place; removed find_package when build python...
[platform/upstream/dldt.git] / CMakeLists.txt
1 # Copyright (C) 2018-2019 Intel Corporation
2 # SPDX-License-Identifier: Apache-2.0
3 #
4
5 cmake_policy(SET CMP0054 NEW)
6 if(ENABLE_DOCKER)
7     cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
8 else()
9     if (APPLE)
10         # due to https://cmake.org/cmake/help/v3.12/policy/CMP0068.html
11         cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
12     else()
13         cmake_minimum_required(VERSION 3.7.2 FATAL_ERROR)
14     endif()
15 endif()
16
17 project(OpenVINO)
18
19 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
20 set(OpenVINO_MAIN_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
21
22 include(CTest)
23 include(features)
24
25 # include developer package
26 include(developer_package)
27
28 # These options are shared with 3rdparty plugins
29 # by means of developer package
30 include(check_features)
31
32 # resolving dependencies for the project
33 message (STATUS "PROJECT ............................... " ${PROJECT_NAME})
34 message (STATUS "CMAKE_BINARY_DIR ...................... " ${CMAKE_BINARY_DIR})
35 message (STATUS "OpenVINO_MAIN_SOURCE_DIR .............. " ${OpenVINO_MAIN_SOURCE_DIR})
36 if (ENABLE_INFERENCE_ENGINE)
37     set(IE_MAIN_SOURCE_DIR ${OpenVINO_MAIN_SOURCE_DIR}/inference-engine)
38     message (STATUS "IE_MAIN_SOURCE_DIR .............. " ${IE_MAIN_SOURCE_DIR})
39 endif()
40 message (STATUS "CMAKE_GENERATOR ....................... " ${CMAKE_GENERATOR})
41 message (STATUS "CMAKE_C_COMPILER_ID ................... " ${CMAKE_C_COMPILER_ID})
42 message (STATUS "CMAKE_BUILD_TYPE ...................... " ${CMAKE_BUILD_TYPE})
43
44 # remove file with exported developer targets to force its regeneration
45 file(REMOVE "${CMAKE_BINARY_DIR}/targets_developer.cmake")
46
47 function(build_ngraph)
48     if (NOT ENABLE_NGRAPH)
49         return()
50     endif()
51     add_definitions(-DENABLE_NGRAPH)
52     set(NGRAPH_BUILD_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} CACHE STRING "" FORCE)
53     set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/ngraph/cmake/Modules/")
54
55     set(NGRAPH_ADDRESS_SANITIZER FALSE CACHE BOOL "" FORCE)
56     set(NGRAPH_UNIT_TEST_ENABLE FALSE CACHE BOOL "" FORCE)
57     set(NGRAPH_TOOLS_ENABLE FALSE CACHE BOOL "" FORCE)
58     set(NGRAPH_CPU_ENABLE FALSE CACHE BOOL "" FORCE)
59     set(NGRAPH_MLIR_ENABLE FALSE CACHE BOOL "" FORCE)
60     set(NGRAPH_INTELGPU_ENABLE FALSE CACHE BOOL "" FORCE)
61     set(NGRAPH_GPU_ENABLE FALSE CACHE BOOL "" FORCE)
62     set(NGRAPH_INTERPRETER_ENABLE FALSE CACHE BOOL "" FORCE)
63     set(NGRAPH_NOP_ENABLE FALSE CACHE BOOL "" FORCE)
64     set(NGRAPH_GPUH_ENABLE FALSE CACHE BOOL "" FORCE)
65     set(NGRAPH_GENERIC_CPU_ENABLE FALSE CACHE BOOL "" FORCE)
66     set(NGRAPH_DEBUG_ENABLE FALSE CACHE BOOL "" FORCE)
67     set(NGRAPH_DEPRECATED_ENABLE FALSE CACHE BOOL "" FORCE)
68     set(NGRAPH_ONNX_IMPORT_ENABLE FALSE CACHE BOOL "" FORCE)
69     set(NGRAPH_DEX_ONLY FALSE CACHE BOOL "" FORCE)
70     set(NGRAPH_ENABLE_CPU_CONV_AUTO FALSE CACHE BOOL "" FORCE)
71     set(NGRAPH_CODE_COVERAGE_ENABLE FALSE CACHE BOOL "" FORCE)
72     set(NGRAPH_LIB_VERSIONING_ENABLE FALSE CACHE BOOL "" FORCE)
73     set(NGRAPH_PYTHON_BUILD_ENABLE FALSE CACHE BOOL "" FORCE)
74     set(NGRAPH_PLAIDML_ENABLE FALSE CACHE BOOL "" FORCE)
75     set(NGRAPH_DISTRIBUTED_ENABLE FALSE CACHE BOOL "" FORCE)
76     set(NGRAPH_FAST_MATH_ENABLE FALSE CACHE BOOL "" FORCE)
77     set(NGRAPH_JSON_ENABLE FALSE CACHE BOOL "" FORCE)
78     if (APPLE AND ${CMAKE_BUILD_TYPE} STREQUAL "Release")
79         set(NGRAPH_STATIC_LIB_ENABLE TRUE CACHE BOOL "" FORCE)
80     else()
81         set(NGRAPH_STATIC_LIB_ENABLE FALSE CACHE BOOL "" FORCE)
82     endif()
83     set(NGRAPH_INTERPRETER_STATIC_LIB_ENABLE FALSE CACHE BOOL "" FORCE)
84     set(NGRAPH_CPU_STATIC_LIB_ENABLE FALSE CACHE BOOL "" FORCE)
85     set(NGRAPH_DYNAMIC_COMPONENTS_ENABLE FALSE CACHE BOOL "" FORCE)
86
87     check_cxx_compiler_flag("-Wmaybe-uninitialized" HAS_MAYBE_UNINITIALIZED)
88     if (HAS_MAYBE_UNINITIALIZED)
89         if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
90             set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-uninitialized")
91             set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-uninitialized")
92         else()
93             set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-maybe-uninitialized -Wno-return-type")
94             set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-maybe-uninitialized -Wno-return-type")
95         endif()
96     endif()
97     # WA for GCC 7.0
98     if (UNIX)
99         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-return-type")
100         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-return-type")
101     elseif(WIN32)
102         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4308 /wd4146")
103     endif()
104
105     if(UNIX)
106         set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fvisibility=default")
107     endif()
108
109     if(ENABLE_LTO)
110         ie_enable_lto()
111     endif()
112
113     add_subdirectory(ngraph)
114     set(NGRAPH_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ngraph/src/"
115                            "${CMAKE_CURRENT_SOURCE_DIR}/ngraph/src/ngraph/" PARENT_SCOPE)
116     set(NGRAPH_LIBRARY ngraph PARENT_SCOPE)
117
118     export(TARGETS ngraph NAMESPACE IE:: APPEND FILE "${CMAKE_BINARY_DIR}/targets.cmake")
119     export(TARGETS ngraph NAMESPACE IE:: APPEND FILE "${CMAKE_BINARY_DIR}/targets_developer.cmake")
120 endfunction()
121
122 build_ngraph()
123
124 if (ENABLE_INFERENCE_ENGINE)
125     add_subdirectory(inference-engine)
126 endif()