1 # Copyright (C) 2018-2019 Intel Corporation
2 # SPDX-License-Identifier: Apache-2.0
5 cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
7 project(InferenceEngine)
13 ## WA for problem with gtest submodule. It cannot detect uint32 type.
14 ## remove Gtest submodule and this two lines together
15 include (CheckTypeSize)
16 check_type_size (uint32_t uint32_t LANGUAGE CXX)
18 if (UNIX AND NOT APPLE)
22 option (OS_FOLDER "create OS dedicated folder in output" OFF)
24 if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
25 set (ARCH_FOLDER armv7l)
26 elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
27 set (ARCH_FOLDER intel64)
29 set (ARCH_FOLDER ia32)
33 message ("**** OS FOLDER IS: [${OS_FOLDER}]")
34 if ("${OS_FOLDER}" STREQUAL "ON")
35 message ("**** USING OS FOLDER: [${CMAKE_SYSTEM_NAME}]")
36 set (BIN_FOLDER bin/${CMAKE_SYSTEM_NAME}/${ARCH_FOLDER})
38 set (BIN_FOLDER bin/${OS_FOLDER}/${ARCH_FOLDER})
41 set (BIN_FOLDER bin/${ARCH_FOLDER})
44 set (IE_MAIN_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
45 set (CMAKE_MODULE_PATH "${IE_MAIN_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
47 #printing debug messages
50 if("${CMAKE_BUILD_TYPE}" STREQUAL "")
51 debug_message(STATUS "CMAKE_BUILD_TYPE not defined, 'Release' will be used")
52 set(CMAKE_BUILD_TYPE "Release")
54 message(STATUS "BUILD_CONFIGURATION: ${CMAKE_BUILD_TYPE}")
57 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage -O0")
61 SET(LIB_DL ${CMAKE_DL_LIBS})
64 set (OUTPUT_ROOT ${IE_MAIN_SOURCE_DIR})
68 #resolving dependencies for the project
69 include (dependencies)
71 set(CMAKE_DEBUG_POSTFIX ${IE_DEBUG_POSTFIX})
72 set(CMAKE_RELEASE_POSTFIX ${IE_RELEASE_POSTFIX})
75 # Support CMake multiconfiguration for Visual Studio build
76 set(IE_BUILD_POSTFIX $<$<CONFIG:Debug>:${IE_DEBUG_POSTFIX}>$<$<CONFIG:Release>:${IE_RELEASE_POSTFIX}>)
77 set(IE_BUILD_CONFIGURATION $<CONFIG>)
79 if (${CMAKE_BUILD_TYPE} STREQUAL "Debug" )
80 set(IE_BUILD_POSTFIX ${IE_DEBUG_POSTFIX})
82 set(IE_BUILD_POSTFIX ${IE_RELEASE_POSTFIX})
84 set(IE_BUILD_CONFIGURATION ${CMAKE_BUILD_TYPE})
87 add_definitions(-DIE_BUILD_POSTFIX=\"${IE_BUILD_POSTFIX}\")
91 #set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
92 #set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
94 set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER})
95 set (CMAKE_LIBRARY_PATH ${OUTPUT_ROOT}/${BIN_FOLDER})
96 set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER})
97 set (CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER})
98 set (CMAKE_PDB_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER})
99 set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER})
100 set (LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER})
101 set (LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_DIRECTORY}) # compatibility issue: linux uses LIBRARY_OUTPUT_PATH, windows uses LIBRARY_OUTPUT_DIRECTORY
103 set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${IE_BUILD_CONFIGURATION}/lib)
104 set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${IE_BUILD_CONFIGURATION}/lib)
105 set (CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${IE_BUILD_CONFIGURATION})
106 set (CMAKE_PDB_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${IE_BUILD_CONFIGURATION})
107 set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${IE_BUILD_CONFIGURATION})
108 set (LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}/${IE_BUILD_CONFIGURATION}/lib)
109 set (LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_DIRECTORY}/lib)
113 set(CMAKE_MACOSX_RPATH 1)
116 #rpath fully disabled
117 if (NOT ENABLE_PLUGIN_RPATH)
118 SET (CMAKE_SKIP_RPATH TRUE)
121 #Use solution folders.
122 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
123 #message("=====================> ${CMAKE_BUILD_TYPE} <=====================")
125 message (STATUS "PROJECT ............................... " ${PROJECT_NAME})
126 message (STATUS "CMAKE_BINARY_DIR ...................... " ${CMAKE_BINARY_DIR})
127 message (STATUS "IE_MAIN_SOURCE_DIR .................... " ${IE_MAIN_SOURCE_DIR})
128 message (STATUS "CMAKE_GENERATOR ....................... " ${CMAKE_GENERATOR})
129 message (STATUS "CMAKE_C_COMPILER_ID ................... " ${CMAKE_C_COMPILER_ID})
133 set (CMAKE_POSITION_INDEPENDENT_CODE ON)
137 include(CheckCXXCompilerFlag)
141 add_subdirectory(src)
142 add_subdirectory(tests)
143 add_subdirectory(thirdparty)
144 set(InferenceEngine_DIR "${CMAKE_BINARY_DIR}")
147 set (LIB_FOLDER ${IE_MAIN_SOURCE_DIR}/${BIN_FOLDER}/${IE_BUILD_CONFIGURATION}/lib)
149 # gflags and format_reader targets are kept inside of samples directory and
150 # they must be built even if samples build is disabled (required for tests and tools).
151 add_subdirectory(samples)
153 file(GLOB_RECURSE SAMPLES_SOURCES samples/*.cpp samples/*.hpp samples/*.h)
154 add_cpplint_target(sample_cpplint
155 FOR_SOURCES ${SAMPLES_SOURCES}
156 EXCLUDE_PATTERNS "thirdparty/*" "pugixml/*")
159 add_subdirectory(ie_bridges/python)
162 add_cpplint_report_target()