Added support for Visual Studio VERSIONINFO (#2900)
authorIlya Lavrenov <ilya.lavrenov@intel.com>
Fri, 30 Oct 2020 18:38:34 +0000 (21:38 +0300)
committerGitHub <noreply@github.com>
Fri, 30 Oct 2020 18:38:34 +0000 (21:38 +0300)
* Generate vs_version file

* Fixed comments

* Fixed comments

20 files changed:
cmake/developer_package.cmake
cmake/vs_version/vs_version.cmake [new file with mode: 0644]
cmake/vs_version/vs_version.rc.in [new file with mode: 0644]
inference-engine/cmake/plugins/plugins.cmake
inference-engine/ie_bridges/c/src/CMakeLists.txt
inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt
inference-engine/src/inference_engine/CMakeLists.txt
inference-engine/src/legacy_api/CMakeLists.txt
inference-engine/src/low_precision_transformations/CMakeLists.txt
inference-engine/src/low_precision_transformations_legacy/CMakeLists.txt
inference-engine/src/preprocessing/CMakeLists.txt
inference-engine/src/readers/ir_reader/CMakeLists.txt
inference-engine/src/readers/ir_reader_v7/CMakeLists.txt
inference-engine/src/readers/onnx_reader/CMakeLists.txt
inference-engine/src/transformations/CMakeLists.txt
ngraph/core/CMakeLists.txt
ngraph/frontend/onnx_import/CMakeLists.txt
ngraph/test/runtime/CMakeLists.txt
ngraph/test/runtime/ie/CMakeLists.txt
ngraph/test/runtime/interpreter/CMakeLists.txt

index 9d9d9a3..e8f6966 100644 (file)
@@ -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 (file)
index 0000000..7b9f45f
--- /dev/null
@@ -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 <name>
+#                        FILEDESCRIPTION <file description>
+#                        [FILEVERSION <file version>]
+#                        [INTERNALNAME <internal name>]
+#                        [COPYRIGHT <name>]
+#                        [PRODUCTNAME <name>]
+#                        [PRODUCTVERSION <name>]
+#                        [COMMENTS <name>]
+#                        [FILEVERSION_QUAD <name>]
+#                        [PRODUCTVERSION_QUAD <name>])
+#
+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 (file)
index 0000000..96b545f
--- /dev/null
@@ -0,0 +1,38 @@
+#include <winver.h>
+
+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
index ef1dccc..52b033d 100644 (file)
@@ -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()
index 4ebf7cc..5320ca0 100644 (file)
@@ -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")
index 2211d63..b680a27 100644 (file)
@@ -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")
index 9a12b58..97eba73 100644 (file)
@@ -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}
             $<TARGET_OBJECTS:${TARGET_NAME}_obj>)
 
+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
index 2058e61..79aae75 100644 (file)
@@ -47,6 +47,9 @@ target_include_directories(${TARGET_NAME}_obj PRIVATE
 
 add_library(${TARGET_NAME} SHARED $<TARGET_OBJECTS:${TARGET_NAME}_obj>)
 
+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
index 0c7f828..60fb59a 100644 (file)
@@ -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
index 322d37e..d002d89 100644 (file)
@@ -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)
 
index 478735d..a040b0e 100644 (file)
@@ -127,6 +127,9 @@ set_ie_threading_interface_for(${TARGET_NAME}_obj)
 add_library(${TARGET_NAME} SHARED
             $<TARGET_OBJECTS:${TARGET_NAME}_obj>)
 
+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
index 51ef530..75de680 100644 (file)
@@ -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)
 
index 7920a56..80c8bad 100644 (file)
@@ -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}/"
index b2f6d9e..42bed3a 100644 (file)
@@ -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)
index a6cd168..3c86bfb 100644 (file)
@@ -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)
 
index 018cb2b..2dd5695 100644 (file)
@@ -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
index 906bfa0..e72e2eb 100644 (file)
@@ -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
index 75c4796..d27ea80 100644 (file)
@@ -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}"
index f26fef7..829d586 100644 (file)
@@ -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)
index 63c4d83..ee8116d 100644 (file)
 # 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