diff --git a/.ci/azure/linux.yml b/.ci/azure/linux.yml index b6c7d95aad6..07d15d3dded 100644 --- a/.ci/azure/linux.yml +++ b/.ci/azure/linux.yml @@ -216,12 +216,12 @@ jobs: - script: $(INSTALL_DIR)/samples/cpp/build_samples.sh workingDirectory: $(BUILD_SAMPLES_DIR) displayName: 'Build cpp samples' - condition: eq(variables['CMAKE_BUILD_SHARED_LIBS'], 'ON') + continueOnError: false - script: $(INSTALL_DIR)/samples/c/build_samples.sh workingDirectory: $(BUILD_SAMPLES_DIR) displayName: 'Build c samples' - condition: eq(variables['CMAKE_BUILD_SHARED_LIBS'], 'ON') + continueOnError: false - script: rm -fr $(BUILD_DIR) displayName: 'Clean build dir' diff --git a/.ci/azure/windows.yml b/.ci/azure/windows.yml index 1b01d4da70e..8617ae808f2 100644 --- a/.ci/azure/windows.yml +++ b/.ci/azure/windows.yml @@ -111,6 +111,8 @@ jobs: python -m pip install -r $(REPO_DIR)\model-optimizer\requirements.txt python -m pip install -r $(REPO_DIR)\model-optimizer\requirements_dev.txt rem Speed up build + certutil -urlcache -split -f https://github.com/Kitware/CMake/releases/download/v3.22.0/cmake-3.22.0-win64-x64.zip cmake-3.22.0-win64-x64.zip + powershell -command "Expand-Archive -Force cmake-3.22.0-win64-x64.zip" certutil -urlcache -split -f https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip ninja-win.zip powershell -command "Expand-Archive -Force ninja-win.zip" git clone https://github.com/google/gtest-parallel.git @@ -119,7 +121,7 @@ jobs: - script: | set PATH=$(WORK_DIR)\ninja-win;%PATH% - call "$(MSVS_VARS_PATH)" && cmake -GNinja -DENABLE_CLDNN=$(CMAKE_BUILD_SHARED_LIBS) -DENABLE_GAPI_PREPROCESSING=$(CMAKE_BUILD_SHARED_LIBS) -DBUILD_SHARED_LIBS=$(CMAKE_BUILD_SHARED_LIBS) -DENABLE_REQUIREMENTS_INSTALL=OFF -DENABLE_FASTER_BUILD=ON -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DENABLE_TESTS=ON -DENABLE_STRICT_DEPENDENCIES=OFF -DENABLE_PYTHON=ON -DPYTHON_EXECUTABLE="C:\hostedtoolcache\windows\Python\3.7.6\x64\python.exe" -DIE_EXTRA_MODULES=$(OPENVINO_CONTRIB_REPO_DIR)\modules -DCMAKE_C_COMPILER:PATH="$(MSVC_COMPILER_PATH)" -DCMAKE_CXX_COMPILER:PATH="$(MSVC_COMPILER_PATH)" $(REPO_DIR) + call "$(MSVS_VARS_PATH)" && $(WORK_DIR)\cmake-3.22.0-win64-x64\cmake-3.22.0-win64-x64\bin\cmake.exe -GNinja -DENABLE_GNA=$(CMAKE_BUILD_SHARED_LIBS) -DENABLE_CLDNN=$(CMAKE_BUILD_SHARED_LIBS) -DENABLE_GAPI_PREPROCESSING=$(CMAKE_BUILD_SHARED_LIBS) -DBUILD_SHARED_LIBS=$(CMAKE_BUILD_SHARED_LIBS) -DENABLE_REQUIREMENTS_INSTALL=OFF -DENABLE_FASTER_BUILD=ON -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DENABLE_TESTS=ON -DENABLE_STRICT_DEPENDENCIES=OFF -DENABLE_PYTHON=ON -DPYTHON_EXECUTABLE="C:\hostedtoolcache\windows\Python\3.7.6\x64\python.exe" -DIE_EXTRA_MODULES=$(OPENVINO_CONTRIB_REPO_DIR)\modules -DCMAKE_C_COMPILER:PATH="$(MSVC_COMPILER_PATH)" -DCMAKE_CXX_COMPILER:PATH="$(MSVC_COMPILER_PATH)" $(REPO_DIR) workingDirectory: $(BUILD_DIR) displayName: 'CMake' @@ -135,14 +137,14 @@ jobs: - script: dir $(REPO_DIR)\bin\ /s displayName: 'List bin files' - - script: cmake -DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) -P cmake_install.cmake + - script: $(WORK_DIR)\cmake-3.22.0-win64-x64\cmake-3.22.0-win64-x64\bin\cmake.exe -DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) -P cmake_install.cmake workingDirectory: $(BUILD_DIR) displayName: 'Install' - script: dir $(INSTALL_DIR) /s displayName: 'List install files' - - script: cmake -DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) -DCOMPONENT=tests -P cmake_install.cmake && xcopy $(REPO_DIR)\inference-engine\temp\opencv_4.5.2\opencv\* $(INSTALL_DIR)\opencv\ /e /h /y + - script: $(WORK_DIR)\cmake-3.22.0-win64-x64\cmake-3.22.0-win64-x64\bin\cmake.exe -DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) -DCOMPONENT=tests -P cmake_install.cmake && xcopy $(REPO_DIR)\inference-engine\temp\opencv_4.5.2\opencv\* $(INSTALL_DIR)\opencv\ /e /h /y workingDirectory: $(BUILD_DIR) displayName: 'Install tests' @@ -152,12 +154,12 @@ jobs: - script: $(INSTALL_DIR)\samples\cpp\build_samples_msvc.bat workingDirectory: $(BUILD_SAMPLES_DIR) displayName: 'Build cpp samples' - condition: eq(variables['CMAKE_BUILD_SHARED_LIBS'], 'ON') + continueOnError: false - script: $(INSTALL_DIR)\samples\c\build_samples_msvc.bat workingDirectory: $(BUILD_SAMPLES_DIR) displayName: 'Build c samples' - condition: eq(variables['CMAKE_BUILD_SHARED_LIBS'], 'ON') + continueOnError: false - script: rd /Q /S $(BUILD_DIR) displayName: 'Clean build dir' @@ -195,6 +197,7 @@ jobs: - script: call $(SETUPVARS) && $(INSTALL_TEST_DIR)\gnaUnitTests --gtest_output=xml:TEST-gnaUnitTests.xml displayName: 'GNA UT' continueOnError: false + condition: eq(variables['CMAKE_BUILD_SHARED_LIBS'], 'ON') - script: call $(SETUPVARS) && $(INSTALL_TEST_DIR)\vpuUnitTests --gtest_output=xml:TEST-vpuUnitTests.xml displayName: 'VPU UT' diff --git a/CMakeLists.txt b/CMakeLists.txt index e22069d7c29..f2d66b97095 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,14 @@ # SPDX-License-Identifier: Apache-2.0 # -cmake_minimum_required(VERSION 3.13) +if(DEFINED BUILD_SHARED_LIBS AND NOT BUILD_SHARED_LIBS) + # 'target_link_libraries' does not work correctly when called from + # different directly where 'add_library' is called: CMake generates + # incorrect OpenVINOConfig.cmake in this case + cmake_minimum_required(VERSION 3.17) +else() + cmake_minimum_required(VERSION 3.13) +endif() project(OpenVINO DESCRIPTION "OpenVINO toolkit") diff --git a/cmake/developer_package/plugins/plugins.cmake b/cmake/developer_package/plugins/plugins.cmake index 2d966b5bf21..268b90fced6 100644 --- a/cmake/developer_package/plugins/plugins.cmake +++ b/cmake/developer_package/plugins/plugins.cmake @@ -83,9 +83,9 @@ function(ie_add_plugin) 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) + target_link_libraries(${IE_PLUGIN_NAME} PRIVATE IE::inference_engine IE::inference_engine_plugin_api) else() - target_link_libraries(${IE_PLUGIN_NAME} PRIVATE inference_engine_plugin_api) + target_link_libraries(${IE_PLUGIN_NAME} PRIVATE inference_engine inference_engine_plugin_api) endif() if(WIN32) @@ -108,8 +108,12 @@ function(ie_add_plugin) endif() add_dependencies(ie_plugins ${IE_PLUGIN_NAME}) - if(TARGET inference_engine_preproc AND BUILD_SHARED_LIBS) - add_dependencies(${IE_PLUGIN_NAME} inference_engine_preproc) + if(TARGET inference_engine_preproc) + if(BUILD_SHARED_LIBS) + add_dependencies(${IE_PLUGIN_NAME} inference_engine_preproc) + else() + target_link_libraries(${IE_PLUGIN_NAME} PRIVATE inference_engine_preproc) + endif() endif() # fake dependencies to build in the following order: diff --git a/inference-engine/src/cldnn_engine/CMakeLists.txt b/inference-engine/src/cldnn_engine/CMakeLists.txt index c28ff772540..58b7536e63e 100644 --- a/inference-engine/src/cldnn_engine/CMakeLists.txt +++ b/inference-engine/src/cldnn_engine/CMakeLists.txt @@ -31,7 +31,6 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release") endif() target_link_libraries(${TARGET_NAME} PRIVATE clDNN_lib pugixml::static - inference_engine inference_engine_transformations inference_engine_lp_transformations ngraph) diff --git a/inference-engine/src/gna_plugin/CMakeLists.txt b/inference-engine/src/gna_plugin/CMakeLists.txt index 3ec2d5b089c..73e4d18b535 100644 --- a/inference-engine/src/gna_plugin/CMakeLists.txt +++ b/inference-engine/src/gna_plugin/CMakeLists.txt @@ -38,7 +38,7 @@ ie_add_plugin(NAME ${TARGET_NAME} # Enable support of CC for the plugin ie_mark_target_as_cc(${TARGET_NAME}) -target_link_libraries(${TARGET_NAME} PRIVATE inference_engine inference_engine_legacy inference_engine_transformations +target_link_libraries(${TARGET_NAME} PRIVATE inference_engine_legacy inference_engine_transformations Threads::Threads libGNA) target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/inference-engine/src/hetero_plugin/CMakeLists.txt b/inference-engine/src/hetero_plugin/CMakeLists.txt index 39aa7191bd3..4f325769369 100644 --- a/inference-engine/src/hetero_plugin/CMakeLists.txt +++ b/inference-engine/src/hetero_plugin/CMakeLists.txt @@ -16,7 +16,7 @@ ie_faster_build(${TARGET_NAME} UNITY ) -target_link_libraries(${TARGET_NAME} PRIVATE pugixml::static inference_engine +target_link_libraries(${TARGET_NAME} PRIVATE pugixml::static ngraph inference_engine_transformations) ie_add_api_validator_post_build_step(TARGET ${TARGET_NAME}) diff --git a/inference-engine/src/multi_device/CMakeLists.txt b/inference-engine/src/multi_device/CMakeLists.txt index c293c81e298..5018ebcad2c 100644 --- a/inference-engine/src/multi_device/CMakeLists.txt +++ b/inference-engine/src/multi_device/CMakeLists.txt @@ -17,7 +17,7 @@ ie_add_plugin(NAME ${TARGET_NAME} PSEUDO_PLUGIN_FOR "MULTI" DEFAULT_CONFIG "MULTI_WORK_MODE_AS_AUTO:YES") -target_link_libraries(${TARGET_NAME} PRIVATE inference_engine ngraph inference_engine_transformations) +target_link_libraries(${TARGET_NAME} PRIVATE ngraph inference_engine_transformations) set_ie_threading_interface_for(${TARGET_NAME}) diff --git a/inference-engine/src/preprocessing/CMakeLists.txt b/inference-engine/src/preprocessing/CMakeLists.txt index 094de0cea1e..324454fc7eb 100644 --- a/inference-engine/src/preprocessing/CMakeLists.txt +++ b/inference-engine/src/preprocessing/CMakeLists.txt @@ -143,9 +143,9 @@ if(ENABLE_GAPI_PREPROCESSING) endif() if(BUILD_SHARED_LIBS) - # for static linkage the dependencies are in opposite order target_link_libraries(${TARGET_NAME} PRIVATE inference_engine) else() + # for static linkage the dependencies are in opposite order target_link_libraries(inference_engine PRIVATE ${TARGET_NAME}) endif() diff --git a/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt b/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt index d53fc13abc7..663649c4048 100644 --- a/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt +++ b/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt @@ -45,10 +45,11 @@ if(WIN32) set_target_properties(${TARGET_NAME} PROPERTIES COMPILE_PDB_NAME ${TARGET_NAME}) endif() -if(NOT BUILD_SHARED_LIBS) - target_link_libraries(inference_engine PRIVATE ${TARGET_NAME}) -else() +if(BUILD_SHARED_LIBS) target_link_libraries(${TARGET_NAME} PRIVATE inference_engine) +else() + # for static linkage the dependencies are in opposite order + target_link_libraries(inference_engine PRIVATE ${TARGET_NAME}) endif() # code style diff --git a/inference-engine/src/vpu/myriad_plugin/CMakeLists.txt b/inference-engine/src/vpu/myriad_plugin/CMakeLists.txt index c3c1d7f2a56..f14b1f021c8 100644 --- a/inference-engine/src/vpu/myriad_plugin/CMakeLists.txt +++ b/inference-engine/src/vpu/myriad_plugin/CMakeLists.txt @@ -39,7 +39,7 @@ endif() # "mvnc" must be the first library in the link list target_link_libraries(${TARGET_NAME} PRIVATE - mvnc inference_engine inference_engine_legacy vpu_graph_transformer) + mvnc inference_engine_legacy vpu_graph_transformer) # MyriadPlugin is not safe to unload it at runtime if(LINUX AND LINUX_OS_NAME MATCHES "Ubuntu") diff --git a/install_build_dependencies.sh b/install_build_dependencies.sh index f9ad11e1d12..95727c93764 100755 --- a/install_build_dependencies.sh +++ b/install_build_dependencies.sh @@ -176,7 +176,7 @@ fi # cmake 3.13 or higher is required to build OpenVINO current_cmake_version=$(cmake --version | sed -ne 's/[^0-9]*\(\([0-9]\.\)\{0,4\}[0-9][^.]\).*/\1/p') -required_cmake_ver=3.13 +required_cmake_ver=3.17 if [ ! "$(printf '%s\n' "$required_cmake_ver" "$current_cmake_version" | sort -V | head -n1)" = "$required_cmake_ver" ]; then wget "https://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4.tar.gz" tar xf cmake-3.18.4.tar.gz diff --git a/ngraph/test/engines_util/CMakeLists.txt b/ngraph/test/engines_util/CMakeLists.txt index 4490b5aa259..ada1c0fed30 100644 --- a/ngraph/test/engines_util/CMakeLists.txt +++ b/ngraph/test/engines_util/CMakeLists.txt @@ -4,7 +4,7 @@ file(GLOB_RECURSE ENGINES_UTIL_SRC "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/*.hpp") -add_library(engines_test_util STATIC ${ENGINES_UTIL_SRC}) +add_library(engines_test_util STATIC EXCLUDE_FROM_ALL ${ENGINES_UTIL_SRC}) ie_faster_build(engines_test_util UNITY) diff --git a/ngraph/test/util/CMakeLists.txt b/ngraph/test/util/CMakeLists.txt index de974ca2d72..70ec394bf5f 100644 --- a/ngraph/test/util/CMakeLists.txt +++ b/ngraph/test/util/CMakeLists.txt @@ -4,7 +4,7 @@ file(GLOB_RECURSE UTIL_SRC "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/*.hpp") -add_library(ngraph_test_util STATIC ${UTIL_SRC}) +add_library(ngraph_test_util STATIC EXCLUDE_FROM_ALL ${UTIL_SRC}) ie_faster_build(ngraph_test_util UNITY)