[IE][NGRAPH][BUILD] Enable UNITY build for more targets (#2592)
[platform/upstream/dldt.git] / inference-engine / thirdparty / CMakeLists.txt
1 # Copyright (C) 2018-2020 Intel Corporation
2 # SPDX-License-Identifier: Apache-2.0
3 #
4
5 if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
6   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=unknown-warning-option -Wno-error=inconsistent-missing-override -Wno-error=pass-failed")
7   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=unknown-warning-option -Wno-error=inconsistent-missing-override -Wno-error=pass-failed")
8 elseif(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.1)
9     # On g++ 9.3.0 (Ubuntu 20.04) the ADE library raises "redundant-move" warnings
10     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=redundant-move")
11     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=redundant-move")
12 elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") AND ("${MSVC_VERSION}" VERSION_GREATER_EQUAL "1920"))
13     # 1920 version of MSVC 2019
14     # This flagis needed for enabling SIMD vectorization with command '#pragma omp simd'.
15     # Compilation with '/openmp:experimental' key allow us to enable vectorizatikon capability in MSVC.
16     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /openmp:experimental")
17 endif()
18
19 function(build_with_lto)
20     if(ENABLE_LTO)
21         ie_enable_lto()
22     endif()
23
24     if (ENABLE_CLDNN)
25         set(CLDNN__OUTPUT_BIN_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
26         set(CLDNN__OUTPUT_LIB_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
27         if (ENABLE_TESTS AND ENABLE_CLDNN_TESTS)
28             set(CLDNN__INCLUDE_TESTS ON CACHE BOOL "" FORCE)
29             set(CLDNN__INCLUDE_CORE_INTERNAL_TESTS ON CACHE BOOL "" FORCE)
30         else()
31             set(CLDNN__INCLUDE_TESTS OFF CACHE BOOL "" FORCE)
32             set(CLDNN__INCLUDE_CORE_INTERNAL_TESTS OFF CACHE BOOL "" FORCE)
33         endif()
34         set(CLDNN__INCLUDE_EXAMPLES OFF CACHE BOOL "" FORCE)
35         set(CLDNN__INCLUDE_TUTORIAL OFF CACHE BOOL "" FORCE)
36         if (WIN32)
37             set(CLDNN__ARCHITECTURE_TARGET "Windows64" CACHE STRING "" FORCE)
38         elseif (ANDROID)
39             set(CLDNN__ARCHITECTURE_TARGET "Android64" CACHE STRING "" FORCE)
40         else()
41             set(CLDNN__ARCHITECTURE_TARGET "Linux64" CACHE STRING "" FORCE)
42         endif()
43
44         add_subdirectory(clDNN)
45
46         # disable CLDNN docs build
47         set_target_properties(docs PROPERTIES EXCLUDE_FROM_ALL ON
48                                               FOLDER docs)
49     endif()
50
51     function(ie_build_pugixml)
52         set(BUILD_TESTS_current ${BUILD_TESTS})
53         set(BUILD_TESTS OFF CACHE BOOL "Build tests" FORCE)
54         add_subdirectory(pugixml)
55         set(BUILD_TESTS ${BUILD_TESTS_current} CACHE BOOL "Build tests" FORCE)
56     endfunction()
57
58     if (USE_SYSTEM_PUGIXML)
59         find_package(PugiXML REQUIRED)
60         set_property(TARGET pugixml PROPERTY IMPORTED_GLOBAL TRUE)
61     else()
62         ie_build_pugixml()
63         target_include_directories(pugixml INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/pugixml/src>")
64     endif()
65     add_subdirectory(stb_lib)
66     add_subdirectory(ade)
67     add_subdirectory(fluid/modules/gapi)
68
69     set_target_properties(ade fluid stb_image
70                           PROPERTIES FOLDER thirdparty)
71
72     # developer package
73
74     ie_developer_export_targets(ade fluid)
75
76     if (NOT USE_SYSTEM_PUGIXML)
77         set_target_properties(pugixml PROPERTIES FOLDER thirdparty)
78         ie_developer_export_targets(pugixml)
79         if(TARGET pugixml_mt)
80             ie_developer_export_targets(pugixml_mt)
81             set_target_properties(pugixml_mt PROPERTIES FOLDER thirdparty)
82         endif()
83     endif()
84
85     if(ENABLE_MKL_DNN)
86         set(SDL_cmake_included ON)
87         include(mkldnn.cmake)
88     endif()
89 endfunction()
90
91 build_with_lto()