Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / src / inference_engine / CMakeLists.txt
1 # Copyright (C) 2018-2019 Intel Corporation
2 # SPDX-License-Identifier: Apache-2.0
3 #
4
5 set (TARGET_NAME "inference_engine")
6
7 file (GLOB LIBRARY_SRC
8         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
9         ${CMAKE_CURRENT_SOURCE_DIR}/transform/*.cpp
10         ${CMAKE_CURRENT_SOURCE_DIR}/transform/transformations/*.cpp
11         ${CMAKE_CURRENT_SOURCE_DIR}/builders/*.cpp
12         ${CMAKE_CURRENT_SOURCE_DIR}/cpp_interfaces/*.cpp
13         ${CMAKE_CURRENT_SOURCE_DIR}/shape_infer/*.cpp
14         ${CMAKE_CURRENT_SOURCE_DIR}/shape_infer/built-in/*.cpp
15         ${CMAKE_CURRENT_SOURCE_DIR}/shape_infer/const_infer/*.cpp
16       )
17
18 file (GLOB LIBRARY_HEADERS
19        ${CMAKE_CURRENT_SOURCE_DIR}/*.h
20        ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
21        ${CMAKE_CURRENT_SOURCE_DIR}/cpp_interfaces/*.hpp
22        ${CMAKE_CURRENT_SOURCE_DIR}/shape_infer/*.hpp
23        ${CMAKE_CURRENT_SOURCE_DIR}/shape_infer/built-in/*.hpp
24         ${CMAKE_CURRENT_SOURCE_DIR}/shape_infer/const_infer/*.hpp
25        ${CMAKE_CURRENT_SOURCE_DIR}/cpp_interfaces/base/*.hpp
26        ${CMAKE_CURRENT_SOURCE_DIR}/cpp_interfaces/impl/*.hpp
27        ${CMAKE_CURRENT_SOURCE_DIR}/cpp_interfaces/interface/*.hpp
28       )
29
30 if( (NOT DEFINED ENABLE_SSE42) OR ENABLE_SSE42)
31     file (GLOB LIBRARY_SRC
32            ${LIBRARY_SRC}
33            ${CMAKE_CURRENT_SOURCE_DIR}/cpu_x86_sse42/*.cpp
34           )
35     file (GLOB LIBRARY_HEADERS
36            ${LIBRARY_HEADERS}
37            ${CMAKE_CURRENT_SOURCE_DIR}/cpu_x86_sse42/*.hpp
38           )
39     include_directories(${CMAKE_CURRENT_SOURCE_DIR}/cpu_x86_sse42)
40     if (WIN32)
41         set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/cpu_x86_sse42/blob_transform_sse42.cpp"
42                 "${CMAKE_CURRENT_SOURCE_DIR}/cpu_x86_sse42/ie_preprocess_data_sse42.cpp"
43                 "${CMAKE_CURRENT_SOURCE_DIR}/cpu_x86_sse42/ie_preprocess_gapi_kernels_sse42.cpp" PROPERTIES COMPILE_FLAGS /arch:SSE2)
44     else()
45         set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/cpu_x86_sse42/blob_transform_sse42.cpp"
46                 "${CMAKE_CURRENT_SOURCE_DIR}/cpu_x86_sse42/ie_preprocess_data_sse42.cpp"
47                 "${CMAKE_CURRENT_SOURCE_DIR}/cpu_x86_sse42/ie_preprocess_gapi_kernels_sse42.cpp" PROPERTIES COMPILE_FLAGS -msse4.2)
48     endif()
49     add_definitions(-DHAVE_SSE=1)
50 endif()
51
52 addVersionDefines(ie_version.cpp CI_BUILD_NUMBER)
53
54 set (PUBLIC_HEADERS_DIR "${IE_MAIN_SOURCE_DIR}/include")
55
56 file (GLOB PUBLIC_HEADERS
57        ${PUBLIC_HEADERS_DIR}/*.h
58        ${PUBLIC_HEADERS_DIR}/*.hpp
59       )
60
61 add_definitions(-DIMPLEMENT_INFERENCE_ENGINE_API)
62
63 # Create named folders for the sources within the .vcproj
64 # Empty name lists them directly under the .vcproj
65
66 source_group("src" FILES ${LIBRARY_SRC})
67 source_group("include" FILES ${LIBRARY_HEADERS} ${PUBLIC_HEADERS})
68
69 # Create shared library file from sources
70
71 add_library(${TARGET_NAME} SHARED
72             ${LIBRARY_SRC}
73             ${LIBRARY_HEADERS}
74             ${PUBLIC_HEADERS})
75 set_ie_threading_interface_for(${TARGET_NAME})
76
77 target_link_libraries(${TARGET_NAME} PRIVATE fluid ade ${INTEL_ITT_LIBS} PUBLIC pugixml ${CMAKE_DL_LIBS})
78
79 # Properties->C/C++->General->Additional Include Directories
80 target_include_directories(${TARGET_NAME} PUBLIC ${PUBLIC_HEADERS_DIR}
81                                           PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}"
82                                                   "${IE_MAIN_SOURCE_DIR}/src/dumper")
83
84 target_include_directories(${TARGET_NAME} SYSTEM PRIVATE "${IE_MAIN_SOURCE_DIR}/thirdparty/pugixml/src")
85 target_include_directories(${TARGET_NAME} SYSTEM PRIVATE "${IE_MAIN_SOURCE_DIR}/thirdparty/ocv")
86
87 if(ENABLE_MKL_DNN)
88     target_include_directories(${TARGET_NAME} SYSTEM PRIVATE "${IE_MAIN_SOURCE_DIR}/thirdparty/mkl-dnn/src/cpu/xbyak")
89 endif()
90
91 set_target_properties(${TARGET_NAME} PROPERTIES COMPILE_PDB_NAME ${TARGET_NAME})
92
93 # Static library used for unit tests which are always built
94
95 add_library(${TARGET_NAME}_s STATIC
96             ${LIBRARY_SRC}
97             ${LIBRARY_HEADERS}
98             ${PUBLIC_HEADERS})
99 set_ie_threading_interface_for(${TARGET_NAME}_s)
100
101 # Properties->C/C++->General->Additional Include Directories
102 target_include_directories(${TARGET_NAME}_s PUBLIC ${PUBLIC_HEADERS_DIR}
103                                           PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}"
104                                                   "${IE_MAIN_SOURCE_DIR}/src/dumper")
105
106 target_include_directories(${TARGET_NAME}_s SYSTEM PRIVATE "${IE_MAIN_SOURCE_DIR}/thirdparty/pugixml/src")
107 target_include_directories(${TARGET_NAME}_s SYSTEM PRIVATE "${IE_MAIN_SOURCE_DIR}/thirdparty/ocv")
108
109 if(ENABLE_MKL_DNN)
110   target_include_directories(${TARGET_NAME}_s SYSTEM PRIVATE "${IE_MAIN_SOURCE_DIR}/thirdparty/mkl-dnn/src/cpu/xbyak")
111 endif()
112
113 target_compile_definitions(${TARGET_NAME}_s PUBLIC -DUSE_STATIC_IE)
114
115 set_target_properties(${TARGET_NAME}_s PROPERTIES COMPILE_PDB_NAME ${TARGET_NAME}_s)
116
117 target_link_libraries(${TARGET_NAME}_s PRIVATE fluid
118                                        PRIVATE ade
119                                        PRIVATE ${INTEL_ITT_LIBS})
120
121 # export targets
122 export(TARGETS ${TARGET_NAME} NAMESPACE IE:: FILE "${CMAKE_BINARY_DIR}/targets.cmake")
123
124 configure_file(
125     "${CMAKE_SOURCE_DIR}/cmake/config.cmake.in"
126     "${CMAKE_BINARY_DIR}/InferenceEngineConfig.cmake"
127     COPYONLY)
128
129 configure_file(
130     "${CMAKE_SOURCE_DIR}/cmake/share/InferenceEngineConfig-version.cmake.in"
131     "${CMAKE_BINARY_DIR}/InferenceEngineConfig-version.cmake"
132     COPYONLY)
133
134 add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME})