From 2104b6dde026cad997d25e26cb20ba6b5749d8bf Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Fri, 30 Oct 2020 21:38:34 +0300 Subject: [PATCH] Added support for Visual Studio VERSIONINFO (#2900) * Generate vs_version file * Fixed comments * Fixed comments --- cmake/developer_package.cmake | 2 + cmake/vs_version/vs_version.cmake | 87 ++++++++++++++++++++++ cmake/vs_version/vs_version.rc.in | 38 ++++++++++ inference-engine/cmake/plugins/plugins.cmake | 3 + inference-engine/ie_bridges/c/src/CMakeLists.txt | 3 + .../src/openvino/inference_engine/CMakeLists.txt | 7 ++ .../src/inference_engine/CMakeLists.txt | 4 + inference-engine/src/legacy_api/CMakeLists.txt | 3 + .../low_precision_transformations/CMakeLists.txt | 3 + .../CMakeLists.txt | 3 + inference-engine/src/preprocessing/CMakeLists.txt | 3 + .../src/readers/ir_reader/CMakeLists.txt | 3 + .../src/readers/ir_reader_v7/CMakeLists.txt | 3 + .../src/readers/onnx_reader/CMakeLists.txt | 3 + .../src/transformations/CMakeLists.txt | 3 + ngraph/core/CMakeLists.txt | 5 ++ ngraph/frontend/onnx_import/CMakeLists.txt | 5 ++ ngraph/test/runtime/CMakeLists.txt | 5 ++ ngraph/test/runtime/ie/CMakeLists.txt | 9 ++- ngraph/test/runtime/interpreter/CMakeLists.txt | 9 ++- 20 files changed, 195 insertions(+), 6 deletions(-) create mode 100644 cmake/vs_version/vs_version.cmake create mode 100644 cmake/vs_version/vs_version.rc.in diff --git a/cmake/developer_package.cmake b/cmake/developer_package.cmake index 9d9d9a3..e8f6966 100644 --- a/cmake/developer_package.cmake +++ b/cmake/developer_package.cmake @@ -245,3 +245,5 @@ function(set_ci_build_number) set(CI_BUILD_NUMBER "${CI_BUILD_NUMBER}" PARENT_SCOPE) endfunction() set_ci_build_number() + +include(vs_version/vs_version) diff --git a/cmake/vs_version/vs_version.cmake b/cmake/vs_version/vs_version.cmake new file mode 100644 index 0000000..7b9f45f --- /dev/null +++ b/cmake/vs_version/vs_version.cmake @@ -0,0 +1,87 @@ +# Copyright (C) 2020 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +macro(ie_parse_ci_build_number) + if(CI_BUILD_NUMBER MATCHES "^([0-9]+)\.([0-9]+)\.([0-9]+)\-.*") + set(IE_VERSION_MAJOR ${CMAKE_MATCH_1}) + set(IE_VERSION_MINOR ${CMAKE_MATCH_2}) + set(IE_VERSION_PATCH ${CMAKE_MATCH_3}) + set(IE_VS_VER_HAS_WELL_DEFINED_VERSION 1) + else() + set(IE_VS_VER_HAS_WELL_DEFINED_VERSION 0) + endif() +endmacro() + +ie_parse_ci_build_number() + +if(IE_VS_VER_HAS_WELL_DEFINED_VERSION) + set(IE_VS_VER_FILEVERSION_QUAD "${IE_VERSION_MAJOR},${IE_VERSION_MINOR},${IE_VERSION_PATCH},0") + set(IE_VS_VER_PRODUCTVERSION_QUAD "${IE_VERSION_MAJOR},${IE_VERSION_MINOR},${IE_VERSION_PATCH},0") + set(IE_VS_VER_FILEVERSION_STR "${IE_VERSION_MAJOR}.${IE_VERSION_MINOR}.${IE_VERSION_PATCH}.0") +endif() + +set(IE_VS_VER_PRODUCTVERSION_STR "${CI_BUILD_NUMBER}") +set(IE_VS_VER_PRODUCTNAME_STR "OpenVINO toolkit") +set(IE_VS_VER_COPYRIGHT_STR "Copyright (C) 2018-2020, Intel Corporation") +set(IE_VS_VER_COMMENTS_STR "https://docs.openvinotoolkit.org/") + +# +# ie_add_vs_version_file(NAME +# FILEDESCRIPTION +# [FILEVERSION ] +# [INTERNALNAME ] +# [COPYRIGHT ] +# [PRODUCTNAME ] +# [PRODUCTVERSION ] +# [COMMENTS ] +# [FILEVERSION_QUAD ] +# [PRODUCTVERSION_QUAD ]) +# +function(ie_add_vs_version_file) + if(NOT WIN32) + return() + endif() + + cmake_parse_arguments(VS_VER "" "NAME;FILEDESCRIPTION;FILEVERSION;INTERNALNAME;COPYRIGHT;PRODUCTNAME;PRODUCTVERSION;COMMENTS;FILEVERSION_QUAD;PRODUCTVERSION_QUAD" "" ${ARGN}) + + if(NOT TARGET ${VS_VER_NAME}) + message(FATAL_ERROR "${VS_VER_NAME} must define a target") + endif() + + macro(_vs_ver_update_variable name) + if(VS_VER_NAME AND DEFINED IE_${VS_VER_NAME}_VS_VER_${name}) + set(IE_VS_VER_${name} "${IE_${VS_VER_NAME}_VS_VER_${name}}") + elseif(VS_VER_${name}) + set(IE_VS_VER_${name} "${VS_VER_${name}}") + endif() + endmacro() + + _vs_ver_update_variable(FILEVERSION_QUAD) + _vs_ver_update_variable(PRODUCTVERSION_QUAD) + + macro(_vs_ver_update_str_variable name) + if(VS_VER_NAME AND DEFINED IE_${VS_VER_NAME}_VS_VER_${name}) + set(IE_VS_VER_${name}_STR "${IE_${VS_VER_NAME}_VS_VER_${name}}") + elseif(VS_VER_${name}) + set(IE_VS_VER_${name}_STR "${VS_VER_${name}}") + endif() + endmacro() + + _vs_ver_update_str_variable(FILEDESCRIPTION) + _vs_ver_update_str_variable(FILEVERSION) + _vs_ver_update_str_variable(INTERNALNAME) + _vs_ver_update_str_variable(COPYRIGHT) + _vs_ver_update_str_variable(PRODUCTNAME) + _vs_ver_update_str_variable(PRODUCTVERSION) + _vs_ver_update_str_variable(COMMENTS) + + set(IE_VS_VER_ORIGINALFILENAME_STR "${CMAKE_SHARED_LIBRARY_PREFIX}${VS_VER_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(IE_VS_VER_INTERNALNAME_STR ${VS_VER_NAME}) + + set(vs_version_output "${CMAKE_CURRENT_BINARY_DIR}/vs_version.rc") + configure_file("${OpenVINO_MAIN_SOURCE_DIR}/cmake/vs_version/vs_version.rc.in" "${vs_version_output}" @ONLY) + + source_group("src" FILES ${vs_version_output}) + target_sources(${VS_VER_NAME} PRIVATE ${vs_version_output}) +endfunction() diff --git a/cmake/vs_version/vs_version.rc.in b/cmake/vs_version/vs_version.rc.in new file mode 100644 index 0000000..96b545f --- /dev/null +++ b/cmake/vs_version/vs_version.rc.in @@ -0,0 +1,38 @@ +#include + +VS_VERSION_INFO VERSIONINFO +#if IE_VS_VER_HAS_WELL_DEFINED_VERSION + FILEVERSION @IE_VS_VER_FILEVERSION_QUAD@ + PRODUCTVERSION @IE_VS_VER_PRODUCTVERSION_QUAD@ +#endif + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS 1 +#else + FILEFLAGS 0 +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE 0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "FileDescription", "@IE_VS_VER_FILEDESCRIPTION_STR@\0" +#if IE_VS_VER_HAS_WELL_DEFINED_VERSION + VALUE "FileVersion", "@IE_VS_VER_FILEVERSION_STR@\0" +#endif + VALUE "InternalName", "@IE_VS_VER_INTERNALNAME_STR@\0" + VALUE "LegalCopyright", "@IE_VS_VER_COPYRIGHT_STR@\0" + VALUE "OriginalFilename", "@IE_VS_VER_ORIGINALFILENAME_STR@\0" + VALUE "ProductName", "@IE_VS_VER_PRODUCTNAME_STR@\0" + VALUE "ProductVersion", "@IE_VS_VER_PRODUCTVERSION_STR@\0" + VALUE "Comments", "@IE_VS_VER_COMMENTS_STR@\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1252 + END +END \ No newline at end of file diff --git a/inference-engine/cmake/plugins/plugins.cmake b/inference-engine/cmake/plugins/plugins.cmake index ef1dccc..52b033d 100644 --- a/inference-engine/cmake/plugins/plugins.cmake +++ b/inference-engine/cmake/plugins/plugins.cmake @@ -55,6 +55,9 @@ function(ie_add_plugin) add_library(${IE_PLUGIN_NAME} SHARED ${input_files}) target_compile_definitions(${IE_PLUGIN_NAME} PRIVATE IMPLEMENT_INFERENCE_ENGINE_PLUGIN) + ie_add_vs_version_file(NAME ${TARGET_NAME} + FILEDESCRIPTION "Inference Engine ${IE_PLUGIN_DEVICE_NAME} device plugin library") + if(TARGET IE::inference_engine_plugin_api) target_link_libraries(${IE_PLUGIN_NAME} PRIVATE IE::inference_engine_plugin_api) else() diff --git a/inference-engine/ie_bridges/c/src/CMakeLists.txt b/inference-engine/ie_bridges/c/src/CMakeLists.txt index 4ebf7cc..5320ca0 100644 --- a/inference-engine/ie_bridges/c/src/CMakeLists.txt +++ b/inference-engine/ie_bridges/c/src/CMakeLists.txt @@ -19,6 +19,9 @@ add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) +ie_add_vs_version_file(NAME ${TARGET_NAME} + FILEDESCRIPTION "Inference Engine C API Core Runtime library") + # export export(TARGETS ${TARGET_NAME} NAMESPACE IE:: APPEND FILE "${CMAKE_BINARY_DIR}/targets.cmake") diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt b/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt index 2211d63..b680a27 100644 --- a/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt @@ -30,6 +30,13 @@ foreach(PYX_FILE ${OTHER_SOURCES}) list(APPEND INSTALLED_TARGETS ${PYX_NAME}) endforeach() +if(COMMAND ie_add_vs_version_file) + foreach(target IN LISTS INSTALLED_TARGETS) + ie_add_vs_version_file(NAME ${target} + FILEDESCRIPTION "Inference Engine Python library") + endforeach() +endif() + function(python_disable_deprecated_warnings) disable_deprecated_warnings() set(pyx_file "${CMAKE_CURRENT_BINARY_DIR}/ie_api.cxx" "${CMAKE_CURRENT_BINARY_DIR}/constants.cxx") diff --git a/inference-engine/src/inference_engine/CMakeLists.txt b/inference-engine/src/inference_engine/CMakeLists.txt index 9a12b58..97eba73 100644 --- a/inference-engine/src/inference_engine/CMakeLists.txt +++ b/inference-engine/src/inference_engine/CMakeLists.txt @@ -125,8 +125,12 @@ add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}_obj) add_library(${TARGET_NAME} SHARED ${IE_STATIC_DEPENDENT_FILES} + ${vs_version_file} $) +ie_add_vs_version_file(NAME ${TARGET_NAME} + FILEDESCRIPTION "Inference Engine Core Runtime library") + set_ie_threading_interface_for(${TARGET_NAME}) target_link_libraries(${TARGET_NAME} PRIVATE pugixml openvino::itt ${CMAKE_DL_LIBS} Threads::Threads diff --git a/inference-engine/src/legacy_api/CMakeLists.txt b/inference-engine/src/legacy_api/CMakeLists.txt index 2058e61..79aae75 100644 --- a/inference-engine/src/legacy_api/CMakeLists.txt +++ b/inference-engine/src/legacy_api/CMakeLists.txt @@ -47,6 +47,9 @@ target_include_directories(${TARGET_NAME}_obj PRIVATE add_library(${TARGET_NAME} SHARED $) +ie_add_vs_version_file(NAME ${TARGET_NAME} + FILEDESCRIPTION "Inference Engine Legacy library") + set_ie_threading_interface_for(${TARGET_NAME}) target_link_libraries(${TARGET_NAME} PUBLIC inference_engine diff --git a/inference-engine/src/low_precision_transformations/CMakeLists.txt b/inference-engine/src/low_precision_transformations/CMakeLists.txt index 0c7f828..60fb59a 100644 --- a/inference-engine/src/low_precision_transformations/CMakeLists.txt +++ b/inference-engine/src/low_precision_transformations/CMakeLists.txt @@ -25,6 +25,9 @@ ie_faster_build(${TARGET_NAME} UNITY ) +ie_add_vs_version_file(NAME ${TARGET_NAME} + FILEDESCRIPTION "Inference Engine LP transformations library") + target_compile_definitions(${TARGET_NAME} PRIVATE inference_engine_transformations_EXPORTS) target_link_libraries(${TARGET_NAME} PUBLIC inference_engine_transformations diff --git a/inference-engine/src/low_precision_transformations_legacy/CMakeLists.txt b/inference-engine/src/low_precision_transformations_legacy/CMakeLists.txt index 322d37e..d002d89 100644 --- a/inference-engine/src/low_precision_transformations_legacy/CMakeLists.txt +++ b/inference-engine/src/low_precision_transformations_legacy/CMakeLists.txt @@ -26,6 +26,9 @@ ie_faster_build(${TARGET_NAME} PCH PRIVATE "src/precomp.hpp" ) +ie_add_vs_version_file(NAME ${TARGET_NAME} + FILEDESCRIPTION "Inference Engine LP legacy transformations library") + target_compile_definitions(${TARGET_NAME} PRIVATE IMPLEMENT_INFERENCE_ENGINE_API PUBLIC USE_CNNNETWORK_LPT) diff --git a/inference-engine/src/preprocessing/CMakeLists.txt b/inference-engine/src/preprocessing/CMakeLists.txt index 478735d..a040b0e 100644 --- a/inference-engine/src/preprocessing/CMakeLists.txt +++ b/inference-engine/src/preprocessing/CMakeLists.txt @@ -127,6 +127,9 @@ set_ie_threading_interface_for(${TARGET_NAME}_obj) add_library(${TARGET_NAME} SHARED $) +ie_add_vs_version_file(NAME ${TARGET_NAME} + FILEDESCRIPTION "Inference Engine Preprocessing plugin") + set_ie_threading_interface_for(${TARGET_NAME}) target_link_libraries(${TARGET_NAME} PRIVATE fluid openvino::itt diff --git a/inference-engine/src/readers/ir_reader/CMakeLists.txt b/inference-engine/src/readers/ir_reader/CMakeLists.txt index 51ef530..75de680 100644 --- a/inference-engine/src/readers/ir_reader/CMakeLists.txt +++ b/inference-engine/src/readers/ir_reader/CMakeLists.txt @@ -20,6 +20,9 @@ ie_faster_build(${TARGET_NAME} UNITY ) +ie_add_vs_version_file(NAME ${TARGET_NAME} + FILEDESCRIPTION "Inference Engine IR reader plugin") + target_compile_definitions(${TARGET_NAME} PRIVATE IMPLEMENT_INFERENCE_ENGINE_PLUGIN IR_READER_V10) diff --git a/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt b/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt index 7920a56..80c8bad 100644 --- a/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt +++ b/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt @@ -22,6 +22,9 @@ ie_faster_build(${TARGET_NAME} UNITY ) +ie_add_vs_version_file(NAME ${TARGET_NAME} + FILEDESCRIPTION "Inference Engine IR v7 reader plugin") + target_compile_definitions(${TARGET_NAME} PRIVATE IMPLEMENT_INFERENCE_ENGINE_PLUGIN) target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/" diff --git a/inference-engine/src/readers/onnx_reader/CMakeLists.txt b/inference-engine/src/readers/onnx_reader/CMakeLists.txt index b2f6d9e..42bed3a 100644 --- a/inference-engine/src/readers/onnx_reader/CMakeLists.txt +++ b/inference-engine/src/readers/onnx_reader/CMakeLists.txt @@ -16,6 +16,9 @@ source_group("src" FILES ${LIBRARY_SRC}) add_library(${TARGET_NAME} SHARED ${LIBRARY_SRC}) +ie_add_vs_version_file(NAME ${TARGET_NAME} + FILEDESCRIPTION "Inference Engine ONNX reader plugin") + target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_compile_definitions(${TARGET_NAME} PRIVATE IMPLEMENT_INFERENCE_ENGINE_PLUGIN) diff --git a/inference-engine/src/transformations/CMakeLists.txt b/inference-engine/src/transformations/CMakeLists.txt index a6cd168..3c86bfb 100644 --- a/inference-engine/src/transformations/CMakeLists.txt +++ b/inference-engine/src/transformations/CMakeLists.txt @@ -24,6 +24,9 @@ ie_faster_build(${TARGET_NAME} PCH PRIVATE "src/precomp.hpp" ) +ie_add_vs_version_file(NAME ${TARGET_NAME} + FILEDESCRIPTION "Inference Engine Transformations library") + target_link_libraries(${TARGET_NAME} PUBLIC ${NGRAPH_LIBRARIES} PRIVATE openvino::itt ngraph::builder pugixml) diff --git a/ngraph/core/CMakeLists.txt b/ngraph/core/CMakeLists.txt index 018cb2b..2dd5695 100644 --- a/ngraph/core/CMakeLists.txt +++ b/ngraph/core/CMakeLists.txt @@ -47,6 +47,11 @@ if(COMMAND ie_add_api_validator_post_build_step) ie_add_api_validator_post_build_step(TARGET ngraph) endif() +if(COMMAND ie_add_vs_version_file) + ie_add_vs_version_file(NAME ngraph + FILEDESCRIPTION "nGraph library") +endif() + set_target_properties(ngraph PROPERTIES CXX_VISIBILITY_PRESET hidden C_VISIBILITY_PRESET hidden diff --git a/ngraph/frontend/onnx_import/CMakeLists.txt b/ngraph/frontend/onnx_import/CMakeLists.txt index 906bfa0..e72e2eb 100644 --- a/ngraph/frontend/onnx_import/CMakeLists.txt +++ b/ngraph/frontend/onnx_import/CMakeLists.txt @@ -41,6 +41,11 @@ source_group("include" FILES ${PUBLIC_HEADERS}) add_library(onnx_importer SHARED ${LIBRARY_SRC} ${PUBLIC_HEADERS}) add_library(ngraph::onnx_importer ALIAS onnx_importer) +if(COMMAND ie_add_vs_version_file) + ie_add_vs_version_file(NAME onnx_importer + FILEDESCRIPTION "nGraph ONNX importer library") +endif() + if(COMMAND ie_faster_build) ie_faster_build(onnx_importer UNITY diff --git a/ngraph/test/runtime/CMakeLists.txt b/ngraph/test/runtime/CMakeLists.txt index 75c4796..d27ea80 100644 --- a/ngraph/test/runtime/CMakeLists.txt +++ b/ngraph/test/runtime/CMakeLists.txt @@ -59,6 +59,11 @@ if(COMMAND ie_faster_build) ) endif() +if(COMMAND ie_add_vs_version_file) + ie_add_vs_version_file(NAME ngraph_backend + FILEDESCRIPTION "nGraph backend library") +endif() + target_compile_definitions(ngraph_backend PRIVATE SHARED_LIB_PREFIX="${CMAKE_SHARED_LIBRARY_PREFIX}" diff --git a/ngraph/test/runtime/ie/CMakeLists.txt b/ngraph/test/runtime/ie/CMakeLists.txt index f26fef7..829d586 100644 --- a/ngraph/test/runtime/ie/CMakeLists.txt +++ b/ngraph/test/runtime/ie/CMakeLists.txt @@ -14,8 +14,6 @@ # limitations under the License. # ****************************************************************************** -set(LIBRARY_TYPE SHARED) - set(SRC ie_backend.cpp ie_backend.hpp @@ -26,7 +24,7 @@ set(SRC ie_executable.hpp ) -add_library(ie_backend ${LIBRARY_TYPE} ${SRC}) +add_library(ie_backend SHARED ${SRC}) if(COMMAND ie_faster_build) ie_faster_build(ie_backend @@ -34,6 +32,11 @@ if(COMMAND ie_faster_build) ) endif() +if(COMMAND ie_add_vs_version_file) + ie_add_vs_version_file(NAME ie_backend + FILEDESCRIPTION "nGraph IE backend library") +endif() + add_dependencies(ie_backend inference_engine) target_compile_definitions(ie_backend PRIVATE IE_BACKEND_DLL_EXPORTS) target_include_directories(ie_backend PUBLIC ${IE_MAIN_SOURCE_DIR}/include) diff --git a/ngraph/test/runtime/interpreter/CMakeLists.txt b/ngraph/test/runtime/interpreter/CMakeLists.txt index 63c4d83..ee8116d 100644 --- a/ngraph/test/runtime/interpreter/CMakeLists.txt +++ b/ngraph/test/runtime/interpreter/CMakeLists.txt @@ -14,10 +14,8 @@ # limitations under the License. # ****************************************************************************** -set(LIBRARY_TYPE SHARED) - if (NGRAPH_INTERPRETER_ENABLE) - add_library(interpreter_backend ${LIBRARY_TYPE} int_backend.cpp int_executable.cpp) + add_library(interpreter_backend SHARED int_backend.cpp int_executable.cpp) if(COMMAND ie_faster_build) ie_faster_build(interpreter_backend @@ -25,6 +23,11 @@ if (NGRAPH_INTERPRETER_ENABLE) ) endif() + if(COMMAND ie_add_vs_version_file) + ie_add_vs_version_file(NAME interpreter_backend + FILEDESCRIPTION "nGraph interpreter backend library") + endif() + target_compile_definitions(interpreter_backend PRIVATE INTERPRETER_BACKEND_EXPORTS) if(NGRAPH_LIB_VERSIONING_ENABLE) set_target_properties(interpreter_backend PROPERTIES -- 2.7.4