Minimize rebuild for Makefiles generator (#16729)

* Add dependency from ov_plugins.hpp only for files which use it

* Remove rebuild files depends on CI_BUILD_NUMBER changes

* Try to fix static build

* Fixed comments

* Fixed build

* Merged some change

* Try to fix build

* Try to fix nvidia build

* Take LTO value from target property
This commit is contained in:
Ilya Churaev
2023-04-06 11:02:28 +04:00
committed by GitHub
parent f2894d09e9
commit 70ef0b5316
10 changed files with 58 additions and 31 deletions
+4 -21
View File
@@ -49,10 +49,6 @@ function(ie_add_plugin)
# create and configure target
if(NOT IE_PLUGIN_PSEUDO_PLUGIN_FOR)
if(IE_PLUGIN_VERSION_DEFINES_FOR)
addVersionDefines(${IE_PLUGIN_VERSION_DEFINES_FOR} CI_BUILD_NUMBER)
endif()
set(input_files ${IE_PLUGIN_SOURCES})
foreach(obj_lib IN LISTS IE_PLUGIN_OBJECT_LIBRARIES)
list(APPEND input_files $<TARGET_OBJECTS:${obj_lib}>)
@@ -67,6 +63,10 @@ function(ie_add_plugin)
add_library(${IE_PLUGIN_NAME} ${library_type} ${input_files})
if(IE_PLUGIN_VERSION_DEFINES_FOR)
ov_add_version_defines(${IE_PLUGIN_VERSION_DEFINES_FOR} ${IE_PLUGIN_NAME})
endif()
target_compile_definitions(${IE_PLUGIN_NAME} PRIVATE IMPLEMENT_INFERENCE_ENGINE_PLUGIN)
if(NOT BUILD_SHARED_LIBS)
# to distinguish functions creating plugin objects
@@ -351,21 +351,4 @@ function(ov_generate_plugins_hpp)
# so, we have to use explicit target and make it dependency for inference_engine
add_custom_target(_ov_plugins_hpp DEPENDS ${ov_plugins_hpp})
add_dependencies(inference_engine_obj _ov_plugins_hpp)
# add dependency for object files
get_target_property(sources inference_engine_obj SOURCES)
foreach(source IN LISTS sources)
if("${source}" MATCHES "\\$\\<TARGET_OBJECTS\\:([A-Za-z0-9_]*)\\>")
# object library
set(obj_library ${CMAKE_MATCH_1})
get_target_property(obj_sources ${obj_library} SOURCES)
list(APPEND all_sources ${obj_sources})
else()
# usual source
list(APPEND all_sources ${source})
endif()
endforeach()
# add dependency on header file generation for all inference_engine source files
set_source_files_properties(${all_sources} PROPERTIES OBJECT_DEPENDS ${ov_plugins_hpp})
endfunction()
+40
View File
@@ -185,6 +185,46 @@ macro (addVersionDefines FILE)
unset(__version_file)
endmacro()
macro (ov_add_version_defines FILE TARGET)
set(__version_file ${FILE})
if(NOT IS_ABSOLUTE ${__version_file})
set(__version_file "${CMAKE_CURRENT_SOURCE_DIR}/${__version_file}")
endif()
if(NOT EXISTS ${__version_file})
message(FATAL_ERROR "${FILE} does not exists in current source directory")
endif()
_remove_source_from_target(${TARGET} ${FILE})
_remove_source_from_target(${TARGET} ${__version_file})
if (BUILD_SHARED_LIBS)
add_library(${TARGET}_version OBJECT ${__version_file})
else()
add_library(${TARGET}_version STATIC ${__version_file})
endif()
if(SUGGEST_OVERRIDE_SUPPORTED)
set_source_files_properties(${__version_file}
PROPERTIES COMPILE_OPTIONS -Wno-suggest-override)
endif()
target_compile_definitions(${TARGET}_version PRIVATE
CI_BUILD_NUMBER=\"${CI_BUILD_NUMBER}\"
$<TARGET_PROPERTY:${TARGET},INTERFACE_COMPILE_DEFINITIONS>
$<TARGET_PROPERTY:${TARGET},COMPILE_DEFINITIONS>)
target_include_directories(${TARGET}_version PRIVATE
$<TARGET_PROPERTY:${TARGET},INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:${TARGET},INCLUDE_DIRECTORIES>)
target_link_libraries(${TARGET}_version PRIVATE
$<TARGET_PROPERTY:${TARGET},LINK_LIBRARIES>)
target_compile_options(${TARGET}_version PRIVATE
$<TARGET_PROPERTY:${TARGET},INTERFACE_COMPILE_OPTIONS>
$<TARGET_PROPERTY:${TARGET},COMPILE_OPTIONS>)
set_target_properties(${TARGET}_version
PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE
$<TARGET_PROPERTY:${TARGET},INTERPROCEDURAL_OPTIMIZATION_RELEASE>)
target_sources(${TARGET} PRIVATE $<TARGET_OBJECTS:${TARGET}_version>)
unset(__version_file)
endmacro()
function(ov_add_library_version library)
if(NOT DEFINED OpenVINO_SOVERSION)
message(FATAL_ERROR "Internal error: OpenVINO_SOVERSION is not defined")
@@ -78,7 +78,7 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO}
OUTPUT_NAME "_pyopenvino")
addVersionDefines(pyopenvino.cpp CI_BUILD_NUMBER)
ov_add_version_defines(pyopenvino.cpp ${PROJECT_NAME})
if(OV_GENERATOR_MULTI_CONFIG)
string(APPEND _cmd_echo
+2
View File
@@ -20,8 +20,10 @@ endif()
add_library(${TARGET_NAME}
$<TARGET_OBJECTS:ngraph_obj>
$<TARGET_OBJECTS:ngraph_obj_version>
$<TARGET_OBJECTS:frontend_common_obj>
$<TARGET_OBJECTS:inference_engine_obj>
$<TARGET_OBJECTS:inference_engine_obj_version>
$<TARGET_OBJECTS:inference_engine_transformations_obj>
$<TARGET_OBJECTS:inference_engine_lp_transformations_obj>)
+1 -1
View File
@@ -76,7 +76,7 @@ ie_faster_build(ngraph_obj
UNITY
PCH PRIVATE "src/precomp.hpp")
addVersionDefines(src/version.cpp CI_BUILD_NUMBER)
ov_add_version_defines(src/version.cpp ngraph_obj)
target_link_libraries(ngraph_obj PRIVATE ngraph::builder ngraph::reference openvino::util
openvino::pugixml ov_shape_inference openvino::core::dev)
+2 -2
View File
@@ -79,8 +79,6 @@ if(ENABLE_SSE42)
endif()
endif()
addVersionDefines(src/ie_version.cpp CI_BUILD_NUMBER)
set (PUBLIC_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
file (GLOB_RECURSE PUBLIC_HEADERS
@@ -130,6 +128,8 @@ add_library(${TARGET_NAME}_obj OBJECT
${LIBRARY_HEADERS}
${PUBLIC_HEADERS})
ov_add_version_defines(src/ie_version.cpp ${TARGET_NAME}_obj)
if(NOT BUILD_SHARED_LIBS)
target_compile_definitions(${TARGET_NAME}_obj PUBLIC OPENVINO_STATIC_LIBRARY)
endif()
@@ -5,7 +5,6 @@
set(TARGET_NAME ov_auto_batch_unit_tests)
set(CI_BUILD_NUMBER "unittest")
addVersionDefines(${OpenVINO_SOURCE_DIR}/src/plugins/auto_batch/src/auto_batch.cpp CI_BUILD_NUMBER)
add_definitions(-DAUTOBATCH_UNITTEST)
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
@@ -52,5 +51,6 @@ addIeTargetTest(
LABELS
Auto_Batch
)
ov_add_version_defines(${OpenVINO_SOURCE_DIR}/src/plugins/auto_batch/src/auto_batch.cpp ${TARGET_NAME})
set_ie_threading_interface_for(${TARGET_NAME})
+3 -2
View File
@@ -32,8 +32,6 @@ file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
file(GLOB_RECURSE HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h
${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp)
addVersionDefines(${CMAKE_CURRENT_SOURCE_DIR}/src/plugin.cpp CI_BUILD_NUMBER)
add_subdirectory(thirdparty)
if(ENABLE_TESTS)
@@ -45,6 +43,7 @@ endif()
ie_add_plugin(NAME ${TARGET_NAME}
DEVICE_NAME "CPU"
AS_EXTENSION
VERSION_DEFINES_FOR src/plugin.cpp
SOURCES ${SOURCES} ${HEADERS})
set_ie_threading_interface_for(${TARGET_NAME})
@@ -81,6 +80,8 @@ if(BUILD_SHARED_LIBS)
add_library(${TARGET_NAME}_obj OBJECT ${SOURCES} ${HEADERS})
link_system_libraries(${TARGET_NAME}_obj PUBLIC dnnl openvino::pugixml)
ov_add_version_defines(src/plugin.cpp ${TARGET_NAME}_obj)
target_include_directories(${TARGET_NAME}_obj
PRIVATE
$<TARGET_PROPERTY:openvino::runtime::dev,INTERFACE_INCLUDE_DIRECTORIES>
+3 -2
View File
@@ -43,8 +43,6 @@ file(GLOB_RECURSE HEADERS
${CMAKE_CURRENT_SOURCE_DIR}/src/*.h
${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp)
addVersionDefines(src/gna_plugin_entry_points.cpp CI_BUILD_NUMBER)
find_package(libGNA REQUIRED
PATHS "${CMAKE_CURRENT_SOURCE_DIR}/cmake"
NO_DEFAULT_PATH)
@@ -56,6 +54,7 @@ find_package(libGNA REQUIRED
ie_add_plugin(NAME ${TARGET_NAME}
DEVICE_NAME "GNA"
SOURCES ${SOURCES} ${HEADERS}
VERSION_DEFINES_FOR src/gna_plugin_entry_points.cpp
ADD_CLANG_FORMAT)
# Enable support of CC for the plugin
@@ -79,6 +78,8 @@ ie_add_api_validator_post_build_step(TARGET ${TARGET_NAME})
add_library(${TARGET_NAME}_test_static STATIC EXCLUDE_FROM_ALL ${SOURCES} ${HEADERS})
ov_add_version_defines(src/gna_plugin_entry_points.cpp ${TARGET_NAME}_test_static)
target_compile_definitions(${TARGET_NAME}_test_static
PRIVATE
_NO_MKL_
+1 -1
View File
@@ -5,7 +5,6 @@
set(TARGET_NAME ieMultiPluginUnitTests)
set(CI_BUILD_NUMBER "unittest")
addVersionDefines(${OpenVINO_SOURCE_DIR}/src/plugins/auto/plugin.cpp CI_BUILD_NUMBER)
add_definitions(-DMULTIUNITTEST)
addIeTargetTest(
@@ -28,5 +27,6 @@ addIeTargetTest(
Multi
Auto
)
ov_add_version_defines(${OpenVINO_SOURCE_DIR}/src/plugins/auto/plugin.cpp ${TARGET_NAME})
set_ie_threading_interface_for(${TARGET_NAME})