diff --git a/.ci/azure/android_arm64.yml b/.ci/azure/android_arm64.yml index 279b3e5827dab4..31bf5b69829950 100644 --- a/.ci/azure/android_arm64.yml +++ b/.ci/azure/android_arm64.yml @@ -141,7 +141,6 @@ jobs: -DANDROID_STL=c++_shared -DANDROID_PLATFORM=$(ANDROID_SDK_VERSION) -DENABLE_TESTS=ON - -DENABLE_INTEL_GPU=ON -DCMAKE_CXX_LINKER_LAUNCHER=ccache -DCMAKE_C_LINKER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache diff --git a/.ci/azure/linux.yml b/.ci/azure/linux.yml index 1fcfe154ae728b..b1944eb87c86eb 100644 --- a/.ci/azure/linux.yml +++ b/.ci/azure/linux.yml @@ -245,6 +245,7 @@ jobs: -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DENABLE_SYSTEM_SNAPPY=ON + -DENABLE_SYSTEM_TBB=ON -DCPACK_GENERATOR=$(CMAKE_CPACK_GENERATOR) -DBUILD_nvidia_plugin=OFF -S $(REPO_DIR) diff --git a/.ci/azure/linux_arm64.yml b/.ci/azure/linux_arm64.yml index 4e4efe406d4ad9..939320d9cd3f4a 100644 --- a/.ci/azure/linux_arm64.yml +++ b/.ci/azure/linux_arm64.yml @@ -108,17 +108,17 @@ jobs: - checkout: self clean: 'true' - submodules: 'true' path: openvino - script: | set -e - sudo -E $(OPENVINO_REPO_DIR)/install_build_dependencies.sh python3 -m pip install --upgrade pip python3 -m pip install -r $(OPENVINO_REPO_DIR)/src/bindings/python/requirements.txt python3 -m pip install -r $(OPENVINO_REPO_DIR)/src/bindings/python/wheel/requirements-dev.txt # install dependencies needed to build CPU plugin for ARM sudo -E apt --assume-yes install scons crossbuild-essential-arm64 + # generic dependencies + sudo -E apt --assume-yes install cmake ccache # Speed up build sudo -E apt -y --no-install-recommends install unzip wget https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-linux.zip @@ -126,25 +126,60 @@ jobs: sudo cp -v ninja /usr/local/bin/ displayName: 'Install dependencies' - - task: CMake@1 - inputs: - cmakeArgs: > - -G "Ninja Multi-Config" - -DCMAKE_VERBOSE_MAKEFILE=ON - -DCMAKE_COMPILE_WARNING_AS_ERROR=ON - -DOpenCV_DIR=$(INSTALL_OPENCV)/cmake - -DENABLE_PYTHON=OFF - -DENABLE_TESTS=ON - -DENABLE_DATA=OFF - -DCMAKE_TOOLCHAIN_FILE=$(OPENVINO_REPO_DIR)/cmake/arm64.toolchain.cmake - -DCMAKE_VERBOSE_MAKEFILE=ON - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache - -DCMAKE_C_COMPILER_LAUNCHER=ccache - -DARM_COMPUTE_SCONS_JOBS=$(NUM_PROC) - -DCMAKE_INSTALL_PREFIX=$(INSTALL_OPENVINO) - -S $(OPENVINO_REPO_DIR) + - script: | + git submodule update --init -- $(OPENVINO_REPO_DIR)/src/plugins + git submodule update --init -- $(OPENVINO_REPO_DIR)/thirdparty/gtest + displayName: 'Init submodules for non Conan dependencies' + + - script: | + python3 -m pip install conan + # generate build profile + conan profile detect + # generate host profile for linux_arm64 + echo "include(default)" > $(BUILD_OPENVINO)/linux_arm64 + echo "[buildenv]" >> $(BUILD_OPENVINO)/linux_arm64 + echo "CC=aarch64-linux-gnu-gcc" >> $(BUILD_OPENVINO)/linux_arm64 + echo "CXX=aarch64-linux-gnu-g++" >> $(BUILD_OPENVINO)/linux_arm64 + # install OpenVINO dependencies + export CMAKE_CXX_COMPILER_LAUNCHER=ccache + export CMAKE_C_COMPILER_LAUNCHER=ccache + conan install $(OPENVINO_REPO_DIR)/conanfile.txt \ + -pr:h $(BUILD_OPENVINO)/linux_arm64 \ + -s:h arch=armv8 \ + -of $(BUILD_OPENVINO) \ + -b missing + env: + CCACHE_DIR: $(OPENVINO_CCACHE_DIR) + CCACHE_TEMPDIR: $(TMP_DIR)/ccache + CCACHE_BASEDIR: $(Pipeline.Workspace) + CCACHE_MAXSIZE: 50G + displayName: 'Install conan and dependencies' + + - script: | + source $(BUILD_OPENVINO)/conanbuild.sh + cmake \ + -G Ninja \ + -DCMAKE_VERBOSE_MAKEFILE=ON \ + -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ + -DENABLE_CPPLINT=OFF \ + -DENABLE_PYTHON=OFF \ + -DENABLE_TESTS=ON \ + -DENABLE_DATA=OFF \ + -DENABLE_SYSTEM_TBB=ON \ + -DENABLE_SYSTEM_PROTOBUF=ON \ + -DENABLE_SYSTEM_SNAPPY=ON \ + -DENABLE_SYSTEM_PUGIXML=ON \ + -DCMAKE_TOOLCHAIN_FILE=$(BUILD_OPENVINO)/conan_toolchain.cmake \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ + -DARM_COMPUTE_SCONS_JOBS=$(NUM_PROC) \ + -DCMAKE_INSTALL_PREFIX=$(INSTALL_OPENVINO) \ + -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) \ + -S $(OPENVINO_REPO_DIR) \ -B $(BUILD_OPENVINO) - displayName: 'CMake OpenVINO ARM plugin' + source $(BUILD_OPENVINO)/deactivate_conanbuild.sh + displayName: 'CMake configure' - script: cmake --build $(BUILD_OPENVINO) --parallel --config $(BUILD_TYPE) env: @@ -152,13 +187,13 @@ jobs: CCACHE_TEMPDIR: $(TMP_DIR)/ccache CCACHE_BASEDIR: $(Pipeline.Workspace) CCACHE_MAXSIZE: 50G - displayName: 'Build OpenVINO ARM plugin' + displayName: 'Build OpenVINO Runtime' - script: cmake --build $(BUILD_OPENVINO) --parallel --config $(BUILD_TYPE) --target install - displayName: 'Install OpenVINO ARM plugin' + displayName: 'Install OpenVINO Runtime' - task: PublishBuildArtifacts@1 inputs: PathtoPublish: $(Build.ArtifactStagingDirectory) ArtifactName: 'openvino_aarch64_linux' - displayName: 'Publish OpenVINO AArch64 linux package' + displayName: 'Publish OpenVINO Runtime for ARM' diff --git a/.ci/azure/windows_conditional_compilation.yml b/.ci/azure/windows_conditional_compilation.yml index 2e8a96797c78af..4b8bbfc4e89e4d 100644 --- a/.ci/azure/windows_conditional_compilation.yml +++ b/.ci/azure/windows_conditional_compilation.yml @@ -116,7 +116,7 @@ jobs: -G Ninja ^ -DENABLE_CPPLINT=OFF ^ -DENABLE_GAPI_PREPROCESSING=OFF ^ - -DENABLE_FASTER_BUILD=ON ^ + -DENABLE_PLUGINS_XML=ON ^ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON ^ -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) ^ -DENABLE_PROFILING_ITT=ON ^ @@ -153,7 +153,6 @@ jobs: -DVERBOSE_BUILD=ON ^ -DENABLE_CPPLINT=OFF ^ -DENABLE_GAPI_PREPROCESSING=OFF ^ - -DENABLE_FASTER_BUILD=ON ^ -DENABLE_PROFILING_ITT=OFF ^ -DSELECTIVE_BUILD=ON ^ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON ^ diff --git a/.gitignore b/.gitignore index fdc00ccfbd2d22..96fec2d0fda549 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ temp/ .repo/ CMakeLists.txt.user docs/IE_PLUGIN_DG/html/ +CMakeUserPresets.json *.project *.cproject diff --git a/cmake/developer_package/IEDevScriptsConfig.cmake b/cmake/developer_package/IEDevScriptsConfig.cmake index a607e36bb290ef..e41118bb1755ad 100644 --- a/cmake/developer_package/IEDevScriptsConfig.cmake +++ b/cmake/developer_package/IEDevScriptsConfig.cmake @@ -111,8 +111,8 @@ else() set(BIN_FOLDER "bin/${ARCH_FOLDER}") endif() -if(CMAKE_GENERATOR MATCHES "^Ninja Multi-Config$") - # Ninja-Multi specific, see: +if(CMAKE_GENERATOR STREQUAL "Ninja Multi-Config") + # 'Ninja Multi-Config' specific, see: # https://cmake.org/cmake/help/latest/variable/CMAKE_DEFAULT_BUILD_TYPE.html set(CMAKE_DEFAULT_BUILD_TYPE "Release" CACHE STRING "CMake default build type") elseif(NOT OV_GENERATOR_MULTI_CONFIG) @@ -240,7 +240,7 @@ if(ENABLE_LTO) LANGUAGES C CXX) if(NOT IPO_SUPPORTED) - set(ENABLE_LTO "OFF" CACHE STRING "Enable Link Time Optmization" FORCE) + set(ENABLE_LTO "OFF" CACHE STRING "Enable Link Time Optimization" FORCE) message(WARNING "IPO / LTO is not supported: ${OUTPUT_MESSAGE}") endif() endif() @@ -250,8 +250,8 @@ endif() macro(ov_install_static_lib target comp) if(NOT BUILD_SHARED_LIBS) get_target_property(target_type ${target} TYPE) - if(${target_type} STREQUAL "STATIC_LIBRARY") - set_target_properties(${target} PROPERTIES EXCLUDE_FROM_ALL FALSE) + if(target_type STREQUAL "STATIC_LIBRARY") + set_target_properties(${target} PROPERTIES EXCLUDE_FROM_ALL OFF) endif() install(TARGETS ${target} EXPORT OpenVINOTargets ARCHIVE DESTINATION ${OV_CPACK_ARCHIVEDIR} COMPONENT ${comp} ${ARGN}) diff --git a/cmake/developer_package/cpplint/cpplint.py b/cmake/developer_package/cpplint/cpplint.py index 2700bae29f8390..206132301fcd76 100644 --- a/cmake/developer_package/cpplint/cpplint.py +++ b/cmake/developer_package/cpplint/cpplint.py @@ -641,7 +641,7 @@ # Files to exclude from linting. This is set by the --exclude flag. _excludes = None -# Whether to supress PrintInfo messages +# Whether to suppress PrintInfo messages _quiet = False # The allowed line length of files. @@ -752,7 +752,7 @@ def ParseNolintSuppressions(filename, raw_line, linenum, error): 'Unknown NOLINT error category: %s' % category) -def ProcessGlobalSuppresions(lines): +def ProcessGlobalSuppressions(lines): """Updates the list of global error suppressions. Parses any lint directives in the file that have global effect. @@ -780,7 +780,7 @@ def IsErrorSuppressedByNolint(category, linenum): """Returns true if the specified error category is suppressed on this line. Consults the global error_suppressions map populated by - ParseNolintSuppressions/ProcessGlobalSuppresions/ResetNolintSuppressions. + ParseNolintSuppressions/ProcessGlobalSuppressions/ResetNolintSuppressions. Args: category: str, the category of the error. @@ -6203,7 +6203,7 @@ def ProcessFileData(filename, file_extension, lines, error, ResetNolintSuppressions() CheckForCopyright(filename, lines, error) - ProcessGlobalSuppresions(lines) + ProcessGlobalSuppressions(lines) RemoveMultiLineComments(filename, lines, error) clean_lines = CleansedLines(lines) diff --git a/cmake/developer_package/frontends/frontends.cmake b/cmake/developer_package/frontends/frontends.cmake index 5ca915a05eb032..39335be08bfca9 100644 --- a/cmake/developer_package/frontends/frontends.cmake +++ b/cmake/developer_package/frontends/frontends.cmake @@ -215,23 +215,34 @@ macro(ov_add_frontend) if(proto_files) if(OV_FRONTEND_PROTOBUF_LITE) - if(NOT protobuf_lite_installed) - ov_install_static_lib(${Protobuf_LITE_LIBRARIES} ${OV_CPACK_COMP_CORE}) - set(protobuf_lite_installed ON CACHE INTERNAL "" FORCE) - endif() - link_system_libraries(${TARGET_NAME} PRIVATE ${Protobuf_LITE_LIBRARIES}) + set(protobuf_target_name libprotobuf-lite) + set(protobuf_install_name "protobuf_lite_installed") else() - if(NOT protobuf_installed) - ov_install_static_lib(${Protobuf_LIBRARIES} ${OV_CPACK_COMP_CORE}) - set(protobuf_installed ON CACHE INTERNAL "" FORCE) - endif() - link_system_libraries(${TARGET_NAME} PRIVATE ${Protobuf_LIBRARIES}) + set(protobuf_target_name libprotobuf) + set(protobuf_install_name "protobuf_installed") endif() + if(ENABLE_SYSTEM_PROTOBUF) + # use imported target name with namespace + set(protobuf_target_name "protobuf::${protobuf_target_name}") + endif() + + link_system_libraries(${TARGET_NAME} PRIVATE ${protobuf_target_name}) # protobuf generated code emits -Wsuggest-override error if(SUGGEST_OVERRIDE_SUPPORTED) target_compile_options(${TARGET_NAME} PRIVATE -Wno-suggest-override) endif() + + # install protobuf if it is not installed yet + if(NOT ${protobuf_install_name}) + if(ENABLE_SYSTEM_PROTOBUF) + # we have to add find_package(Protobuf) to the OpenVINOConfig.cmake for static build + # no needs to install protobuf + else() + ov_install_static_lib(${protobuf_target_name} ${OV_CPACK_COMP_CORE}) + set("${protobuf_install_name}" ON CACHE INTERNAL "" FORCE) + endif() + endif() endif() if(flatbuffers_schema_files) diff --git a/cmake/developer_package/packaging/common-libraries.cmake b/cmake/developer_package/packaging/common-libraries.cmake index 26bee3ca8a9e09..34cc0beb28e51a 100644 --- a/cmake/developer_package/packaging/common-libraries.cmake +++ b/cmake/developer_package/packaging/common-libraries.cmake @@ -25,7 +25,7 @@ macro(ov_common_libraries_cpack_set_dirs) set(OV_CPACK_IE_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/inferenceengine${OpenVINO_VERSION}) set(OV_CPACK_NGRAPH_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/ngraph${OpenVINO_VERSION}) set(OV_CPACK_OPENVINO_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/openvino${OpenVINO_VERSION}) - set(OV_CPACK_DOCDIR ${CMAKE_INSTALL_DATADIR}/doc/openvino-${OpenVINO_VERSION}) + set(OV_CPACK_LICENSESDIR licenses) ov_get_pyversion(pyversion) if(pyversion) diff --git a/cmake/developer_package/packaging/debian/debian.cmake b/cmake/developer_package/packaging/debian/debian.cmake index 64598f119cd2ab..a649ab6c59c442 100644 --- a/cmake/developer_package/packaging/debian/debian.cmake +++ b/cmake/developer_package/packaging/debian/debian.cmake @@ -31,6 +31,7 @@ macro(ov_debian_cpack_set_dirs) set(OV_CPACK_NGRAPH_CMAKEDIR ${OV_CPACK_RUNTIMEDIR}/cmake/ngraph${OpenVINO_VERSION}) set(OV_CPACK_OPENVINO_CMAKEDIR ${OV_CPACK_RUNTIMEDIR}/cmake/openvino${OpenVINO_VERSION}) set(OV_CPACK_DOCDIR ${CMAKE_INSTALL_DATADIR}/doc/openvino-${OpenVINO_VERSION}) + set(OV_CPACK_LICENSESDIR ${OV_CPACK_DOCDIR}/licenses) set(OV_CPACK_PYTHONDIR lib/python3/dist-packages) # non-native stuff diff --git a/cmake/developer_package/packaging/packaging.cmake b/cmake/developer_package/packaging/packaging.cmake index 8925f576f1e650..076cb9a612fa31 100644 --- a/cmake/developer_package/packaging/packaging.cmake +++ b/cmake/developer_package/packaging/packaging.cmake @@ -29,6 +29,7 @@ macro(ov_cpack_set_dirs) set(OV_CPACK_NGRAPH_CMAKEDIR runtime/cmake) set(OV_CPACK_OPENVINO_CMAKEDIR runtime/cmake) set(OV_CPACK_DOCDIR docs) + set(OV_CPACK_LICENSESDIR ${OV_CPACK_DOCDIR}/licenses) set(OV_CPACK_SAMPLESDIR samples) set(OV_CPACK_WHEELSDIR tools) set(OV_CPACK_TOOLSDIR tools) @@ -99,10 +100,10 @@ endif() # if is a symlink, we resolve it, but install file with a name of symlink # function(ov_install_with_name file component) - if((APPLE AND file MATCHES "^[^\.]+\.[0-9]+${CMAKE_SHARED_LIBRARY_SUFFIX}$") OR - (file MATCHES "^.*\.${CMAKE_SHARED_LIBRARY_SUFFIX}\.[0-9]+$")) + get_filename_component(actual_name "${file}" NAME) + if((APPLE AND actual_name MATCHES "^[^\.]+\.[0-9]+${CMAKE_SHARED_LIBRARY_SUFFIX}$") OR + (actual_name MATCHES "^.*\.${CMAKE_SHARED_LIBRARY_SUFFIX}\.[0-9]+$")) if(IS_SYMLINK "${file}") - get_filename_component(actual_name "${file}" NAME) get_filename_component(file "${file}" REALPATH) set(install_rename RENAME "${actual_name}") endif() @@ -162,7 +163,7 @@ elseif(CPACK_GENERATOR STREQUAL "RPM") include(packaging/rpm/rpm) elseif(CPACK_GENERATOR STREQUAL "NSIS") include(packaging/nsis) -elseif(CPACK_GENERATOR MATCHES "^(CONDA-FORGE|BREW)$") +elseif(CPACK_GENERATOR MATCHES "^(CONDA-FORGE|BREW|CONAN)$") include(packaging/common-libraries) endif() diff --git a/cmake/developer_package/packaging/rpm/rpm.cmake b/cmake/developer_package/packaging/rpm/rpm.cmake index 22a83a77386831..f884341987f0ec 100644 --- a/cmake/developer_package/packaging/rpm/rpm.cmake +++ b/cmake/developer_package/packaging/rpm/rpm.cmake @@ -22,6 +22,11 @@ macro(ov_rpm_cpack_set_dirs) set(OV_CPACK_NGRAPH_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/ngraph${OpenVINO_VERSION}) set(OV_CPACK_OPENVINO_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/openvino${OpenVINO_VERSION}) set(OV_CPACK_DOCDIR ${CMAKE_INSTALL_DATADIR}/doc/openvino-${OpenVINO_VERSION}) + set(OV_CPACK_LICENSESDIR ${OV_CPACK_DOCDIR}/licenses) + + # TODO: + # 1. define python installation directories for RPM packages + # 2. make sure only a single version of python API can be installed at the same time (define conflicts section) # set(OV_CPACK_PYTHONDIR lib/python3/dist-packages) ov_get_pyversion(pyversion) diff --git a/cmake/developer_package/target_flags.cmake b/cmake/developer_package/target_flags.cmake index f45fdaed238309..ced8d519da36b6 100644 --- a/cmake/developer_package/target_flags.cmake +++ b/cmake/developer_package/target_flags.cmake @@ -43,9 +43,9 @@ macro(_ov_detect_arch_by_processor_type) endif() elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") set(X86_64 ON) - elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*|wasm") set(X86 ON) - elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm64.*|aarch64.*|AARCH64.*|ARM64.*)") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm64.*|aarch64.*|AARCH64.*|ARM64.*|armv8)") set(AARCH64 ON) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)") set(ARM ON) diff --git a/cmake/features.cmake b/cmake/features.cmake index 65b11c68a71ceb..e896294bf1468d 100644 --- a/cmake/features.cmake +++ b/cmake/features.cmake @@ -34,6 +34,10 @@ endif() ie_dependent_option (ENABLE_ONEDNN_FOR_GPU "Enable oneDNN with GPU support" ${ENABLE_ONEDNN_FOR_GPU_DEFAULT} "ENABLE_INTEL_GPU" OFF) +ie_option (ENABLE_DEBUG_CAPS "enable OpenVINO debug capabilities at runtime" OFF) +ie_dependent_option (ENABLE_GPU_DEBUG_CAPS "enable GPU debug capabilities at runtime" ON "ENABLE_DEBUG_CAPS;ENABLE_INTEL_CPU" OFF) +ie_dependent_option (ENABLE_CPU_DEBUG_CAPS "enable CPU debug capabilities at runtime" ON "ENABLE_DEBUG_CAPS;ENABLE_INTEL_GPU" OFF) + ie_option (ENABLE_PROFILING_ITT "Build with ITT tracing. Optionally configure pre-built ittnotify library though INTEL_VTUNE_DIR variable." OFF) ie_option_enum(ENABLE_PROFILING_FILTER "Enable or disable ITT counter groups.\ @@ -81,19 +85,16 @@ ie_dependent_option (ENABLE_TBBBIND_2_5 "Enable TBBBind_2_5 static usage in Open ie_dependent_option (ENABLE_INTEL_GNA "GNA support for OpenVINO Runtime" ON "NOT APPLE;NOT ANDROID;X86_64;CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 5.4" OFF) -ie_option (ENABLE_INTEL_GNA_DEBUG "GNA debug build" OFF) - +ie_dependent_option (ENABLE_INTEL_GNA_DEBUG "GNA debug build" OFF "ENABLE_INTEL_GNA" OFF) +ie_dependent_option (ENABLE_V7_SERIALIZE "enables serialization to IR v7" OFF "ENABLE_INTEL_GNA" OFF) ie_dependent_option (ENABLE_IR_V7_READER "Enables IR v7 reader" ${BUILD_SHARED_LIBS} "ENABLE_TESTS;ENABLE_INTEL_GNA" OFF) ie_dependent_option (ENABLE_GAPI_PREPROCESSING "Enables G-API preprocessing" ON "NOT MINGW64" OFF) ie_option (ENABLE_MULTI "Enables MULTI Device Plugin" ON) ie_option (ENABLE_AUTO "Enables AUTO Device Plugin" ON) - ie_option (ENABLE_AUTO_BATCH "Enables Auto-Batching Plugin" ON) - ie_option (ENABLE_HETERO "Enables Hetero Device Plugin" ON) - ie_option (ENABLE_TEMPLATE "Enable template plugin" ON) ie_dependent_option (ENABLE_PLUGINS_XML "Generate plugins.xml configuration file or not" OFF "BUILD_SHARED_LIBS" OFF) @@ -102,20 +103,27 @@ ie_dependent_option (GAPI_TEST_PERF "if GAPI unit tests should examine performan ie_dependent_option (ENABLE_DATA "fetch models from testdata repo" ON "ENABLE_FUNCTIONAL_TESTS;NOT ANDROID" OFF) -ie_dependent_option (ENABLE_BEH_TESTS "tests oriented to check OpenVINO Runtime API correctness" ON "ENABLE_TESTS" OFF) - ie_dependent_option (ENABLE_FUNCTIONAL_TESTS "functional tests" ON "ENABLE_TESTS" OFF) ie_option (ENABLE_SAMPLES "console samples are part of OpenVINO Runtime package" ON) ie_option (ENABLE_OPENCV "enables custom OpenCV download" OFF) -ie_option (ENABLE_V7_SERIALIZE "enables serialization to IR v7" OFF) - set(OPENVINO_EXTRA_MODULES "" CACHE STRING "Extra paths for extra modules to include into OpenVINO build") ie_dependent_option(ENABLE_TBB_RELEASE_ONLY "Only Release TBB libraries are linked to the OpenVINO Runtime binaries" ON "THREADING MATCHES TBB;LINUX" OFF) +find_host_package(PythonInterp 3 QUIET) +ie_option(ENABLE_OV_ONNX_FRONTEND "Enable ONNX FrontEnd" ${PYTHONINTERP_FOUND}) +ie_option(ENABLE_OV_PADDLE_FRONTEND "Enable PaddlePaddle FrontEnd" ON) +ie_option(ENABLE_OV_IR_FRONTEND "Enable IR FrontEnd" ON) +ie_option(ENABLE_OV_PYTORCH_FRONTEND "Enable PyTorch FrontEnd" ON) +ie_option(ENABLE_OV_IR_FRONTEND "Enable IR FrontEnd" ON) +ie_option(ENABLE_OV_TF_FRONTEND "Enable TensorFlow FrontEnd" ON) +ie_option(ENABLE_OV_TF_LITE_FRONTEND "Enable TensorFlow Lite FrontEnd" ON) +ie_dependent_option(ENABLE_SNAPPY_COMPRESSION "Enables compression support for TF FE" ON + "ENABLE_OV_TF_FRONTEND" ON) + if(CMAKE_HOST_LINUX AND LINUX) # Debian packages are enabled on Ubuntu systems # so, system TBB / pugixml / OpenCL can be tried for usage @@ -131,40 +139,37 @@ else() set(ENABLE_SYSTEM_TBB_DEFAULT ${ENABLE_SYSTEM_LIBS_DEFAULT}) endif() +if(BUILD_SHARED_LIBS) + set(ENABLE_SYSTEM_PUGIXML_DEFAULT ${ENABLE_SYSTEM_LIBS_DEFAULT}) +else() + # for static libraries case libpugixml.a must be compiled with -fPIC + # but we still need an ability to compile with system PugiXML and BUILD_SHARED_LIBS + # for Conan case where everything is compiled statically + set(ENABLE_SYSTEM_PUGIXML_DEFAULT OFF) +endif() + # users wants to use his own TBB version, specific either via env vars or cmake options if(DEFINED ENV{TBBROOT} OR DEFINED ENV{TBB_DIR} OR DEFINED TBB_DIR OR DEFINED TBBROOT) set(ENABLE_SYSTEM_TBB_DEFAULT OFF) endif() -# for static libraries case libpugixml.a must be compiled with -fPIC -ie_dependent_option (ENABLE_SYSTEM_PUGIXML "use the system copy of pugixml" ${ENABLE_SYSTEM_LIBS_DEFAULT} "BUILD_SHARED_LIBS" OFF) - -ie_dependent_option (ENABLE_SYSTEM_TBB "use the system version of TBB" ${ENABLE_SYSTEM_TBB_DEFAULT} "THREADING MATCHES TBB" OFF) - -ie_dependent_option (ENABLE_SYSTEM_OPENCL "Use the system version of OpenCL" ${ENABLE_SYSTEM_LIBS_DEFAULT} "BUILD_SHARED_LIBS;ENABLE_INTEL_GPU" OFF) - -ie_option (ENABLE_DEBUG_CAPS "enable OpenVINO debug capabilities at runtime" OFF) - -ie_dependent_option (ENABLE_GPU_DEBUG_CAPS "enable GPU debug capabilities at runtime" ON "ENABLE_DEBUG_CAPS" OFF) - -ie_dependent_option (ENABLE_CPU_DEBUG_CAPS "enable CPU debug capabilities at runtime" ON "ENABLE_DEBUG_CAPS" OFF) - -find_host_package(PythonInterp 3 QUIET) -ie_option(ENABLE_OV_ONNX_FRONTEND "Enable ONNX FrontEnd" ${PYTHONINTERP_FOUND}) -ie_option(ENABLE_OV_PADDLE_FRONTEND "Enable PaddlePaddle FrontEnd" ON) -ie_option(ENABLE_OV_IR_FRONTEND "Enable IR FrontEnd" ON) -ie_option(ENABLE_OV_PYTORCH_FRONTEND "Enable PyTorch FrontEnd" ON) -ie_option(ENABLE_OV_TF_FRONTEND "Enable TensorFlow FrontEnd" ON) -ie_option(ENABLE_OV_TF_LITE_FRONTEND "Enable TensorFlow Lite FrontEnd" ON) -ie_option(ENABLE_OV_IR_FRONTEND "Enable IR FrontEnd" ON) - -ie_dependent_option(ENABLE_SNAPPY_COMPRESSION "Enables compression support for TF FE" ON - "ENABLE_OV_TF_FRONTEND" ON) -ie_dependent_option(ENABLE_SYSTEM_PROTOBUF "Enables use of system protobuf" OFF - "ENABLE_OV_ONNX_FRONTEND OR ENABLE_OV_PADDLE_FRONTEND OR ENABLE_OV_TF_FRONTEND;BUILD_SHARED_LIBS" OFF) +ie_dependent_option (ENABLE_SYSTEM_TBB "Enables use of system TBB" ${ENABLE_SYSTEM_TBB_DEFAULT} + "THREADING MATCHES TBB" OFF) +# TODO: turn it off by default during the work on cross-os distribution, because pugixml is not +# available out of box on all systems (like RHEL, UBI) +ie_option (ENABLE_SYSTEM_PUGIXML "Enables use of system PugiXML" ${ENABLE_SYSTEM_PUGIXML_DEFAULT}) +# the option is on by default, because we use only flatc compiler and don't use any libraries ie_dependent_option(ENABLE_SYSTEM_FLATBUFFERS "Enables use of system flatbuffers" ON "ENABLE_OV_TF_LITE_FRONTEND" OFF) -ie_dependent_option(ENABLE_SYSTEM_SNAPPY "Enables use of system version of snappy" OFF "ENABLE_SNAPPY_COMPRESSION;BUILD_SHARED_LIBS" OFF) +ie_dependent_option (ENABLE_SYSTEM_OPENCL "Enables use of system OpenCL" ${ENABLE_SYSTEM_LIBS_DEFAULT} + "ENABLE_INTEL_GPU" OFF) +# the option is turned off by default, because we compile our own static version of protobuf +# with LTO and -fPIC options, while system one does not have such flags +ie_dependent_option (ENABLE_SYSTEM_PROTOBUF "Enables use of system Protobuf" OFF + "ENABLE_OV_ONNX_FRONTEND OR ENABLE_OV_PADDLE_FRONTEND OR ENABLE_OV_TF_FRONTEND" OFF) +# the option is turned off by default, because we don't want to have a dependency on libsnappy.so +ie_dependent_option (ENABLE_SYSTEM_SNAPPY "Enables use of system version of Snappy" OFF + "ENABLE_SNAPPY_COMPRESSION" OFF) ie_option(ENABLE_OPENVINO_DEBUG "Enable output for OPENVINO_DEBUG statements" OFF) diff --git a/cmake/packaging/common-libraries.cmake b/cmake/packaging/common-libraries.cmake index d95f467a97b1bc..26dfdea0620ecc 100644 --- a/cmake/packaging/common-libraries.cmake +++ b/cmake/packaging/common-libraries.cmake @@ -10,8 +10,8 @@ macro(ov_cpack_settings) set(cpack_components_all ${CPACK_COMPONENTS_ALL}) unset(CPACK_COMPONENTS_ALL) foreach(item IN LISTS cpack_components_all) - # filter out some components, which are not needed to be wrapped to conda-forge | brew - if(# python is not a part of conda | brew + # filter out some components, which are not needed to be wrapped to conda-forge | brew | conan + if(# python is not a part of conda | brew | conan NOT item MATCHES "^${OV_CPACK_COMP_PYTHON_OPENVINO}_python.*" AND # python wheels are not needed to be wrapped by conda | brew packages NOT item STREQUAL OV_CPACK_COMP_PYTHON_WHEELS AND diff --git a/cmake/packaging/packaging.cmake b/cmake/packaging/packaging.cmake index 86e0bb91737850..7ebbf6f9bc0f44 100644 --- a/cmake/packaging/packaging.cmake +++ b/cmake/packaging/packaging.cmake @@ -6,7 +6,7 @@ if(CPACK_GENERATOR STREQUAL "DEB") include(cmake/packaging/debian.cmake) elseif(CPACK_GENERATOR STREQUAL "RPM") include(cmake/packaging/rpm.cmake) -elseif(CPACK_GENERATOR MATCHES "^(CONDA-FORGE|BREW)$") +elseif(CPACK_GENERATOR MATCHES "^(CONDA-FORGE|BREW|CONAN)$") include(cmake/packaging/common-libraries.cmake) elseif(CPACK_GENERATOR STREQUAL "NSIS") include(cmake/packaging/nsis.cmake) diff --git a/cmake/templates/InferenceEngineDeveloperPackageConfig.cmake.in b/cmake/templates/InferenceEngineDeveloperPackageConfig.cmake.in index 8708f9164be377..56a610cc39e670 100644 --- a/cmake/templates/InferenceEngineDeveloperPackageConfig.cmake.in +++ b/cmake/templates/InferenceEngineDeveloperPackageConfig.cmake.in @@ -142,6 +142,14 @@ if(ENABLE_SYSTEM_PUGIXML) endif() endif() +set(_IE_nlohmann_json_FOUND "@nlohmann_json_FOUND@") +if(_IE_nlohmann_json_FOUND) + find_dependency(nlohmann_json) + set_target_properties(nlohmann_json::nlohmann_json PROPERTIES IMPORTED_GLOBAL ON) + add_library(IE::nlohmann_json ALIAS nlohmann_json::nlohmann_json) +endif() +unset(_IE_nlohmann_json_FOUND) + # inherit OpenCV from main IE project if enabled if ("@OpenCV_FOUND@") load_cache("${cache_path}" READ_WITH_PREFIX "" OpenCV_DIR) diff --git a/cmake/templates/OpenVINOConfig.cmake.in b/cmake/templates/OpenVINOConfig.cmake.in index cf1f321ae35186..bd986a23943ec0 100644 --- a/cmake/templates/OpenVINOConfig.cmake.in +++ b/cmake/templates/OpenVINOConfig.cmake.in @@ -85,9 +85,9 @@ # # `OpenVINO_VERSION_MAJOR` # Major version component -# +# # `OpenVINO_VERSION_MINOR` -# minor version component +# Minor version component # # `OpenVINO_VERSION_PATCH` # Patch version component @@ -138,7 +138,7 @@ endmacro() macro(_ov_find_tbb) set(THREADING "@THREADING@") - if((THREADING STREQUAL "TBB" OR THREADING STREQUAL "TBB_AUTO") AND NOT TBB_FOUND) + if(THREADING STREQUAL "TBB" OR THREADING STREQUAL "TBB_AUTO") set(enable_pkgconfig_tbb "@tbb_FOUND@") # try tbb.pc @@ -153,10 +153,10 @@ macro(_ov_find_tbb) endif() pkg_search_module(tbb - ${pkg_config_quiet_arg} - ${pkg_config_required_arg} - IMPORTED_TARGET - tbb) + ${pkg_config_quiet_arg} + ${pkg_config_required_arg} + IMPORTED_TARGET + tbb) unset(pkg_config_quiet_arg) unset(pkg_config_required_arg) @@ -223,28 +223,185 @@ macro(_ov_find_tbb) PATHS ${_tbb_bind_dir} NO_CMAKE_FIND_ROOT_PATH NO_DEFAULT_PATH) - set_target_properties(${TBBBIND_2_5_IMPORTED_TARGETS} PROPERTIES IMPORTED_GLOBAL ON) unset(_tbb_bind_dir) endif() unset(install_tbbbind) endif() endmacro() +macro(_ov_find_pugixml) + set(_OV_ENABLE_SYSTEM_PUGIXML "@ENABLE_SYSTEM_PUGIXML@") + if(_OV_ENABLE_SYSTEM_PUGIXML) + set(_ov_pugixml_pkgconfig_interface "@pugixml_FOUND@") + set(_ov_pugixml_cmake_interface "@PugiXML_FOUND@") + + if(_ov_pugixml_pkgconfig_interface AND NOT ANDROID) + _ov_find_dependency(PkgConfig) + elseif(_ov_pugixml_cmake_interface) + _ov_find_dependency(PugiXML REQUIRED) + endif() + + if(PugiXML_FOUND) + if(TARGET pugixml) + set(_ov_pugixml_target pugixml) + elseif(TARGET pugixml::pugixml) + set(_ov_pugixml_target pugixml::pugixml) + endif() + if(OpenVINODeveloperPackage_DIR) + set_property(TARGET ${_ov_pugixml_target} PROPERTY IMPORTED_GLOBAL ON) + # align with build tree + add_library(openvino::pugixml ALIAS ${_ov_pugixml_target}) + endif() + unset(_ov_pugixml_target) + elseif(PkgConfig_FOUND) + if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY) + set(pkg_config_quiet_arg QUIET) + endif() + if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED) + set(pkg_config_required_arg REQUIRED) + endif() + + pkg_search_module(pugixml + ${pkg_config_quiet_arg} + ${pkg_config_required_arg} + IMPORTED_TARGET + GLOBAL + pugixml) + + unset(pkg_config_quiet_arg) + unset(pkg_config_required_arg) + + if(pugixml_FOUND) + if(OpenVINODeveloperPackage_DIR) + add_library(openvino::pugixml ALIAS PkgConfig::pugixml) + endif() + + # PATCH: on Ubuntu 18.04 pugixml.pc contains incorrect include directories + get_target_property(interface_include_dir PkgConfig::pugixml INTERFACE_INCLUDE_DIRECTORIES) + if(interface_include_dir AND NOT EXISTS "${interface_include_dir}") + set_target_properties(PkgConfig::pugixml PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "") + endif() + endif() + endif() + + # debian 9 case: no cmake, no pkg-config files + if(NOT TARGET openvino::pugixml) + find_library(PUGIXML_LIBRARY NAMES pugixml DOC "Path to pugixml library") + if(PUGIXML_LIBRARY) + add_library(openvino::pugixml INTERFACE IMPORTED) + set_target_properties(openvino::pugixml PROPERTIES INTERFACE_LINK_LIBRARIES "${PUGIXML_LIBRARY}") + else() + message(FATAL_ERROR "Failed to find system pugixml in OpenVINO Developer Package") + endif() + endif() + endif() +endmacro() + +macro(_ov_find_itt) + set(_ENABLE_PROFILING_ITT "@ENABLE_PROFILING_ITT@") + # whether 'ittapi' is found via find_package + set(_ENABLE_SYSTEM_ITTAPI "@ittapi_FOUND@") + if(_ENABLE_PROFILING_ITT AND _ENABLE_SYSTEM_ITTAPI) + _ov_find_dependency(ittapi) + endif() + unset(_ENABLE_PROFILING_ITT) + unset(_ENABLE_SYSTEM_ITTAPI) +endmacro() + +macro(_ov_find_ade) + set(_OV_ENABLE_GAPI_PREPROCESSING "@ENABLE_GAPI_PREPROCESSING@") + # whether 'ade' is found via find_package + set(_ENABLE_SYSTEM_ADE "@ade_FOUND@") + if(_OV_ENABLE_GAPI_PREPROCESSING AND _ENABLE_SYSTEM_ADE) + _ov_find_dependency(ade 0.1.2) + endif() + unset(_OV_ENABLE_GAPI_PREPROCESSING) + unset(_ENABLE_SYSTEM_ADE) +endmacro() + +macro(_ov_find_intel_cpu_dependencies) + set(_OV_ENABLE_CPU_ACL "@DNNL_USE_ACL@") + if(_OV_ENABLE_CPU_ACL) + if(_ov_as_external_package) + set_and_check(ARM_COMPUTE_LIB_DIR "@PACKAGE_ARM_COMPUTE_LIB_DIR@") + set(_ov_find_acl_options NO_DEFAULT_PATH) + set(_ov_find_acl_path "${CMAKE_CURRENT_LIST_DIR}") + else() + set_and_check(_ov_find_acl_path "@PACKAGE_FIND_ACL_PATH@") + endif() + + _ov_find_dependency(ACL + NO_MODULE + PATHS "${_ov_find_acl_path}" + ${_ov_find_acl_options}) + + unset(ARM_COMPUTE_LIB_DIR) + unset(_ov_find_acl_path) + unset(_ov_find_acl_options) + endif() + unset(_OV_ENABLE_CPU_ACL) +endmacro() + +macro(_ov_find_intel_gpu_dependencies) + set(_OV_ENABLE_INTEL_GPU "@ENABLE_INTEL_GPU@") + set(_OV_ENABLE_SYSTEM_OPENCL "@ENABLE_SYSTEM_OPENCL@") + if(_OV_ENABLE_INTEL_GPU AND _OV_ENABLE_SYSTEM_OPENCL) + set(_OV_OpenCLICDLoader_FOUND "@OpenCLICDLoader_FOUND@") + if(_OV_OpenCLICDLoader_FOUND) + _ov_find_dependency(OpenCLICDLoader) + else() + _ov_find_dependency(OpenCL) + endif() + unset(_OV_OpenCLICDLoader_FOUND) + endif() + unset(_OV_ENABLE_INTEL_GPU) + unset(_OV_ENABLE_SYSTEM_OPENCL) +endmacro() + macro(_ov_find_intel_gna_dependencies) set(_OV_ENABLE_INTEL_GNA "@ENABLE_INTEL_GNA@") - if(_OV_ENABLE_INTEL_GNA AND NOT libGNA_FOUND) + if(_OV_ENABLE_INTEL_GNA) set_and_check(GNA_PATH "@PACKAGE_GNA_PATH@") _ov_find_dependency(libGNA COMPONENTS KERNEL CONFIG PATHS "${CMAKE_CURRENT_LIST_DIR}" - NO_CMAKE_FIND_ROOT_PATH NO_DEFAULT_PATH) unset(GNA_PATH) endif() unset(_OV_ENABLE_INTEL_GNA) endmacro() +macro(_ov_find_protobuf_frontend_dependency) + set(_OV_ENABLE_SYSTEM_PROTOBUF "@ENABLE_SYSTEM_PROTOBUF@") + # TODO: remove check for target existence + if(_OV_ENABLE_SYSTEM_PROTOBUF AND NOT TARGET protobuf::libprotobuf) + _ov_find_dependency(Protobuf @Protobuf_VERSION@ EXACT) + endif() + unset(_OV_ENABLE_SYSTEM_PROTOBUF) +endmacro() + +macro(_ov_find_tensorflow_frontend_dependencies) + set(_OV_ENABLE_SYSTEM_SNAPPY "@ENABLE_SYSTEM_SNAPPY@") + set(_ov_snappy_lib "@ov_snappy_lib@") + # TODO: remove check for target existence + if(_OV_ENABLE_SYSTEM_SNAPPY AND NOT TARGET ${_ov_snappy_lib}) + _ov_find_dependency(Snappy @Snappy_VERSION@ EXACT) + endif() + unset(_OV_ENABLE_SYSTEM_SNAPPY) + unset(_ov_snappy_lib) + set(PACKAGE_PREFIX_DIR ${_ov_package_prefix_dir}) +endmacro() + +macro(_ov_find_onnx_frontend_dependencies) + set(_OV_ENABLE_SYSTEM_ONNX "@ENABLE_SYSTEM_ONNX@") + if(_OV_ENABLE_SYSTEM_ONNX) + _ov_find_dependency(ONNX @ONNX_VERSION@ EXACT) + endif() + unset(_OV_ENABLE_SYSTEM_ONNX) +endmacro() + function(_ov_target_no_deprecation_error) if(NOT MSVC) if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") @@ -270,8 +427,28 @@ set(_ov_package_prefix_dir "${PACKAGE_PREFIX_DIR}") set(_OV_ENABLE_OPENVINO_BUILD_SHARED "@BUILD_SHARED_LIBS@") +if(NOT TARGET openvino) + set(_ov_as_external_package ON) +endif() + if(NOT _OV_ENABLE_OPENVINO_BUILD_SHARED) + # common openvino dependencies _ov_find_tbb() + + _ov_find_itt() + _ov_find_pugixml() + + # preprocessing dependencies + _ov_find_ade() + + # frontend dependencies + _ov_find_protobuf_frontend_dependency() + _ov_find_tensorflow_frontend_dependencies() + _ov_find_onnx_frontend_dependencies() + + # plugin dependencies + _ov_find_intel_cpu_dependencies() + _ov_find_intel_gpu_dependencies() _ov_find_intel_gna_dependencies() endif() @@ -279,13 +456,26 @@ _ov_find_dependency(Threads) unset(_OV_ENABLE_OPENVINO_BUILD_SHARED) -if(NOT TARGET openvino) - set(_ov_as_external_package ON) +set(_ov_imported_libs openvino::runtime openvino::runtime::c + openvino::frontend::onnx openvino::frontend::paddle openvino::frontend::tensorflow + openvino::frontend::pytorch openvino::frontend::tensorflow_lite) + +if(_ov_as_external_package) include("${CMAKE_CURRENT_LIST_DIR}/OpenVINOTargets.cmake") + foreach(target IN LISTS _ov_imported_libs) + if(TARGET ${target}) + get_target_property(imported_configs ${target} IMPORTED_CONFIGURATIONS) + if(NOT RELWITHDEBINFO IN_LIST imported_configs) + set_property(TARGET ${target} PROPERTY MAP_IMPORTED_CONFIG_RELWITHDEBINFO RELEASE) + endif() + unset(imported_configs) + endif() + endforeach() + # WA for cmake version < 3.16 which does not export # IMPORTED_LINK_DEPENDENT_LIBRARIES_** properties if no PUBLIC dependencies for the library - if((THREADING STREQUAL "TBB" OR THREADING STREQUAL "TBB_AUTO") AND TBB_FOUND) + if(THREADING STREQUAL "TBB" OR THREADING STREQUAL "TBB_AUTO") foreach(type RELEASE DEBUG RELWITHDEBINFO MINSIZEREL) foreach(tbb_target TBB::tbb TBB::tbbmalloc PkgConfig::tbb) if(TARGET ${tbb_target}) @@ -326,12 +516,12 @@ endif() # Apply common functions # -foreach(target openvino::runtime openvino::runtime::c - openvino::frontend::onnx openvino::frontend::paddle openvino::frontend::tensorflow) +foreach(target IN LISTS _ov_imported_libs) if(TARGET ${target} AND _ov_as_external_package) _ov_target_no_deprecation_error(${target}) endif() endforeach() +unset(_ov_imported_libs) unset(_ov_as_external_package) # restore PACKAGE_PREFIX_DIR diff --git a/cmake/templates/OpenVINODeveloperPackageConfig.cmake.in b/cmake/templates/OpenVINODeveloperPackageConfig.cmake.in index d530ea36d1d9c8..277873a29bc32c 100644 --- a/cmake/templates/OpenVINODeveloperPackageConfig.cmake.in +++ b/cmake/templates/OpenVINODeveloperPackageConfig.cmake.in @@ -56,6 +56,7 @@ find_dependency(OpenVINO NO_DEFAULT_PATH) _ov_find_tbb() +_ov_find_pugixml() foreach(component @openvino_export_components@) # TODO: remove legacy targets from some tests @@ -65,58 +66,6 @@ foreach(component @openvino_export_components@) # endif() endforeach() -if(ENABLE_SYSTEM_PUGIXML) - set(_ov_pugixml_pkgconfig_interface "@pugixml_FOUND@") - set(_ov_pugixml_cmake_interface "@PugiXML_FOUND@") - if(_ov_pugixml_pkgconfig_interface) - find_dependency(PkgConfig) - elseif(_ov_pugixml_cmake_interface) - find_dependency(PugiXML) - endif() - if(PugiXML_FOUND) - set_property(TARGET pugixml PROPERTY IMPORTED_GLOBAL TRUE) - add_library(openvino::pugixml ALIAS pugixml) - elseif(PkgConfig_FOUND) - if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY) - set(pkg_config_quiet_arg QUIET) - endif() - if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED) - set(pkg_config_required_arg REQUIRED) - endif() - - pkg_search_module(pugixml - ${pkg_config_quiet_arg} - ${pkg_config_required_arg} - IMPORTED_TARGET GLOBAL - pugixml) - - unset(pkg_config_quiet_arg) - unset(pkg_config_required_arg) - - if(pugixml_FOUND) - add_library(openvino::pugixml ALIAS PkgConfig::pugixml) - - # PATCH: on Ubuntu 18.04 pugixml.pc contains incorrect include directories - get_target_property(interface_include_dir PkgConfig::pugixml INTERFACE_INCLUDE_DIRECTORIES) - if(interface_include_dir AND NOT EXISTS "${interface_include_dir}") - set_target_properties(PkgConfig::pugixml PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "") - endif() - endif() - endif() - - # debian 9 case: no cmake, no pkg-config files - if(NOT TARGET openvino::pugixml) - find_library(PUGIXML_LIBRARY NAMES pugixml DOC "Path to pugixml library") - if(PUGIXML_LIBRARY) - add_library(openvino::pugixml INTERFACE IMPORTED GLOBAL) - set_target_properties(openvino::pugixml PROPERTIES INTERFACE_LINK_LIBRARIES "${PUGIXML_LIBRARY}") - else() - message(FATAL_ERROR "Failed to find system pugixml in OpenVINO Developer Package") - endif() - endif() -endif() - # inherit OpenCV from main OpenVINO project if enabled if ("@OpenCV_FOUND@") load_cache("${cache_path}" READ_WITH_PREFIX "" OpenCV_DIR) diff --git a/cmake/toolchains/x86_64.linux.toolchain.cmake b/cmake/toolchains/x86_64.linux.toolchain.cmake new file mode 100644 index 00000000000000..7ce73bc1e714be --- /dev/null +++ b/cmake/toolchains/x86_64.linux.toolchain.cmake @@ -0,0 +1,75 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR amd64) + +set(CMAKE_C_COMPILER x86_64-linux-gnu-gcc) +set(CMAKE_CXX_COMPILER x86_64-linux-gnu-g++) +set(CMAKE_STRIP x86_64-linux-gnu-strip) +set(PKG_CONFIG_EXECUTABLE "NOT-FOUND" CACHE PATH "Path to amd64 pkg-config") + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + +macro(__cmake_find_root_save_and_reset) + foreach(v + CMAKE_FIND_ROOT_PATH_MODE_LIBRARY + CMAKE_FIND_ROOT_PATH_MODE_INCLUDE + CMAKE_FIND_ROOT_PATH_MODE_PACKAGE + CMAKE_FIND_ROOT_PATH_MODE_PROGRAM + ) + set(__save_${v} ${${v}}) + set(${v} NEVER) + endforeach() +endmacro() + +macro(__cmake_find_root_restore) + foreach(v + CMAKE_FIND_ROOT_PATH_MODE_LIBRARY + CMAKE_FIND_ROOT_PATH_MODE_INCLUDE + CMAKE_FIND_ROOT_PATH_MODE_PACKAGE + CMAKE_FIND_ROOT_PATH_MODE_PROGRAM + ) + set(${v} ${__save_${v}}) + unset(__save_${v}) + endforeach() +endmacro() + + +# macro to find programs on the host OS +macro(find_host_program) + __cmake_find_root_save_and_reset() + if(CMAKE_HOST_WIN32) + SET(WIN32 1) + SET(UNIX) + elseif(CMAKE_HOST_APPLE) + SET(APPLE 1) + SET(UNIX) + endif() + find_program(${ARGN}) + SET(WIN32) + SET(APPLE) + SET(UNIX 1) + __cmake_find_root_restore() +endmacro() + +# macro to find packages on the host OS +macro(find_host_package) + __cmake_find_root_save_and_reset() + if(CMAKE_HOST_WIN32) + SET(WIN32 1) + SET(UNIX) + elseif(CMAKE_HOST_APPLE) + SET(APPLE 1) + SET(UNIX) + endif() + find_package(${ARGN}) + SET(WIN32) + SET(APPLE) + SET(UNIX 1) + __cmake_find_root_restore() +endmacro() diff --git a/conanfile.txt b/conanfile.txt new file mode 100644 index 00000000000000..085464edcdb628 --- /dev/null +++ b/conanfile.txt @@ -0,0 +1,33 @@ +[requires] +ade/0.1.2a +onetbb/[>=2021.2.1] +pugixml/[>=1.10] +protobuf/[>=3.20.3] +ittapi/[>=3.23.0] +zlib/[>=1.2.8] +opencl-icd-loader/[>=2022.09.30] +# opencl-clhpp-headers/[>=2022.09.30] +opencl-headers/[>=2022.09.30] +xbyak/[>=6.62] +snappy/[>=1.1.7] +gflags/2.2.2 +onnx/1.13.1 +nlohmann_json/[>=3.1.1] +pybind11/[>=2.10.1] +flatbuffers/[>=22.9.24] + +[tool_requires] +cmake/[>=3.15] +patchelf/[>=0.12] +protobuf/[>=3.20.3] +flatbuffers/[>=22.9.24] + +[options] +protobuf/*:lite=True +onetbb/*:tbbmalloc=True +onetbb/*:tbbproxy=True +flatbuffers/*:header_only=True + +[generators] +CMakeDeps +CMakeToolchain \ No newline at end of file diff --git a/licensing/CMakeLists.txt b/licensing/CMakeLists.txt index 7ba3293acd784d..632eb183595869 100644 --- a/licensing/CMakeLists.txt +++ b/licensing/CMakeLists.txt @@ -9,7 +9,7 @@ ov_cpack_add_component(${OV_CPACK_COMP_LICENSING} HIDDEN) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ - DESTINATION ${OV_CPACK_DOCDIR}/licensing + DESTINATION ${OV_CPACK_LICENSESDIR} COMPONENT ${OV_CPACK_COMP_LICENSING} PATTERN CMakeLists.txt EXCLUDE PATTERN dev-third-party-programs.txt EXCLUDE diff --git a/samples/cpp/CMakeLists.txt b/samples/cpp/CMakeLists.txt index fcf9c864e6dd8a..37eb0250112aa8 100644 --- a/samples/cpp/CMakeLists.txt +++ b/samples/cpp/CMakeLists.txt @@ -115,6 +115,9 @@ elseif(gflags_required) elseif(TARGET gflags-shared) # gflags shared case for CentOS / RHEL / Fedora set(GFLAGS_TARGET gflags-shared) + elseif(TARGET gflags::gflags) + # gflags case for Conan + set(GFLAGS_TARGET gflags::gflags) else() message(FATAL_ERROR "Internal error: failed to find imported target 'gflags' using '${gflags_component}' component") endif() diff --git a/samples/cpp/speech_sample/CMakeLists.txt b/samples/cpp/speech_sample/CMakeLists.txt index 2b99a9fe1367d2..1cae24911955a9 100644 --- a/samples/cpp/speech_sample/CMakeLists.txt +++ b/samples/cpp/speech_sample/CMakeLists.txt @@ -12,13 +12,15 @@ if(NOT ANDROID) find_package(PkgConfig QUIET) endif() -if(NOT TARGET zlib::zlib) +find_package(ZLIB QUIET) + +if(NOT TARGET ZLIB::ZLIB) if(PkgConfig_FOUND) pkg_search_module(zlib QUIET IMPORTED_TARGET GLOBAL zlib) if(zlib_FOUND) - add_library(zlib::zlib ALIAS PkgConfig::zlib) + add_library(ZLIB::ZLIB ALIAS PkgConfig::zlib) endif() endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 31f93f7f05d77f..658addde5bf431 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -8,7 +8,6 @@ include(cmake/install_tbb.cmake) # CC library should be registered before other cc targets add_subdirectory(common) -# TODO: Fix Wall for core, frontends and tests add_subdirectory(core) add_subdirectory(frontends) # TODO: remove ngraph/ngraph.hpp usage @@ -17,7 +16,6 @@ if(ENABLE_TESTS) endif() if(CMAKE_COMPILER_IS_GNUCXX) - ie_add_compiler_flags(-Wall) ie_add_compiler_flags(-Wmissing-declarations) endif() diff --git a/src/cmake/ie_parallel.cmake b/src/cmake/ie_parallel.cmake index 211b9008a30c01..0268d4d5b8f4c6 100644 --- a/src/cmake/ie_parallel.cmake +++ b/src/cmake/ie_parallel.cmake @@ -11,34 +11,72 @@ function(_ov_get_tbb_location tbb_target _tbb_lib_location_var) return() endif() - foreach(property INTERFACE_LINK_LIBRARIES - IMPORTED_LOCATION_RELEASE - IMPORTED_LOCATION_RELWITHDEBINFO - IMPORTED_LOCATION_NONE - IMPORTED_LOCATION) - get_target_property(_tbb_lib_location ${tbb_target} ${property}) - if(_tbb_lib_location) - if(property STREQUAL INTERFACE_LINK_LIBRARIES) - # pkg-config can set multiple libraries as interface, need to filter out - foreach(tbb_lib IN LISTS _tbb_lib_location) - if(tbb_lib MATCHES "${CMAKE_SHARED_LIBRARY_PREFIX}tbb${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(${_tbb_lib_location_var} "${tbb_lib}" PARENT_SCOPE) - return() - endif() - endforeach() - else() - set(${_tbb_lib_location_var} "${_tbb_lib_location}" PARENT_SCOPE) - return() + function(_get_target_location target lib_location_var) + if(NOT TARGET ${target}) + message(FATAL_ERROR "Internal error: ${target} does not represent a target") + endif() + + get_target_property(_imported_configs ${target} IMPORTED_CONFIGURATIONS) + if(NOT _imported_configs) + # if IMPORTED_CONFIGURATIONS property is not set, then set a common list + set(_imported_configs RELEASE NONE) + endif() + + # generate a list of locations + foreach(_imported_config IN LISTS _imported_configs) + list(APPEND _location_properties IMPORTED_LOCATION_${_imported_config}) + endforeach() + # add some more locations which are used by package managers + list(APPEND _location_properties IMPORTED_LOCATION) + + foreach(_location_property IN LISTS _location_properties) + get_target_property(_lib_location ${target} ${_location_property}) + if(_lib_location) + set(${lib_location_var} "${_lib_location}" PARENT_SCOPE) + break() endif() + endforeach() + endfunction() + + macro(_handle_tbb_target _tbb_target) + _get_target_location(${_tbb_target} "_tbb_lib_location") + if(_tbb_lib_location) + set(${_tbb_lib_location_var} "${_tbb_lib_location}" PARENT_SCOPE) + return() + endif() + endmacro() + + # handle INTERFACE_LINK_LIBRARIES + get_target_property(_tbb_interface_link_libraries ${tbb_target} INTERFACE_LINK_LIBRARIES) + # pkg-config can set multiple libraries as interface, need to filter out + foreach(tbb_lib IN LISTS _tbb_interface_link_libraries) + # handle cases like in conan: $<$:CONAN_LIB::onetbb_TBB_tbb_tbb_RELEASE> + if(${tbb_lib} MATCHES "CONAN_LIB::([A-Za-z0-9_]*)") + set(tbb_lib_parsed "CONAN_LIB::${CMAKE_MATCH_1}") + _handle_tbb_target(${tbb_lib_parsed}) + elseif(tbb_lib MATCHES "${CMAKE_SHARED_LIBRARY_PREFIX}tbb${CMAKE_SHARED_LIBRARY_SUFFIX}") + # tbb_lib just a full path to a library itself + set(${_tbb_lib_location_var} "${tbb_lib}" PARENT_SCOPE) + return() endif() endforeach() + # handle case of usual target + _handle_tbb_target(${tbb_target}) + message(FATAL_ERROR "Failed to detect TBB library location") endfunction() macro(ov_find_package_tbb) if(THREADING STREQUAL "TBB" OR THREADING STREQUAL "TBB_AUTO" AND NOT TBB_FOUND) - set(_ov_minimal_tbb_version 2017.0) + # conan generates TBBConfig.cmake files, which follows cmake's + # SameMajorVersion scheme, while TBB itself follows AnyNewerVersion one + # see https://cmake.org/cmake/help/latest/module/CMakePackageConfigHelpers.html#generating-a-package-version-file + if(CMAKE_TOOLCHAIN_FILE MATCHES "conan_toolchain.cmake" OR CONAN_EXPORTED) + set(_ov_minimal_tbb_version 2021.0) + else() + set(_ov_minimal_tbb_version 2017.0) + endif() if(NOT ENABLE_SYSTEM_TBB) if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.24) @@ -74,7 +112,10 @@ macro(ov_find_package_tbb) unset(tbb_FOUND CACHE) endmacro() pkg_search_module(tbb QUIET - IMPORTED_TARGET GLOBAL + IMPORTED_TARGET + # we need to set GLOBAL in order to create ALIAS later + # ALIAS creation for non-GLOBAL targets is available since cmake 3.18 + GLOBAL tbb) if(tbb_FOUND) # parse version @@ -99,7 +140,7 @@ macro(ov_find_package_tbb) else() _ov_pkg_config_tbb_unset() - if(CPACK_GENERATOR STREQUAL "^(DEB|RPM|CONDA-FORGE|BREW)$") + if(CPACK_GENERATOR STREQUAL "^(DEB|RPM|CONDA-FORGE|BREW|CONAN)$") # package managers require system TBB set(message_type FATAL_ERROR) else() @@ -148,12 +189,14 @@ macro(ov_find_package_tbb) # let's try it first if(PkgConfig_FOUND) pkg_search_module(HWLOC QUIET - IMPORTED_TARGET GLOBAL + IMPORTED_TARGET + GLOBAL hwloc) endif() if(TARGET PkgConfig::HWLOC) # dependency is satisfied + add_library(HWLOC::hwloc_2_5 ALIAS PkgConfig::HWLOC) else() # Add HWLOC::hwloc_2_5 target to check via ApiValidator get_target_property(imported_configs TBB::tbbbind_2_5 IMPORTED_CONFIGURATIONS) @@ -168,9 +211,7 @@ macro(ov_find_package_tbb) set(hwloc_dll_name "${CMAKE_SHARED_LIBRARY_PREFIX}hwloc${CMAKE_SHARED_LIBRARY_SUFFIX}") find_file(HWLOC_DLL NAMES ${hwloc_dll_name} PATHS "${TBB_dir}" DOC "Path to hwloc.dll") - if(NOT HWLOC_DLL) - message(WARNING "Failed to find ${hwloc_dll_name} in ${TBB_dir}") - else() + if(HWLOC_DLL) add_library(HWLOC::hwloc_2_5 SHARED IMPORTED) set_property(TARGET HWLOC::hwloc_2_5 APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_target_properties(HWLOC::hwloc_2_5 PROPERTIES IMPORTED_LOCATION_RELEASE "${HWLOC_DLL}") diff --git a/src/cmake/install_tbb.cmake b/src/cmake/install_tbb.cmake index 0a1cce51a4f3a6..fea3737cd75f03 100644 --- a/src/cmake/install_tbb.cmake +++ b/src/cmake/install_tbb.cmake @@ -96,7 +96,7 @@ if(THREADING MATCHES "^(TBB|TBB_AUTO)$" AND set(_ov_system_tbb_is_obsolete ON) endif() - if(CPACK_GENERATOR MATCHES "^(DEB|RPM|CONDA-FORGE|BREW)$" AND + if(CPACK_GENERATOR MATCHES "^(DEB|RPM|CONDA-FORGE|BREW|CONAN)$" AND NOT ENABLE_SYSTEM_TBB AND NOT _ov_system_tbb_is_obsolete) message(FATAL_ERROR "Debian | RPM | Conda-forge | Brew packages can be built only with system TBB. Use -DENABLE_SYSTEM_TBB=ON") diff --git a/src/cmake/openvino.cmake b/src/cmake/openvino.cmake index acfdbdcfbb3540..78b10ca0e2ead6 100644 --- a/src/cmake/openvino.cmake +++ b/src/cmake/openvino.cmake @@ -118,14 +118,8 @@ ov_install_static_lib(${TARGET_NAME}_dev ${OV_CPACK_COMP_CORE}) # Install OpenVINO runtime # -list(APPEND PATH_VARS "IE_INCLUDE_DIR") - ov_add_library_version(${TARGET_NAME}) -if(ENABLE_INTEL_GNA) - list(APPEND PATH_VARS "GNA_PATH") -endif() - ov_cpack_add_component(${OV_CPACK_COMP_CORE} HIDDEN DEPENDS ${core_components}) @@ -145,7 +139,9 @@ if(ENABLE_PLUGINS_XML) endif() endif() +# # Install cmake scripts +# install(EXPORT OpenVINOTargets FILE OpenVINOTargets.cmake @@ -153,6 +149,17 @@ install(EXPORT OpenVINOTargets DESTINATION ${OV_CPACK_OPENVINO_CMAKEDIR} COMPONENT ${OV_CPACK_COMP_CORE_DEV}) +# build tree + +list(APPEND PATH_VARS "IE_INCLUDE_DIR") +if(ENABLE_INTEL_GNA) + list(APPEND PATH_VARS "GNA_PATH") +endif() +if(DNNL_USE_ACL) + list(APPEND BUILD_PATH_VARS "FIND_ACL_PATH") + set(FIND_ACL_PATH "${intel_cpu_thirdparty_SOURCE_DIR}") +endif() + set(PUBLIC_HEADERS_DIR "${OpenVINO_SOURCE_DIR}/src/inference/include") set(IE_INCLUDE_DIR "${PUBLIC_HEADERS_DIR}/ie") set(IE_TBB_DIR "${TBB_DIR}") @@ -160,12 +167,21 @@ set(IE_TBB_DIR "${TBB_DIR}") configure_package_config_file("${OpenVINO_SOURCE_DIR}/cmake/templates/InferenceEngineConfig.cmake.in" "${CMAKE_BINARY_DIR}/InferenceEngineConfig.cmake" INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}" - PATH_VARS ${PATH_VARS}) + PATH_VARS ${PATH_VARS} ${BUILD_PATH_VARS}) configure_package_config_file("${OpenVINO_SOURCE_DIR}/cmake/templates/OpenVINOConfig.cmake.in" "${CMAKE_BINARY_DIR}/OpenVINOConfig.cmake" INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}" - PATH_VARS ${PATH_VARS}) + PATH_VARS ${PATH_VARS} ${BUILD_PATH_VARS}) + +# install tree + +if(DNNL_USE_ACL) + list(APPEND INSTALL_PATH_VARS "ARM_COMPUTE_LIB_DIR") + # remove generator expression at the end, because searching in Release / Debug will be + # done by ACLConfig.cmake itself + string(REPLACE "$" "" ARM_COMPUTE_LIB_DIR "${OV_CPACK_LIBRARYDIR}") +endif() set(IE_INCLUDE_DIR "${OV_CPACK_INCLUDEDIR}/ie") set(IE_TBB_DIR "${IE_TBB_DIR_INSTALL}") @@ -178,12 +194,12 @@ endif() configure_package_config_file("${OpenVINO_SOURCE_DIR}/cmake/templates/InferenceEngineConfig.cmake.in" "${CMAKE_BINARY_DIR}/share/InferenceEngineConfig.cmake" INSTALL_DESTINATION ${OV_CPACK_IE_CMAKEDIR} - PATH_VARS ${PATH_VARS}) + PATH_VARS ${PATH_VARS} ${INSTALL_PATH_VARS}) configure_package_config_file("${OpenVINO_SOURCE_DIR}/cmake/templates/OpenVINOConfig.cmake.in" "${CMAKE_BINARY_DIR}/share/OpenVINOConfig.cmake" INSTALL_DESTINATION ${OV_CPACK_OPENVINO_CMAKEDIR} - PATH_VARS ${PATH_VARS}) + PATH_VARS ${PATH_VARS} ${INSTALL_PATH_VARS}) configure_file("${OpenVINO_SOURCE_DIR}/cmake/templates/InferenceEngineConfig-version.cmake.in" "${CMAKE_BINARY_DIR}/InferenceEngineConfig-version.cmake" @ONLY) @@ -200,7 +216,9 @@ install(FILES "${CMAKE_BINARY_DIR}/share/OpenVINOConfig.cmake" DESTINATION ${OV_CPACK_OPENVINO_CMAKEDIR} COMPONENT ${OV_CPACK_COMP_CORE_DEV}) +# # Generate and install openvino.pc pkg-config file +# if(ENABLE_PKGCONFIG_GEN) # fill in PKGCONFIG_OpenVINO_DEFINITIONS diff --git a/src/common/itt/CMakeLists.txt b/src/common/itt/CMakeLists.txt index e47689a909a80e..6e5727cd85556e 100644 --- a/src/common/itt/CMakeLists.txt +++ b/src/common/itt/CMakeLists.txt @@ -7,13 +7,12 @@ set(TARGET_NAME itt) file(GLOB_RECURSE SOURCES "src/*.cpp" "src/*.hpp") add_library(${TARGET_NAME} STATIC ${SOURCES}) - add_library(openvino::itt ALIAS ${TARGET_NAME}) target_link_libraries(${TARGET_NAME} PUBLIC openvino::util) -if(TARGET ittnotify) - target_link_libraries(${TARGET_NAME} PUBLIC ittnotify) +if(ENABLE_PROFILING_ITT) + target_link_libraries(${TARGET_NAME} PUBLIC ittapi::ittnotify) if(ENABLE_PROFILING_FILTER STREQUAL "ALL") target_compile_definitions(${TARGET_NAME} PUBLIC ENABLE_PROFILING_ALL diff --git a/src/common/itt/cmake/ITTConfig.cmake b/src/common/itt/cmake/ITTConfig.cmake index f3e6e03143fbe5..659fdc8b86a62f 100644 --- a/src/common/itt/cmake/ITTConfig.cmake +++ b/src/common/itt/cmake/ITTConfig.cmake @@ -48,12 +48,12 @@ find_package_handle_standard_args(ITT if(ITT_FOUND) set(INTEL_ITT_FOUND ${ITT_FOUND}) - add_library(ittnotify STATIC IMPORTED GLOBAL) - set_target_properties(ittnotify PROPERTIES IMPORTED_LOCATION "${Located_ITT_LIBS}" - INTERFACE_INCLUDE_DIRECTORIES ${Located_ITT_INCLUDE_DIRS} - INTERFACE_COMPILE_DEFINITIONS ENABLE_PROFILING_ITT) + add_library(ittapi::ittnotify STATIC IMPORTED GLOBAL) + set_target_properties(ittapi::ittnotify PROPERTIES IMPORTED_LOCATION "${Located_ITT_LIBS}" + INTERFACE_INCLUDE_DIRECTORIES ${Located_ITT_INCLUDE_DIRS} + INTERFACE_COMPILE_DEFINITIONS ENABLE_PROFILING_ITT) if(UNIX) - set_target_properties(ittnotify PROPERTIES INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS};Threads::Threads") + set_target_properties(ittapi::ittnotify PROPERTIES INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS};Threads::Threads") endif() endif() diff --git a/src/core/reference/CMakeLists.txt b/src/core/reference/CMakeLists.txt index 60ee5956ac9d94..6608cf3c7843e3 100644 --- a/src/core/reference/CMakeLists.txt +++ b/src/core/reference/CMakeLists.txt @@ -32,7 +32,8 @@ target_include_directories(${TARGET_NAME} PUBLIC $ $) -link_system_libraries(${TARGET_NAME} PRIVATE xbyak) +target_include_directories(${TARGET_NAME} SYSTEM PRIVATE + $:$>>) add_clang_format_target(${TARGET_NAME}_clang FOR_TARGETS ${TARGET_NAME}) diff --git a/src/core/reference/include/ngraph/runtime/reference/convolution.hpp b/src/core/reference/include/ngraph/runtime/reference/convolution.hpp index 48c8be356c62ff..82e55cd9e73743 100644 --- a/src/core/reference/include/ngraph/runtime/reference/convolution.hpp +++ b/src/core/reference/include/ngraph/runtime/reference/convolution.hpp @@ -50,7 +50,7 @@ struct ConvolutionParams { }; template -constexpr inline bool in_range(Int val, std::pair range) noexcept { +constexpr inline bool in_range(Int val, const std::pair& range) noexcept { return val >= range.first && val < range.second; } diff --git a/src/core/reference/src/runtime/reference/jit_generator.cpp b/src/core/reference/src/runtime/reference/jit_generator.cpp index 431eb9877ca3fb..1ca5affacddeab 100644 --- a/src/core/reference/src/runtime/reference/jit_generator.cpp +++ b/src/core/reference/src/runtime/reference/jit_generator.cpp @@ -2,13 +2,17 @@ // SPDX-License-Identifier: Apache-2.0 // -#include "jit_generator.hpp" +#include "openvino/core/visibility.hpp" -#include +#if defined(OPENVINO_ARCH_X86) || defined(OPENVINO_ARCH_X86_64) -#include "ngraph/type/float16.hpp" +# if defined _WIN32 && !defined NOMINMAX +# define NOMINMAX +# endif +# include -#if defined(OPENVINO_ARCH_X86) || defined(OPENVINO_ARCH_X86_64) +# include "jit_generator.hpp" +# include "ngraph/type/float16.hpp" namespace ngraph { namespace runtime { diff --git a/src/core/src/pass/manager.cpp b/src/core/src/pass/manager.cpp index bac12e6c544c6e..fa01e69b9f2225 100644 --- a/src/core/src/pass/manager.cpp +++ b/src/core/src/pass/manager.cpp @@ -79,7 +79,7 @@ bool ov::pass::Manager::run_passes(shared_ptr func) { continue; } - OV_ITT_SCOPE(FIRST_INFERENCE, ov::itt::domains::ov_pass, pass::perf_counters()[pass->get_type_info()]); + OV_ITT_SCOPE(FIRST_INFERENCE, ov::itt::domains::ov_pass, ov::pass::perf_counters()[pass->get_type_info()]); pass_timer.start(); diff --git a/src/frontends/common/shutdown_protobuf/CMakeLists.txt b/src/frontends/common/shutdown_protobuf/CMakeLists.txt index a14a97f7f314a5..4b0c2309abb1dd 100644 --- a/src/frontends/common/shutdown_protobuf/CMakeLists.txt +++ b/src/frontends/common/shutdown_protobuf/CMakeLists.txt @@ -6,5 +6,6 @@ set(TARGET_NAME ov_protobuf_shutdown) add_library(${TARGET_NAME} STATIC shutdown_protobuf.cpp) -target_include_directories(${TARGET_NAME} SYSTEM PRIVATE $) +target_include_directories(${TARGET_NAME} SYSTEM PRIVATE + $>) set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO}) diff --git a/src/frontends/ir/src/os/win/win_mmap_object.cpp b/src/frontends/ir/src/os/win/win_mmap_object.cpp index a3c85bd310144c..5a99c1c63b3654 100644 --- a/src/frontends/ir/src/os/win/win_mmap_object.cpp +++ b/src/frontends/ir/src/os/win/win_mmap_object.cpp @@ -7,6 +7,9 @@ #include "openvino/util/file_util.hpp" // clang-format-off +#ifndef NOMINMAX +# define NOMINMAX +#endif #include // clang-format-on diff --git a/src/frontends/onnx/onnx_common/CMakeLists.txt b/src/frontends/onnx/onnx_common/CMakeLists.txt index 7ea6b0ed11f0c5..ef3d4ce3c1a1b6 100644 --- a/src/frontends/onnx/onnx_common/CMakeLists.txt +++ b/src/frontends/onnx/onnx_common/CMakeLists.txt @@ -29,9 +29,9 @@ target_include_directories(${TARGET_NAME} PUBLIC $ $ - ${Protobuf_INCLUDE_DIRS}) + $) target_compile_definitions(ov_onnx_frontend_tests PRIVATE $) target_compile_definitions(ov_onnx_frontend_tests PRIVATE ENABLE_OV_ONNX_FRONTEND) diff --git a/src/frontends/tensorflow/src/CMakeLists.txt b/src/frontends/tensorflow/src/CMakeLists.txt index af1cb8b00cdbd0..95a999092e1c19 100644 --- a/src/frontends/tensorflow/src/CMakeLists.txt +++ b/src/frontends/tensorflow/src/CMakeLists.txt @@ -8,6 +8,6 @@ ov_add_frontend(NAME tensorflow LINK_LIBRARIES openvino::core::dev openvino::frontend::tensorflow_common) if(ENABLE_SNAPPY_COMPRESSION) - target_link_libraries(openvino_tensorflow_frontend PRIVATE Snappy::snappy) + target_link_libraries(openvino_tensorflow_frontend PRIVATE openvino::snappy) target_compile_definitions(openvino_tensorflow_frontend PRIVATE ENABLE_SNAPPY_COMPRESSION) endif() diff --git a/src/frontends/tensorflow/src/variables_index.hpp b/src/frontends/tensorflow/src/variables_index.hpp index d3a3cf518fdf42..0c2f5dfc899c92 100644 --- a/src/frontends/tensorflow/src/variables_index.hpp +++ b/src/frontends/tensorflow/src/variables_index.hpp @@ -78,7 +78,7 @@ class VariablesIndex { } /// \brief Checks if variable has a mapped pair - /// \param name Name of variable for checking existance + /// \param name Name of variable for checking existence /// \returns True in case variable has mapped value and false otherwise bool has_mapped_variable(const std::string& name) const { auto mapItem = m_variables_map.find(name); diff --git a/src/frontends/tensorflow_common/src/op/non_max_suppression.cpp b/src/frontends/tensorflow_common/src/op/non_max_suppression.cpp index ad8d1fc587da12..69b8a9cd0184f4 100644 --- a/src/frontends/tensorflow_common/src/op/non_max_suppression.cpp +++ b/src/frontends/tensorflow_common/src/op/non_max_suppression.cpp @@ -52,13 +52,13 @@ NamedOutputVector translate_non_max_suppression_op(const NodeContext& node) { auto scores = node.get_input(1); auto max_output_size = node.get_input(2); - // prepare boxes: in TensorFlow NonMaxSupression operation there is no batch dimension + // prepare boxes: in TensorFlow NonMaxSuppression operation there is no batch dimension // so we need to introduce it to be aligned with OpenVINO NonMaxSuppression // boxes of shape [num_batches, num_boxes, 4] auto boxes_axis = make_shared(element::i32, Shape{1}, 0); auto ov_boxes = make_shared(boxes, boxes_axis); - // prepare scores: in TensorFlow NonMaxSupression operation there is no batch and class dimensions + // prepare scores: in TensorFlow NonMaxSuppression operation there is no batch and class dimensions // so we need to introduce them to be aligned with OpenVINO NonMaxSuppression scores // of shape [num_batches, num_classes, num_boxes] auto scores_axes = make_shared(element::i32, Shape{2}, vector{0, 1}); diff --git a/src/inference/CMakeLists.txt b/src/inference/CMakeLists.txt index e9ce7bc8d02cd9..28f4fb9c69391c 100644 --- a/src/inference/CMakeLists.txt +++ b/src/inference/CMakeLists.txt @@ -133,7 +133,7 @@ target_include_directories(${TARGET_NAME}_obj SYSTEM PRIVATE $ $ $ - $) + $<$:$>) target_include_directories(${TARGET_NAME}_obj PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src" diff --git a/src/inference/src/dev/threading/parallel_custom_arena.cpp b/src/inference/src/dev/threading/parallel_custom_arena.cpp index c3d823c2ff7071..4e25a4f4d1b859 100644 --- a/src/inference/src/dev/threading/parallel_custom_arena.cpp +++ b/src/inference/src/dev/threading/parallel_custom_arena.cpp @@ -31,6 +31,9 @@ # endif # if defined(_WIN32) || defined(_WIN64) +# ifndef NOMINMAX +# define NOMINMAX +# endif # include # endif diff --git a/src/inference/src/system_conf.cpp b/src/inference/src/system_conf.cpp index 19b42b9d3e2d36..d555db7f34bde8 100644 --- a/src/inference/src/system_conf.cpp +++ b/src/inference/src/system_conf.cpp @@ -19,15 +19,17 @@ #include "streams_executor.hpp" #include "threading/ie_cpu_streams_info.hpp" -#define XBYAK_NO_OP_NAMES -#define XBYAK_UNDEF_JNL -#include +#if defined(OPENVINO_ARCH_X86) || defined(OPENVINO_ARCH_X86_64) +# define XBYAK_NO_OP_NAMES +# define XBYAK_UNDEF_JNL +# include +#endif using namespace InferenceEngine; namespace ov { -#if defined(OPENVINO_ARCH_X86) || defined(OPENVINO_ARCH_X86_64) +#if defined(OPENVINO_ARCH_X86_64) // note: MSVC 2022 (17.4) is not able to compile the next line for ARM and ARM64 // so, we disable this code since for non-x86 platforms it returns 'false' anyway @@ -77,7 +79,7 @@ bool with_cpu_x86_avx512_core_amx() { return with_cpu_x86_avx512_core_amx_int8() || with_cpu_x86_avx512_core_amx_bf16(); } -#else // OPENVINO_ARCH_X86 || OPENVINO_ARCH_X86_64 +#else // OPENVINO_ARCH_X86_64 bool with_cpu_x86_sse42() { return false; @@ -110,7 +112,7 @@ bool with_cpu_x86_avx512_core_amx() { return false; } -#endif // OPENVINO_ARCH_X86 || OPENVINO_ARCH_X86_64 +#endif // OPENVINO_ARCH_X86_64 bool check_open_mp_env_vars(bool include_omp_num_threads) { for (auto&& var : {"GOMP_CPU_AFFINITY", diff --git a/src/plugins/auto/CMakeLists.txt b/src/plugins/auto/CMakeLists.txt index a0fc390b9859fd..312ac4a7966d3a 100644 --- a/src/plugins/auto/CMakeLists.txt +++ b/src/plugins/auto/CMakeLists.txt @@ -1,12 +1,11 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # + if(NOT ENABLE_AUTO AND NOT ENABLE_MULTI) return() endif() - - set (TARGET_NAME "openvino_auto_plugin") file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/*.cpp) diff --git a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/behavior/ov_plugin/caching_tests.cpp b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/behavior/ov_plugin/caching_tests.cpp index 10a5a5bd06d6bc..2f59f155cd06e1 100644 --- a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/behavior/ov_plugin/caching_tests.cpp +++ b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/behavior/ov_plugin/caching_tests.cpp @@ -39,7 +39,7 @@ namespace { 1 }; - static std::shared_ptr simple_function_non_max_supression_internal(ngraph::element::Type, size_t) { + static std::shared_ptr simple_function_non_max_suppression_internal(ngraph::element::Type, size_t) { auto boxes = std::make_shared(element::f32, Shape{1, 1000, 4}); auto scores = std::make_shared(element::f32, Shape{1, 1, 1000}); auto max_output_boxes_per_class = ov::op::v0::Constant::create(element::i32, Shape{1}, {10}); @@ -77,7 +77,7 @@ namespace { static std::vector internal_functions_cpu() { std::vector funcs = { - ovModelWithName { simple_function_non_max_supression_internal, "NonMaxSuppressionIEInternal"}, + ovModelWithName { simple_function_non_max_suppression_internal, "NonMaxSuppressionIEInternal"}, ovModelWithName { simple_function_matrix_nms_internal, "NmsStaticShapeIE_MatrixNms"}, ovModelWithName { simple_function_multiclass_nms_internal, "MulticlassNmsIEInternal"}, }; diff --git a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/behavior/plugin/caching_tests.cpp b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/behavior/plugin/caching_tests.cpp index e2d517232d3e7a..22ac9df2c0c358 100644 --- a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/behavior/plugin/caching_tests.cpp +++ b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/behavior/plugin/caching_tests.cpp @@ -39,7 +39,7 @@ namespace { 1 }; - static std::shared_ptr simple_function_non_max_supression_internal(ngraph::element::Type, size_t) { + static std::shared_ptr simple_function_non_max_suppression_internal(ngraph::element::Type, size_t) { auto boxes = std::make_shared(element::f32, Shape{1, 1000, 4}); auto scores = std::make_shared(element::f32, Shape{1, 1, 1000}); auto max_output_boxes_per_class = opset1::Constant::create(element::i32, Shape{1}, {10}); @@ -77,7 +77,7 @@ namespace { static std::vector internal_functions_cpu() { std::vector funcs = { - nGraphFunctionWithName { simple_function_non_max_supression_internal, "NonMaxSuppressionIEInternal"}, + nGraphFunctionWithName { simple_function_non_max_suppression_internal, "NonMaxSuppressionIEInternal"}, nGraphFunctionWithName { simple_function_matrix_nms_internal, "NmsStaticShapeIE_MatrixNms"}, nGraphFunctionWithName { simple_function_multiclass_nms_internal, "MulticlassNmsIEInternal"}, }; diff --git a/src/plugins/intel_cpu/thirdparty/ACLConfig.cmake b/src/plugins/intel_cpu/thirdparty/ACLConfig.cmake new file mode 100644 index 00000000000000..2df390711a8db9 --- /dev/null +++ b/src/plugins/intel_cpu/thirdparty/ACLConfig.cmake @@ -0,0 +1,360 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +if(ARM_COMPUTE_INCLUDE_DIR OR ARM_COMPUTE_LIB_DIR) + set(ARM_COMPUTE_INCLUDE_DIR "" CACHE PATH "Path to ARM Compute Library headers" FORCE) + + if(NOT ARM_COMPUTE_LIB_DIR) + message(FATAL_ERROR "Undefined ARM_COMPUTE_LIB_DIR input variable should be set manually") + elseif(NOT TARGET arm_compute::arm_compute) + if(WIN32 OR APPLE) + if(OV_GENERATOR_MULTI_CONFIG) + set(extra_args PATH_SUFFIXES ${CMAKE_CONFIGURATION_TYPES}) + else() + set(extra_args PATH_SUFFIXES ${CMAKE_BUILD_TYPE}) + endif() + endif() + + find_library(ARM_COMPUTE_LIB + NAMES arm_compute-static + PATHS ${ARM_COMPUTE_LIB_DIR} + ${extra_args}) + unset(extra_args) + + message(STATUS "Found arm_compute-static: ${ARM_COMPUTE_LIB}") + + add_library(arm_compute::arm_compute STATIC IMPORTED GLOBAL) + set_target_properties(arm_compute::arm_compute PROPERTIES + IMPORTED_LOCATION ${ARM_COMPUTE_LIB}) + + add_library(arm_compute::half INTERFACE IMPORTED GLOBAL) + + if(ARM_COMPUTE_INCLUDE_DIR) + set_target_properties(arm_compute::arm_compute arm_compute::half PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${ARM_COMPUTE_INCLUDE_DIR}) + endif() + endif() + + # for oneDNN integration + + set(ACL_FOUND ON) + set(ACL_LIBRARIES arm_compute::arm_compute arm_compute::half) + + foreach(acl_library IN LISTS ACL_LIBRARIES) + list(APPEND ACL_INCLUDE_DIRS + $) + endforeach() +elseif(ENABLE_ARM_COMPUTE_CMAKE) + set(ARM_COMPUTE_SOURCE_DIR "${intel_cpu_thirdparty_SOURCE_DIR}/ComputeLibrary") + set(ARM_COMPUTE_BINARY_DIR "${intel_cpu_thirdparty_BINARY_DIR}/ComputeLibrary") + + function(ov_build_compute_library) + # build ComputeLibrary as static libraries + set(BUILD_SHARED_LIBS OFF) + # ComputeLibrary settings + set(ARM_COMPUTE_GRAPH_ENABLED OFF CACHE BOOL "" FORCE) + # disable OpenMP + set(OPENMP OFF CACHE BOOL "" FORCE) + # and use std::threads instead + set(CPPTHREADS OFF CACHE BOOL "" FORCE) + # SVE is not supported on Darwin + if(CMAKE_HOST_APPLE) + set(ENABLE_SVE OFF CACHE BOOL "" FORCE) + set(ARM_COMPUTE_ENABLE_SVE OFF CACHE BOOL "" FORCE) + set(ARM_COMPUTE_ENABLE_SVEF32MM OFF CACHE BOOL "" FORCE) + endif() + + add_subdirectory(${ARM_COMPUTE_SOURCE_DIR} ${ARM_COMPUTE_BINARY_DIR} EXCLUDE_FROM_ALL) + + add_library(ArmCompute::Half INTERFACE IMPORTED GLOBAL) + set_target_properties(ArmCompute::Half PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${ARM_COMPUTE_SOURCE_DIR}/include") + endfunction() + + ov_build_compute_library() + + # Helpers for oneDNN intergation + + set(ACL_FOUND ON) + set(ACL_LIBRARIES arm_compute_core ArmCompute::Half) + + foreach(acl_library IN LISTS ACL_LIBRARIES) + list(APPEND ACL_INCLUDE_DIRS + $) + endforeach() + + # required by oneDNN to attempt to parse ACL version + set(ENV{ACL_ROOT_DIR} "${ARM_COMPUTE_SOURCE_DIR}") +elseif(NOT TARGET arm_compute::arm_compute) + set(ARM_COMPUTE_SOURCE_DIR "${intel_cpu_thirdparty_SOURCE_DIR}/ComputeLibrary") + set(ARM_COMPUTE_BINARY_DIR "${intel_cpu_thirdparty_BINARY_DIR}/ComputeLibrary") + + message(STATUS "Configure to build ${ARM_COMPUTE_SOURCE_DIR}") + + if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.18) + list(APPEND find_scons_extra_options REQUIRED) + endif() + + find_host_program(SCONS scons ${find_scons_extra_options}) + + if(NOT SCONS) + message(FATAL_ERROR "Scons tool is not found!") + endif() + + file(GLOB_RECURSE SOURCES + ${ARM_COMPUTE_SOURCE_DIR}/*.cpp + ${ARM_COMPUTE_SOURCE_DIR}/*.hpp + ${ARM_COMPUTE_SOURCE_DIR}/*.h + ) + + set(extra_cxx_flags "${CMAKE_CXX_FLAGS} -Wno-undef") + if(MSVC64) + # clang-cl does not recognize /MP option + string(REPLACE "/MP " "" extra_cxx_flags "${extra_cxx_flags}") + elseif(CMAKE_POSITION_INDEPENDENT_CODE) + # -fPIC is not applicable for clang-cl + set(extra_cxx_flags "${extra_cxx_flags} -fPIC") + endif() + + set(ARM_COMPUTE_OPTIONS + neon=1 + opencl=0 + openmp=0 + cppthreads=1 + examples=0 + Werror=0 + gemm_tuner=0 + reference_openmp=0 + validation_tests=0 + benchmark_tests=0 + # TODO: check this for Apple Silicon + # multi_isa=1 + # TODO: use CC for ARM compute library to minimize binary size + # build_config= + # TODO: use data_type_support to disable useless kernels + data_layout_support=all + arch=${ARM_COMPUTE_TARGET_ARCH} + ) + + if(NOT MSVC64) + list(APPEND ARM_COMPUTE_OPTIONS + build_dir=${ARM_COMPUTE_BINARY_DIR} + install_dir=${ARM_COMPUTE_BINARY_DIR}/install) + endif() + + if(ARM_COMPUTE_SCONS_JOBS) + list(APPEND ARM_COMPUTE_OPTIONS --jobs=${ARM_COMPUTE_SCONS_JOBS}) + endif() + + set(ARM_COMPUTE_DEBUG_OPTIONS + debug=1 + asserts=1 + logging=1) + + # cmake older 3.20 does not support generator expressions in add_custom_command + # https://cmake.org/cmake/help/latest/command/add_custom_command.html#examples-generating-files + if(OV_GENERATOR_MULTI_CONFIG AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.20) + foreach(option IN LISTS ARM_COMPUTE_DEBUG_OPTIONS) + list(APPEND ARM_COMPUTE_OPTIONS $<$:${option}> + $<$:${option}>) + endforeach() + foreach(config IN LISTS CMAKE_CONFIGURATION_TYPES) + string(TOUPPER "${config}" config_upper) + set(flags ${CMAKE_CXX_FLAGS_${config_upper}}) + set(extra_cxx_flags "${extra_cxx_flags} $<$:${flags}>") + endforeach() + elseif(CMAKE_BUILD_TYPE MATCHES "^(Debug|RelWithDebInfo)$") + list(APPEND ARM_COMPUTE_OPTIONS ${ARM_COMPUTE_DEBUG_OPTIONS}) + endif() + + if(EMSCRIPTEN OR LINUX) + list(APPEND ARM_COMPUTE_OPTIONS os=linux) + elseif(ANDROID) + list(APPEND ARM_COMPUTE_OPTIONS os=android) + elseif(APPLE) + list(APPEND ARM_COMPUTE_OPTIONS os=macos) + elseif(WIN32) + list(APPEND ARM_COMPUTE_OPTIONS os=windows) + endif() + + if(CMAKE_CROSSCOMPILING) + list(APPEND ARM_COMPUTE_OPTIONS build=cross_compile) + else() + list(APPEND ARM_COMPUTE_OPTIONS build=native) + endif() + + if (CMAKE_CXX_COMPILER_LAUNCHER) + list(APPEND ARM_COMPUTE_OPTIONS compiler_cache=${CMAKE_CXX_COMPILER_LAUNCHER}) + endif() + + # used to build for yocto + if(ARM_COMPUTE_TOOLCHAIN_PREFIX) + list(APPEND ARM_COMPUTE_OPTIONS toolchain_prefix=${ARM_COMPUTE_TOOLCHAIN_PREFIX}) + endif() + + if(ANDROID) + if(ANDROID_PLATFORM_LEVEL LESS 18) + message(FATAL_ERROR "ARM compute library requires Android API 18 level and higher" + "Please, speficy -DANDROID_PLATFORM=android-18 at least") + endif() + + if(ANDROID_NDK_REVISION LESS "23.0") + list(APPEND ARM_COMPUTE_OPTIONS toolchain_prefix="${ANDROID_TOOLCHAIN_PREFIX}") + else() + string(REGEX REPLACE "/bin/[^/]+-" "/bin/llvm-" ANDROID_TOOLCHAIN_PREFIX_FIXED "${ANDROID_TOOLCHAIN_PREFIX}") + message(STATUS "SCONS: using ANDROID_TOOLCHAIN_PREFIX=${ANDROID_TOOLCHAIN_PREFIX_FIXED}") + list(APPEND ARM_COMPUTE_OPTIONS toolchain_prefix="${ANDROID_TOOLCHAIN_PREFIX_FIXED}") + endif() + + list(APPEND ARM_COMPUTE_OPTIONS + compiler_prefix="${ANDROID_TOOLCHAIN_ROOT}/bin/") + + set(extra_flags "${extra_flags} --target=${ANDROID_LLVM_TRIPLE}") + set(extra_flags "${extra_flags} --gcc-toolchain=${ANDROID_TOOLCHAIN_ROOT}") + set(extra_flags "${extra_flags} --sysroot=${CMAKE_SYSROOT}") + + set(extra_link_flags "${extra_link_flags} ${extra_flags}") + set(extra_cxx_flags "${extra_cxx_flags} ${extra_flags}") + elseif(LINUX) + # we need to bypass this information in case of custom compiler is passed + # to cmake call. Such compiler and compiler prefix need to be passed to scons + get_filename_component(cxx_compiler "${CMAKE_CXX_COMPILER}" NAME) + get_filename_component(c_compiler "${CMAKE_C_COMPILER}" NAME) + get_filename_component(compiler_prefix "${CMAKE_CXX_COMPILER}" DIRECTORY) + + set(cmake_build_env + CC=${c_compiler} + CXX=${cxx_compiler}) + list(APPEND ARM_COMPUTE_OPTIONS compiler_prefix="${compiler_prefix}/") + elseif(EMSCRIPTEN) + set(cmake_build_env + CC=emcc + CXX=em++ + RANLIB=emranlib + AR=emar) + # EMSDK: Passing any of -msse, -msse2, -msse3, -mssse3, -msse4.1, -msse4.2, + # -msse4, -mavx, -mfpu=neon flags also requires passing -msimd128 (or -mrelaxed-simd)! + set(extra_cxx_flags "${extra_cxx_flags} -msimd128") + # clang-16: error: argument unused during compilation: '-mthumb' [-Werror,-Wunused-command-line-argument] + # clang-16: error: argument unused during compilation: '-mfloat-abi=hard' [-Werror,-Wunused-command-line-argument] + set(extra_cxx_flags "${extra_cxx_flags} \ + -Wno-unused-command-line-argument \ + -Wno-unknown-warning-option \ + -Wno-unused-function \ + -Wno-unused-but-set-variable") + + get_filename_component(toolchain_prefix "${CMAKE_CXX_COMPILER}" DIRECTORY) + list(APPEND ARM_COMPUTE_OPTIONS toolchain_prefix="${toolchain_prefix}/") + elseif(APPLE) + if(CMAKE_OSX_DEPLOYMENT_TARGET) + set(extra_cxx_flags "${extra_cxx_flags} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") + set(minos_added ON) + endif() + + if(HOST_X86_64) + if(NOT minos_added) + message(FATAL_ERROR "Please, specify either env MACOSX_DEPLOYMENT_TARGET or cmake CMAKE_OSX_DEPLOYMENT_TARGET variables") + endif() + set(extra_cxx_flags "${extra_cxx_flags} --sysroot ${CMAKE_OSX_SYSROOT}") + endif() + + set(extra_cxx_flags "${extra_cxx_flags} -Wno-error=return-stack-address") + get_filename_component(compiler_prefix "${CMAKE_CXX_COMPILER}" DIRECTORY) + list(APPEND ARM_COMPUTE_OPTIONS compiler_prefix="${compiler_prefix}/") + + if(CMAKE_OSX_ARCHITECTURES) + foreach(arch IN LISTS CMAKE_OSX_ARCHITECTURES) + set(extra_cxx_flags "${extra_cxx_flags} -arch ${arch}") + endforeach() + endif() + elseif(MSVC64) + # required for clang-cl compiler + if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.20) + set(extra_cxx_flags "${extra_cxx_flags} $,/MD,/MDd>") + else() + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(extra_cxx_flags "${extra_cxx_flags} /MDd") + else() + set(extra_cxx_flags "${extra_cxx_flags} /MD") + endif() + endif() + endif() + + if(ENABLE_LTO) + if((CMAKE_COMPILER_IS_GNUCXX OR OV_COMPILER_IS_CLANG) AND NOT CMAKE_CROSSCOMPILING) + set(extra_cxx_flags "${extra_cxx_flags} -flto=thin") + set(extra_link_flags "${extra_link_flags} -flto=thin") + endif() + endif() + + if(SUGGEST_OVERRIDE_SUPPORTED) + set(extra_cxx_flags "${extra_cxx_flags} -Wno-suggest-override") + endif() + + if(extra_link_flags) + list(APPEND ARM_COMPUTE_OPTIONS extra_link_flags=${extra_link_flags}) + endif() + if(extra_cxx_flags) + list(APPEND ARM_COMPUTE_OPTIONS extra_cxx_flags=${extra_cxx_flags}) + endif() + + if(NOT CMAKE_VERBOSE_MAKEFILE) + list(APPEND ARM_COMPUTE_OPTIONS --silent) + endif() + + if(MSVC64) + set(arm_compute build/arm_compute-static.lib) + set(arm_compute_full_path "${ARM_COMPUTE_SOURCE_DIR}/${arm_compute}") + else() + set(arm_compute ${ARM_COMPUTE_BINARY_DIR}/libarm_compute-static.a) + set(arm_compute_full_path "${arm_compute}") + endif() + + add_custom_command( + OUTPUT + ${arm_compute_full_path} + COMMAND ${CMAKE_COMMAND} -E env ${cmake_build_env} + ${SCONS} ${ARM_COMPUTE_OPTIONS} + ${arm_compute} + WORKING_DIRECTORY ${ARM_COMPUTE_SOURCE_DIR} + COMMENT "Build Arm Compute Library" + DEPENDS ${SOURCES} + ${CMAKE_CURRENT_LIST_FILE} + ${ARM_COMPUTE_SOURCE_DIR}/SConscript + ${ARM_COMPUTE_SOURCE_DIR}/SConstruct) + + # Compute Library uses cppthreads=1 + # if one day will rely on TBB only, we can omit this dependency + find_package(Threads REQUIRED) + + # Import targets + + add_custom_target(arm_compute_static_libs DEPENDS ${arm_compute_full_path}) + + add_library(arm_compute::arm_compute STATIC IMPORTED GLOBAL) + set_target_properties(arm_compute::arm_compute PROPERTIES + IMPORTED_LOCATION ${arm_compute_full_path} + INTERFACE_INCLUDE_DIRECTORIES ${ARM_COMPUTE_SOURCE_DIR} + INTERFACE_LINK_LIBRARIES Threads::Threads + OSX_ARCHITECTURES arm64) + add_dependencies(arm_compute::arm_compute arm_compute_static_libs) + + add_library(arm_compute::half INTERFACE IMPORTED GLOBAL) + set_target_properties(arm_compute::half PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${ARM_COMPUTE_SOURCE_DIR}/include + OSX_ARCHITECTURES arm64) + + # Helpers for oneDNN intergation + + set(ACL_FOUND ON) + set(ACL_LIBRARIES arm_compute::arm_compute arm_compute::half) + + foreach(acl_library IN LISTS ACL_LIBRARIES) + list(APPEND ACL_INCLUDE_DIRS + $) + endforeach() + + # required by oneDNN to attempt to parse ACL version + set(ENV{ACL_ROOT_DIR} "${ARM_COMPUTE_SOURCE_DIR}") +endif() diff --git a/src/plugins/intel_cpu/thirdparty/CMakeLists.txt b/src/plugins/intel_cpu/thirdparty/CMakeLists.txt index 458bbdffa4c52a..8c645814fa32d0 100644 --- a/src/plugins/intel_cpu/thirdparty/CMakeLists.txt +++ b/src/plugins/intel_cpu/thirdparty/CMakeLists.txt @@ -15,7 +15,7 @@ if(ENABLE_LTO) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON) endif() -function(ie_add_onednn) +function(ov_add_onednn) set(DNNL_ENABLE_JIT_PROFILING ${BUILD_SHARED_LIBS} CACHE BOOL "" FORCE) if(BUILD_SHARED_LIBS AND ENABLE_PROFILING_ITT) set(DNNL_ENABLE_ITT_TASKS ON CACHE BOOL "" FORCE) @@ -137,16 +137,26 @@ function(ie_add_onednn) endif() # to find our FindACL.cmake - list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}") + list(APPEND CMAKE_MODULE_PATH "${intel_cpu_thirdparty_SOURCE_DIR}") add_subdirectory(onednn EXCLUDE_FROM_ALL) + # install static libraries ov_install_static_lib(dnnl cpu) - if(ARM OR AARCH64) - ov_install_static_lib(arm_compute_core cpu) + + if(DNNL_USE_ACL AND NOT BUILD_SHARED_LIBS) + # use ACLConfig.cmake in OpenVINOConfig.cmake in case of static build + # we cannot use 'ov_install_static_lib' for imported targets, + # but for this we need to install library files + install(FILES $ + DESTINATION ${OV_CPACK_ARCHIVEDIR} + COMPONENT cpu) + install(FILES "${intel_cpu_thirdparty_SOURCE_DIR}/ACLConfig.cmake" + DESTINATION ${OV_CPACK_OPENVINO_CMAKEDIR} + COMPONENT core_dev) endif() endfunction() if(ENABLE_INTEL_CPU) - ie_add_onednn() + ov_add_onednn() endif() diff --git a/src/plugins/intel_cpu/thirdparty/FindACL.cmake b/src/plugins/intel_cpu/thirdparty/FindACL.cmake index 219871e8940738..057dcee3f5d72d 100644 --- a/src/plugins/intel_cpu/thirdparty/FindACL.cmake +++ b/src/plugins/intel_cpu/thirdparty/FindACL.cmake @@ -2,341 +2,4 @@ # SPDX-License-Identifier: Apache-2.0 # -if(ARM_COMPUTE_INCLUDE_DIR OR ARM_COMPUTE_LIB_DIR) - if (NOT ARM_COMPUTE_INCLUDE_DIR) - message(FATAL_ERROR "Undefined ARM_COMPUTE_INCLUDE_DIR input variable should be set manually") - else() - message(STATUS "Using ${ARM_COMPUTE_INCLUDE_DIR} to include arm compute library headers") - endif() - - if (NOT ARM_COMPUTE_LIB_DIR) - message(FATAL_ERROR "Undefined ARM_COMPUTE_LIB_DIR input variable should be set manually") - else() - find_library( - ARM_COMPUTE_LIB - arm_compute-static - PATHS ${ARM_COMPUTE_LIB_DIR} - ) - message(STATUS "Found arm_compute-static: ${ARM_COMPUTE_LIB}") - add_library(arm_compute STATIC IMPORTED GLOBAL) - set_target_properties(arm_compute PROPERTIES - IMPORTED_LOCATION ${ARM_COMPUTE_LIB} - INTERFACE_INCLUDE_DIRECTORIES ${ARM_COMPUTE_INCLUDE_DIR}) - endif() - - add_library(half INTERFACE IMPORTED GLOBAL) - set_target_properties(half PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${ARM_COMPUTE_INCLUDE_DIR}) -elseif(ENABLE_ARM_COMPUTE_CMAKE) - set(ARM_COMPUTE_SOURCE_DIR "${intel_cpu_thirdparty_SOURCE_DIR}/ComputeLibrary") - set(ARM_COMPUTE_BINARY_DIR "${intel_cpu_thirdparty_BINARY_DIR}/ComputeLibrary") - - function(ov_build_compute_library) - # build ComputeLibrary as static libraries - set(BUILD_SHARED_LIBS OFF) - # ComputeLibrary settings - set(ARM_COMPUTE_GRAPH_ENABLED OFF CACHE BOOL "" FORCE) - # disable OpenMP - set(OPENMP OFF CACHE BOOL "" FORCE) - # and use std::threads instead - set(CPPTHREADS OFF CACHE BOOL "" FORCE) - # SVE is not supported on Darwin - if(CMAKE_HOST_APPLE) - set(ENABLE_SVE OFF CACHE BOOL "" FORCE) - set(ARM_COMPUTE_ENABLE_SVE OFF CACHE BOOL "" FORCE) - set(ARM_COMPUTE_ENABLE_SVEF32MM OFF CACHE BOOL "" FORCE) - endif() - - add_subdirectory(${ARM_COMPUTE_SOURCE_DIR} ${ARM_COMPUTE_BINARY_DIR} EXCLUDE_FROM_ALL) - - add_library(ArmCompute::Half INTERFACE IMPORTED GLOBAL) - set_target_properties(ArmCompute::Half PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${ARM_COMPUTE_SOURCE_DIR}/include") - endfunction() - - ov_build_compute_library() - - # Helpers for oneDNN intergation - - set(ACL_FOUND ON) - set(ACL_LIBRARIES arm_compute_core ArmCompute::Half) - - foreach(acl_library IN LISTS ACL_LIBRARIES) - list(APPEND ACL_INCLUDE_DIRS - $) - endforeach() - - # required by oneDNN to attempt to parse ACL version - set(ENV{ACL_ROOT_DIR} "${ARM_COMPUTE_SOURCE_DIR}") -else() - set(ARM_COMPUTE_SOURCE_DIR "${intel_cpu_thirdparty_SOURCE_DIR}/ComputeLibrary") - set(ARM_COMPUTE_BINARY_DIR "${intel_cpu_thirdparty_BINARY_DIR}/ComputeLibrary") - - message(STATUS "Configure to build ${ARM_COMPUTE_SOURCE_DIR}") - - if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.18) - list(APPEND find_scons_extra_options REQUIRED) - endif() - - find_host_program(SCONS scons ${find_scons_extra_options}) - - if(NOT SCONS) - message(FATAL_ERROR "Scons tool is not found!") - endif() - - file(GLOB_RECURSE SOURCES - ${ARM_COMPUTE_SOURCE_DIR}/*.cpp - ${ARM_COMPUTE_SOURCE_DIR}/*.hpp - ${ARM_COMPUTE_SOURCE_DIR}/*.h - ) - - set(extra_cxx_flags "${CMAKE_CXX_FLAGS} -Wno-undef") - if(MSVC64) - # clang-cl does not recognize /MP option - string(REPLACE "/MP " "" extra_cxx_flags "${extra_cxx_flags}") - elseif(CMAKE_POSITION_INDEPENDENT_CODE) - # -fPIC is not applicable for clang-cl - set(extra_cxx_flags "${extra_cxx_flags} -fPIC") - endif() - - set(ARM_COMPUTE_OPTIONS - neon=1 - opencl=0 - openmp=0 - cppthreads=1 - examples=0 - Werror=0 - gemm_tuner=0 - reference_openmp=0 - validation_tests=0 - benchmark_tests=0 - # TODO: check this for Apple Silicon - # multi_isa=1 - # TODO: use CC for ARM compute library to minimize binary size - # build_config= - # TODO: use data_type_support to disable useless kernels - data_layout_support=all - arch=${ARM_COMPUTE_TARGET_ARCH} - ) - - if(NOT MSVC64) - list(APPEND ARM_COMPUTE_OPTIONS - build_dir=${ARM_COMPUTE_BINARY_DIR} - install_dir=${ARM_COMPUTE_BINARY_DIR}/install) - endif() - - if(ARM_COMPUTE_SCONS_JOBS) - list(APPEND ARM_COMPUTE_OPTIONS --jobs=${ARM_COMPUTE_SCONS_JOBS}) - endif() - - set(ARM_COMPUTE_DEBUG_OPTIONS - debug=1 - asserts=1 - logging=1) - - # cmake older 3.20 does not support generator expressions in add_custom_command - # https://cmake.org/cmake/help/latest/command/add_custom_command.html#examples-generating-files - if(OV_GENERATOR_MULTI_CONFIG AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.20) - foreach(option IN LISTS ARM_COMPUTE_DEBUG_OPTIONS) - list(APPEND ARM_COMPUTE_OPTIONS $<$:${option}> - $<$:${option}>) - endforeach() - foreach(config IN LISTS CMAKE_CONFIGURATION_TYPES) - string(TOUPPER "${config}" config_upper) - set(flags ${CMAKE_CXX_FLAGS_${config_upper}}) - set(extra_cxx_flags "${extra_cxx_flags} $<$:${flags}>") - endforeach() - elseif(CMAKE_BUILD_TYPE MATCHES "^(Debug|RelWithDebInfo)$") - list(APPEND ARM_COMPUTE_OPTIONS ${ARM_COMPUTE_DEBUG_OPTIONS}) - endif() - - if(EMSCRIPTEN OR LINUX) - list(APPEND ARM_COMPUTE_OPTIONS os=linux) - elseif(ANDROID) - list(APPEND ARM_COMPUTE_OPTIONS os=android) - elseif(APPLE) - list(APPEND ARM_COMPUTE_OPTIONS os=macos) - elseif(WIN32) - list(APPEND ARM_COMPUTE_OPTIONS os=windows) - endif() - - if(CMAKE_CROSSCOMPILING) - list(APPEND ARM_COMPUTE_OPTIONS build=cross_compile) - else() - list(APPEND ARM_COMPUTE_OPTIONS build=native) - endif() - - if (CMAKE_CXX_COMPILER_LAUNCHER) - list(APPEND ARM_COMPUTE_OPTIONS compiler_cache=${CMAKE_CXX_COMPILER_LAUNCHER}) - endif() - - # used to build for yocto - if(ARM_COMPUTE_TOOLCHAIN_PREFIX) - list(APPEND ARM_COMPUTE_OPTIONS toolchain_prefix=${ARM_COMPUTE_TOOLCHAIN_PREFIX}) - endif() - - if(ANDROID) - if(ANDROID_PLATFORM_LEVEL LESS 18) - message(FATAL_ERROR "ARM compute library requires Android API 18 level and higher" - "Please, speficy -DANDROID_PLATFORM=android-18 at least") - endif() - - if(ANDROID_NDK_REVISION LESS "23.0") - list(APPEND ARM_COMPUTE_OPTIONS toolchain_prefix="${ANDROID_TOOLCHAIN_PREFIX}") - else() - string(REGEX REPLACE "/bin/[^/]+-" "/bin/llvm-" ANDROID_TOOLCHAIN_PREFIX_FIXED "${ANDROID_TOOLCHAIN_PREFIX}") - message(STATUS "SCONS: using ANDROID_TOOLCHAIN_PREFIX=${ANDROID_TOOLCHAIN_PREFIX_FIXED}") - list(APPEND ARM_COMPUTE_OPTIONS toolchain_prefix="${ANDROID_TOOLCHAIN_PREFIX_FIXED}") - endif() - - list(APPEND ARM_COMPUTE_OPTIONS - compiler_prefix="${ANDROID_TOOLCHAIN_ROOT}/bin/") - - set(extra_flags "${extra_flags} --target=${ANDROID_LLVM_TRIPLE}") - set(extra_flags "${extra_flags} --gcc-toolchain=${ANDROID_TOOLCHAIN_ROOT}") - set(extra_flags "${extra_flags} --sysroot=${CMAKE_SYSROOT}") - - set(extra_link_flags "${extra_link_flags} ${extra_flags}") - set(extra_cxx_flags "${extra_cxx_flags} ${extra_flags}") - elseif(LINUX) - # we need to bypass this information in case of custom compiler is passed - # to cmake call. Such compiler and compiler prefix need to be passed to scons - get_filename_component(cxx_compiler "${CMAKE_CXX_COMPILER}" NAME) - get_filename_component(c_compiler "${CMAKE_C_COMPILER}" NAME) - get_filename_component(compiler_prefix "${CMAKE_CXX_COMPILER}" DIRECTORY) - - set(cmake_build_env - CC=${c_compiler} - CXX=${cxx_compiler}) - list(APPEND ARM_COMPUTE_OPTIONS compiler_prefix="${compiler_prefix}/") - elseif(EMSCRIPTEN) - set(cmake_build_env - CC=emcc - CXX=em++ - RANLIB=emranlib - AR=emar) - # EMSDK: Passing any of -msse, -msse2, -msse3, -mssse3, -msse4.1, -msse4.2, - # -msse4, -mavx, -mfpu=neon flags also requires passing -msimd128 (or -mrelaxed-simd)! - set(extra_cxx_flags "${extra_cxx_flags} -msimd128") - # clang-16: error: argument unused during compilation: '-mthumb' [-Werror,-Wunused-command-line-argument] - # clang-16: error: argument unused during compilation: '-mfloat-abi=hard' [-Werror,-Wunused-command-line-argument] - set(extra_cxx_flags "${extra_cxx_flags} \ - -Wno-unused-command-line-argument \ - -Wno-unknown-warning-option \ - -Wno-unused-function \ - -Wno-unused-but-set-variable") - - get_filename_component(toolchain_prefix "${CMAKE_CXX_COMPILER}" DIRECTORY) - list(APPEND ARM_COMPUTE_OPTIONS toolchain_prefix="${toolchain_prefix}/") - elseif(APPLE) - if(CMAKE_OSX_DEPLOYMENT_TARGET) - set(extra_cxx_flags "${extra_cxx_flags} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") - set(minos_added ON) - endif() - - if(HOST_X86_64) - if(NOT minos_added) - message(FATAL_ERROR "Please, specify either env MACOSX_DEPLOYMENT_TARGET or cmake CMAKE_OSX_DEPLOYMENT_TARGET variables") - endif() - set(extra_cxx_flags "${extra_cxx_flags} --sysroot ${CMAKE_OSX_SYSROOT}") - endif() - - set(extra_cxx_flags "${extra_cxx_flags} -Wno-error=return-stack-address") - get_filename_component(compiler_prefix "${CMAKE_CXX_COMPILER}" DIRECTORY) - list(APPEND ARM_COMPUTE_OPTIONS compiler_prefix="${compiler_prefix}/") - - if(CMAKE_OSX_ARCHITECTURES) - foreach(arch IN LISTS CMAKE_OSX_ARCHITECTURES) - set(extra_cxx_flags "${extra_cxx_flags} -arch ${arch}") - endforeach() - endif() - elseif(MSVC64) - # required for clang-cl compiler - if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.20) - set(extra_cxx_flags "${extra_cxx_flags} $,/MD,/MDd>") - else() - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(extra_cxx_flags "${extra_cxx_flags} /MDd") - else() - set(extra_cxx_flags "${extra_cxx_flags} /MD") - endif() - endif() - endif() - - if(ENABLE_LTO) - if((CMAKE_COMPILER_IS_GNUCXX OR OV_COMPILER_IS_CLANG) AND NOT CMAKE_CROSSCOMPILING) - set(extra_cxx_flags "${extra_cxx_flags} -flto=thin") - set(extra_link_flags "${extra_link_flags} -flto=thin") - endif() - endif() - - if(SUGGEST_OVERRIDE_SUPPORTED) - set(extra_cxx_flags "${extra_cxx_flags} -Wno-suggest-override") - endif() - - if(extra_link_flags) - list(APPEND ARM_COMPUTE_OPTIONS extra_link_flags=${extra_link_flags}) - endif() - if(extra_cxx_flags) - list(APPEND ARM_COMPUTE_OPTIONS extra_cxx_flags=${extra_cxx_flags}) - endif() - - if(NOT CMAKE_VERBOSE_MAKEFILE) - list(APPEND ARM_COMPUTE_OPTIONS --silent) - endif() - - if(MSVC64) - set(arm_compute build/arm_compute-static.lib) - set(arm_compute_full_path "${ARM_COMPUTE_SOURCE_DIR}/${arm_compute}") - else() - set(arm_compute ${ARM_COMPUTE_BINARY_DIR}/libarm_compute-static.a) - set(arm_compute_full_path "${arm_compute}") - endif() - - add_custom_command( - OUTPUT - ${arm_compute_full_path} - COMMAND ${CMAKE_COMMAND} -E env ${cmake_build_env} - ${SCONS} ${ARM_COMPUTE_OPTIONS} - ${arm_compute} - WORKING_DIRECTORY ${ARM_COMPUTE_SOURCE_DIR} - COMMENT "Build Arm Compute Library" - DEPENDS ${SOURCES} - ${CMAKE_CURRENT_LIST_FILE} - ${ARM_COMPUTE_SOURCE_DIR}/SConscript - ${ARM_COMPUTE_SOURCE_DIR}/SConstruct) - - # Compute Library uses cppthreads=1 - # if one day will rely on TBB only, we can omit this dependency - find_package(Threads REQUIRED) - - # Import targets - - add_custom_target(arm_compute_static_libs DEPENDS ${arm_compute_full_path}) - - add_library(arm_compute::arm_compute STATIC IMPORTED GLOBAL) - set_target_properties(arm_compute::arm_compute PROPERTIES - IMPORTED_LOCATION ${arm_compute_full_path} - INTERFACE_INCLUDE_DIRECTORIES ${ARM_COMPUTE_SOURCE_DIR} - INTERFACE_LINK_LIBRARIES Threads::Threads - OSX_ARCHITECTURES arm64) - add_dependencies(arm_compute::arm_compute arm_compute_static_libs) - - add_library(arm_compute::half INTERFACE IMPORTED GLOBAL) - set_target_properties(arm_compute::half PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${ARM_COMPUTE_SOURCE_DIR}/include - OSX_ARCHITECTURES arm64) - - # Helpers for oneDNN intergation - - set(ACL_FOUND ON) - set(ACL_LIBRARIES arm_compute::arm_compute arm_compute::half) - - foreach(acl_library IN LISTS ACL_LIBRARIES) - list(APPEND ACL_INCLUDE_DIRS - $) - endforeach() - - # required by oneDNN to attempt to parse ACL version - set(ENV{ACL_ROOT_DIR} "${ARM_COMPUTE_SOURCE_DIR}") -endif() +include(${CMAKE_CURRENT_LIST_DIR}/ACLConfig.cmake) diff --git a/src/plugins/intel_gna/CMakeLists.txt b/src/plugins/intel_gna/CMakeLists.txt index 374bb23c650dc3..08b075e66ca287 100644 --- a/src/plugins/intel_gna/CMakeLists.txt +++ b/src/plugins/intel_gna/CMakeLists.txt @@ -44,6 +44,7 @@ file(GLOB_RECURSE HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp) find_package(libGNA REQUIRED + NO_MODULE PATHS "${CMAKE_CURRENT_SOURCE_DIR}/cmake" NO_DEFAULT_PATH) diff --git a/src/plugins/intel_gna/cmake/libGNAConfig.cmake b/src/plugins/intel_gna/cmake/libGNAConfig.cmake index 0b53d5be514eeb..299f4d2d7c4d16 100644 --- a/src/plugins/intel_gna/cmake/libGNAConfig.cmake +++ b/src/plugins/intel_gna/cmake/libGNAConfig.cmake @@ -19,25 +19,25 @@ # # The example usage: # -# find_package(libGNA COMPONENTS API KERNEL) +# find_package(libGNA NO_MODULE COMPONENTS API KERNEL) # -set(libGNA_FOUND TRUE) +set(libGNA_FOUND ON) set(GNA_KERNEL_LIB_NAME gna CACHE STRING "" FORCE) -if (NOT libGNA_FIND_COMPONENTS) +if(NOT libGNA_FIND_COMPONENTS) set(libGNA_FIND_COMPONENTS "API;KERNEL") endif() foreach (_gna_component ${libGNA_FIND_COMPONENTS}) - set(libGNA_${_gna_component}_FOUND FALSE) - set(libGNA_FIND_REQUIRED_${_gna_component} TRUE) + set(libGNA_${_gna_component}_FOUND OFF) + set(libGNA_FIND_REQUIRED_${_gna_component} ON) endforeach() set(libGNA_LIBRARIES_BASE_PATH ${GNA_PATH} CACHE STRING "" FORCE) -if(libGNA_FIND_REQUIRED_KERNEL) +if(libGNA_FIND_REQUIRED_KERNEL AND NOT TARGET libGNA::KERNEL) find_library(GNA_KERNEL_LIBRARY ${GNA_KERNEL_LIB_NAME} HINTS ${libGNA_LIBRARIES_BASE_PATH} NO_CMAKE_FIND_ROOT_PATH) @@ -55,26 +55,34 @@ if(libGNA_FIND_REQUIRED_KERNEL) IMPORTED_LOCATION_RELEASE "${GNA_KERNEL_LIBRARY}" INTERFACE_LINK_OPTIONS "-Wl,-rpath-link,${libGNA_LIBRARIES_BASE_PATH}") endif() - set(libGNA_KERNEL_FOUND TRUE) else() message(SEND_ERROR "GNA KERNEL library (${GNA_KERNEL_LIB_NAME}) was not found in ${libGNA_LIBRARIES_BASE_PATH}") endif() endif() -if(libGNA_FIND_REQUIRED_API) +if(libGNA_FIND_REQUIRED_API AND NOT TARGET libGNA::API) find_path(libGNA_INCLUDE_DIRS gna2-api.h PATHS "${GNA_EXT_DIR}/include" NO_CMAKE_FIND_ROOT_PATH) if(libGNA_INCLUDE_DIRS) add_library(libGNA::API INTERFACE IMPORTED) set_target_properties(libGNA::API PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${libGNA_INCLUDE_DIRS}") - set(libGNA_API_FOUND TRUE) else() message(SEND_ERROR "GNA API headers (gna2-api.h) was not found in ${GNA_EXT_DIR}/include") endif() endif() -add_library(libGNA INTERFACE IMPORTED) -foreach(_lib_name IN LISTS libGNA_FIND_COMPONENTS) - set_property(TARGET libGNA APPEND PROPERTY INTERFACE_LINK_LIBRARIES libGNA::${_lib_name}) -endforeach(_lib_name) +if(TARGET libGNA::KERNEL) + set(libGNA_KERNEL_FOUND ON) +endif() + +if(TARGET libGNA::API) + set(libGNA_API_FOUND ON) +endif() + +if(NOT TARGET libGNA) + add_library(libGNA INTERFACE IMPORTED) + foreach(_lib_name IN LISTS libGNA_FIND_COMPONENTS) + set_property(TARGET libGNA APPEND PROPERTY INTERFACE_LINK_LIBRARIES libGNA::${_lib_name}) + endforeach() +endif() diff --git a/src/plugins/intel_gna/tests/deprecated/unit/CMakeLists.txt b/src/plugins/intel_gna/tests/deprecated/unit/CMakeLists.txt index 3a4b3fc173c779..3b86fccbd70686 100644 --- a/src/plugins/intel_gna/tests/deprecated/unit/CMakeLists.txt +++ b/src/plugins/intel_gna/tests/deprecated/unit/CMakeLists.txt @@ -42,7 +42,7 @@ if (ENABLE_INTEL_GNA AND BUILD_SHARED_LIBS) list(REMOVE_ITEM TEST_SRC "${gna_stub}") add_library(libGNAStubs SHARED "${gna_stub}") - find_package(libGNA) + find_package(libGNA NO_MODULE REQUIRED) target_include_directories(libGNAStubs PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/engines/gna/") target_link_libraries(libGNAStubs PUBLIC libGNA::API gmock gtest) diff --git a/src/plugins/intel_gpu/include/intel_gpu/primitives/non_max_suppression.hpp b/src/plugins/intel_gpu/include/intel_gpu/primitives/non_max_suppression.hpp index 3841cc79692e12..62409bdc448a59 100644 --- a/src/plugins/intel_gpu/include/intel_gpu/primitives/non_max_suppression.hpp +++ b/src/plugins/intel_gpu/include/intel_gpu/primitives/non_max_suppression.hpp @@ -10,7 +10,7 @@ namespace cldnn { -/// @brief Performs non max supression of input boxes and returns indices of selected boxes. +/// @brief Performs non max suppression of input boxes and returns indices of selected boxes. /// @detail Filters out boxes that have high intersection-over-union (IOU) with previously /// selected boxes with higher score. Boxes with score higher than score_threshold are /// filtered out. This filtering happens per class. @@ -24,7 +24,7 @@ struct non_max_suppression : public primitive_base { DECLARE_OBJECT_TYPE_SERIALIZATION - /// @brief Creates non max supression primitive. + /// @brief Creates non max suppression primitive. /// @param id This primitive id. /// @param boxes_positions Id of primitive with bounding boxes. /// @param boxes_score Id of primitive with boxes scores per class. diff --git a/src/plugins/intel_gpu/src/graph/impls/cpu/non_max_suppression.cpp b/src/plugins/intel_gpu/src/graph/impls/cpu/non_max_suppression.cpp index bc6483fd9e1d3c..4a0400ed8f5f11 100644 --- a/src/plugins/intel_gpu/src/graph/impls/cpu/non_max_suppression.cpp +++ b/src/plugins/intel_gpu/src/graph/impls/cpu/non_max_suppression.cpp @@ -153,7 +153,7 @@ vector2D load_boxes(stream& stream, memory::ptr mem, bool center_p case cldnn::data_types::f32: return load_boxes_impl::type>(stream, mem, center_point); default: - throw std::runtime_error("Non max supression - unsupported boxes data type"); + throw std::runtime_error("Non max suppression - unsupported boxes data type"); } } @@ -190,7 +190,7 @@ vector3D load_scores(stream& stream, memory::ptr mem) { case cldnn::data_types::f32: return load_scores_impl::type>(stream, mem); default: - throw std::runtime_error("Non max supression - unsupported scores data type"); + throw std::runtime_error("Non max suppression - unsupported scores data type"); } } @@ -213,7 +213,7 @@ T load_scalar(stream& stream, memory::ptr mem) { case cldnn::data_types::f32: return load_scalar_impl::type>(stream, mem); default: - throw std::runtime_error("Non max supression - unsupported data type"); + throw std::runtime_error("Non max suppression - unsupported data type"); } } @@ -253,7 +253,7 @@ void store_result(stream& stream, memory::ptr mem, const std::vector::type>(stream, mem, result); break; default: - throw std::runtime_error("Non max supression - unsupported output data type"); + throw std::runtime_error("Non max suppression - unsupported output data type"); } } @@ -267,7 +267,7 @@ void store_first_output(stream& stream, memory::ptr mem, const std::vector::type>(stream, mem, result); break; default: - throw std::runtime_error("Non max supression - unsupported output data type"); + throw std::runtime_error("Non max suppression - unsupported output data type"); } } @@ -304,7 +304,7 @@ void store_second_output(stream& stream, memory::ptr mem, const std::vector::type>(stream, mem, result); break; default: - throw std::runtime_error("Non max supression - unsupported second output data type"); + throw std::runtime_error("Non max suppression - unsupported second output data type"); } } @@ -325,7 +325,7 @@ void store_third_output(stream& stream, memory::ptr mem, const std::vector::type>(stream, mem, result); break; default: - throw std::runtime_error("Non max supression - unsupported third output data type"); + throw std::runtime_error("Non max suppression - unsupported third output data type"); } } diff --git a/src/plugins/intel_gpu/src/graph/non_max_suppression.cpp b/src/plugins/intel_gpu/src/graph/non_max_suppression.cpp index d12b06d4b36d1d..e403d95c967a4b 100644 --- a/src/plugins/intel_gpu/src/graph/non_max_suppression.cpp +++ b/src/plugins/intel_gpu/src/graph/non_max_suppression.cpp @@ -76,7 +76,7 @@ std::string non_max_suppression_inst::to_string(non_max_suppression_node const& json_composite info; info.add("center point box", desc->center_point_box); - node_info->add("non max supression info", info); + node_info->add("non max suppression info", info); std::stringstream description; node_info->dump(description); diff --git a/src/plugins/intel_gpu/src/plugin/custom_layer.cpp b/src/plugins/intel_gpu/src/plugin/custom_layer.cpp index 7c0899d6c59188..ca07172dbb1737 100644 --- a/src/plugins/intel_gpu/src/plugin/custom_layer.cpp +++ b/src/plugins/intel_gpu/src/plugin/custom_layer.cpp @@ -14,6 +14,9 @@ #include #ifdef _WIN32 +# ifndef NOMINMAX +# define NOMINMAX +# endif # include #endif diff --git a/src/plugins/intel_gpu/src/plugin/ops/non_max_suppression.cpp b/src/plugins/intel_gpu/src/plugin/ops/non_max_suppression.cpp index 4691a69bfb788c..34b468b9c9ce5f 100644 --- a/src/plugins/intel_gpu/src/plugin/ops/non_max_suppression.cpp +++ b/src/plugins/intel_gpu/src/plugin/ops/non_max_suppression.cpp @@ -64,9 +64,9 @@ static void CreateNonMaxSuppressionIEInternalOp(Program& p, const std::shared_pt }; if (p.use_new_shape_infer()) { - auto nonMaxSupressionLayerName = layer_type_name_ID(op); + auto nonMaxSuppressionLayerName = layer_type_name_ID(op); auto prim = cldnn::non_max_suppression( - nonMaxSupressionLayerName, + nonMaxSuppressionLayerName, reordered_inputs[0], reordered_inputs[1], 0, @@ -105,11 +105,11 @@ static void CreateNonMaxSuppressionIEInternalOp(Program& p, const std::shared_pt GPU_DEBUG_LOG << "[" << layer_type_name_ID(op) << ": mutable data]" << std::endl; shared_memory.emplace_back(p.get_engine().allocate_memory(mutableLayoutSecond)); - cldnn::primitive_id non_max_supression_mutable_id_w_second = layer_type_name_ID(op) + "_md_write_second"; - auto nms_mutable_prim_second = cldnn::mutable_data(non_max_supression_mutable_id_w_second, + cldnn::primitive_id non_max_suppression_mutable_id_w_second = layer_type_name_ID(op) + "_md_write_second"; + auto nms_mutable_prim_second = cldnn::mutable_data(non_max_suppression_mutable_id_w_second, shared_memory.back()); p.add_primitive(*op, nms_mutable_prim_second); - inputs.push_back(cldnn::input_info(non_max_supression_mutable_id_w_second)); + inputs.push_back(cldnn::input_info(non_max_suppression_mutable_id_w_second)); } case 2: { auto mutable_precision_first = op->get_output_element_type(1); @@ -121,20 +121,20 @@ static void CreateNonMaxSuppressionIEInternalOp(Program& p, const std::shared_pt GPU_DEBUG_LOG << "[" << layer_type_name_ID(op) << ": mutable data]" << std::endl; shared_memory.emplace_back(p.get_engine().allocate_memory(mutableLayoutFirst)); - cldnn::primitive_id non_max_supression_mutable_id_w_first = layer_type_name_ID(op) + "_md_write_first"; - auto nms_mutable_prim_first = cldnn::mutable_data(non_max_supression_mutable_id_w_first, + cldnn::primitive_id non_max_suppression_mutable_id_w_first = layer_type_name_ID(op) + "_md_write_first"; + auto nms_mutable_prim_first = cldnn::mutable_data(non_max_suppression_mutable_id_w_first, shared_memory.back()); p.add_primitive(*op, nms_mutable_prim_first); - inputs.push_back(cldnn::input_info(non_max_supression_mutable_id_w_first)); + inputs.push_back(cldnn::input_info(non_max_suppression_mutable_id_w_first)); } case 1: break; default: IE_THROW() << "Incorrect number of output for layer: " << op->get_friendly_name(); } - auto nonMaxSupressionLayerName = num_outputs > 1 ? layer_type_name_ID(op) + ".out0" : layer_type_name_ID(op); + auto nonMaxSuppressionLayerName = num_outputs > 1 ? layer_type_name_ID(op) + ".out0" : layer_type_name_ID(op); auto prim = cldnn::non_max_suppression( - nonMaxSupressionLayerName, + nonMaxSuppressionLayerName, reordered_inputs[0], reordered_inputs[1], static_cast(outputIndices), @@ -163,16 +163,16 @@ static void CreateNonMaxSuppressionIEInternalOp(Program& p, const std::shared_pt switch (num_outputs) { case 3: { - cldnn::primitive_id non_max_supression_id_r_second = layer_type_name_ID(op) + ".out2"; - auto nms_mutable_prim_r_second = cldnn::mutable_data(non_max_supression_id_r_second, - { cldnn::input_info(nonMaxSupressionLayerName) }, + cldnn::primitive_id non_max_suppression_id_r_second = layer_type_name_ID(op) + ".out2"; + auto nms_mutable_prim_r_second = cldnn::mutable_data(non_max_suppression_id_r_second, + { cldnn::input_info(nonMaxSuppressionLayerName) }, shared_memory.front()); p.add_primitive(*op, nms_mutable_prim_r_second); } case 2: { - cldnn::primitive_id non_max_supression_id_r_first = layer_type_name_ID(op) + ".out1"; - auto nms_mutable_prim_r_first = cldnn::mutable_data(non_max_supression_id_r_first, - { cldnn::input_info(nonMaxSupressionLayerName) }, + cldnn::primitive_id non_max_suppression_id_r_first = layer_type_name_ID(op) + ".out1"; + auto nms_mutable_prim_r_first = cldnn::mutable_data(non_max_suppression_id_r_first, + { cldnn::input_info(nonMaxSuppressionLayerName) }, shared_memory.back()); p.add_primitive(*op, nms_mutable_prim_r_first); } diff --git a/src/plugins/intel_gpu/src/runtime/engine.cpp b/src/plugins/intel_gpu/src/runtime/engine.cpp index 1922dc6ff95e17..746f05e857a416 100644 --- a/src/plugins/intel_gpu/src/runtime/engine.cpp +++ b/src/plugins/intel_gpu/src/runtime/engine.cpp @@ -19,7 +19,10 @@ #include #if defined(_WIN32) -#include +# ifndef NOMINMAX +# define NOMINMAX +# endif +# include static size_t get_cpu_ram_size() { MEMORYSTATUSEX s {}; @@ -28,15 +31,15 @@ static size_t get_cpu_ram_size() { return s.ullTotalPhys; } #elif defined(__APPLE__) || defined(__FreeBSD__) || defined(__QNXNTO__) -#include -#include +# include +# include static size_t get_cpu_ram_size() { -#ifdef __APPLE__ +# ifdef __APPLE__ int query_ram[] = {CTL_HW, HW_MEMSIZE}; -#else +# else int query_ram[] = {CTL_HW, HW_PHYSMEM}; -#endif +# endif int query_ram_len = sizeof(query_ram) / sizeof(*query_ram); size_t totalram = 0; size_t length = sizeof(totalram); @@ -45,7 +48,7 @@ static size_t get_cpu_ram_size() { return totalram; } #else -#include +# include static size_t get_cpu_ram_size() { struct sysinfo s {}; diff --git a/src/plugins/intel_gpu/src/runtime/ocl/ocl_device.cpp b/src/plugins/intel_gpu/src/runtime/ocl/ocl_device.cpp index de475803447115..c96fcb8169e008 100644 --- a/src/plugins/intel_gpu/src/runtime/ocl/ocl_device.cpp +++ b/src/plugins/intel_gpu/src/runtime/ocl/ocl_device.cpp @@ -24,6 +24,9 @@ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif +#ifndef NOMINMAX +#define NOMINMAX +#endif #include #include #include diff --git a/src/plugins/intel_gpu/thirdparty/CMakeLists.txt b/src/plugins/intel_gpu/thirdparty/CMakeLists.txt index f25d0f44cba85c..cec5ca58fcd3f0 100644 --- a/src/plugins/intel_gpu/thirdparty/CMakeLists.txt +++ b/src/plugins/intel_gpu/thirdparty/CMakeLists.txt @@ -104,6 +104,9 @@ if(ENABLE_ONEDNN_FOR_GPU) "-DONEDNN_BUILD_GRAPH=OFF" "-DOpenCL_LIBRARY=${OpenCL_LIBRARY}" "-DOpenCL_INCLUDE_DIR=${OpenCL_INCLUDE_DIR}" + # specifically for Conan, because it overrides CMAKE_PREFIX_PATH and oneDNN's FindOpenCL.cmake is ignored + # Conan's FindOpenCL.cmake module does not set OpenCL_INCLUDE_DIRS, so we need to set it manually + "-DOpenCL_INCLUDE_DIRS=${OpenCL_INCLUDE_DIR}" ) add_library(onednn_gpu_tgt INTERFACE) set_target_properties(onednn_gpu_tgt PROPERTIES diff --git a/tests/layer_tests/tensorflow_tests/test_tf_NonMaxSupression.py b/tests/layer_tests/tensorflow_tests/test_tf_NonMaxSupression.py index 9b9c196c153464..35c8eacda3e03a 100644 --- a/tests/layer_tests/tensorflow_tests/test_tf_NonMaxSupression.py +++ b/tests/layer_tests/tensorflow_tests/test_tf_NonMaxSupression.py @@ -8,7 +8,7 @@ from common.tf_layer_test_class import CommonTFLayerTest -class TestNonMaxSupression(CommonTFLayerTest): +class TestNonMaxSuppression(CommonTFLayerTest): # overload inputs generation to suit NMS use case def _prepare_input(self, inputs_dict): @@ -83,7 +83,7 @@ def create_nms_net(self, test_params: dict, with_scores: bool = False): @pytest.mark.nightly @pytest.mark.precommit @pytest.mark.precommit_tf_fe - def test_NonMaxSupression(self, test_params, ie_device, precision, ir_version, temp_dir, + def test_NonMaxSuppression(self, test_params, ie_device, precision, ir_version, temp_dir, use_new_frontend, use_old_api): if ie_device == 'GPU': pytest.skip("Skip TF NonMaxSuppresion test on GPU") @@ -96,7 +96,7 @@ def test_NonMaxSupression(self, test_params, ie_device, precision, ir_version, t @pytest.mark.nightly @pytest.mark.precommit @pytest.mark.precommit_tf_fe - def test_NonMaxSupressionWithScores(self, test_params, ie_device, precision, ir_version, temp_dir, + def test_NonMaxSuppressionWithScores(self, test_params, ie_device, precision, ir_version, temp_dir, use_new_frontend, use_old_api): if ie_device == 'GPU': pytest.skip("Skip TF NonMaxSuppresionWithScores test on GPU") diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index edbcb824f4b380..95d80a6fbd4b37 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -18,7 +18,20 @@ if(ENABLE_LTO) endif() if(ENABLE_PROFILING_ITT) - add_subdirectory(ittapi) + find_package(ittapi QUIET) + if(ittapi_FOUND) + # conan defines 'ittapi::ittapi' target + # create more common alias 'ittapi::ittnotify' + set_target_properties(ittapi::ittapi PROPERTIES + IMPORTED_GLOBAL ON + INTERFACE_COMPILE_DEFINITIONS ENABLE_PROFILING_ITT) + add_library(ittapi::ittnotify ALIAS ittapi::ittapi) + + # set ittapi_FOUND to parent scope to properly generate OpenVINOConfig.cmake for static build + set(ittapi_FOUND ${ittapi_FOUND} PARENT_SCOPE) + else() + add_subdirectory(ittapi) + endif() add_subdirectory(itt_collector EXCLUDE_FROM_ALL) endif() @@ -26,9 +39,18 @@ if(ENABLE_SAMPLES OR ENABLE_TESTS) add_subdirectory(cnpy EXCLUDE_FROM_ALL) endif() -add_subdirectory(xbyak EXCLUDE_FROM_ALL) -openvino_developer_export_targets(COMPONENT openvino_common TARGETS xbyak) -ov_install_static_lib(xbyak ${OV_CPACK_COMP_CORE}) +if(X86_64 OR UNIVERSAL2) + find_package(xbyak QUIET) + if(xbyak_FOUND) + # conan creates alias xbyak::xbyak, we only need to make it GLOBAL + set_target_properties(xbyak::xbyak PROPERTIES IMPORTED_GLOBAL ON) + else() + add_subdirectory(xbyak EXCLUDE_FROM_ALL) + # export and install xbyak + openvino_developer_export_targets(COMPONENT openvino_common TARGETS xbyak::xbyak) + ov_install_static_lib(xbyak ${OV_CPACK_COMP_CORE}) + endif() +endif() # # OpenCL @@ -36,30 +58,41 @@ ov_install_static_lib(xbyak ${OV_CPACK_COMP_CORE}) if(ENABLE_INTEL_GPU) if(ENABLE_SYSTEM_OPENCL) - # try to find system OpenCL (installed via 'brew install opencl-icd-loader') + # try to find system OpenCL: + # - 'brew install opencl-icd-loader' + # - 'conan install opencl-icd-loader' find_package(OpenCLICDLoader QUIET) if(OpenCLICDLoader_FOUND) - # 'brew install opencl-headers' + # examples: + # - 'brew install opencl-headers' + # - 'conan install opencl-headers' find_package(OpenCLHeaders QUIET) if(NOT OpenCLHeaders_FOUND) message(WARNING "OpenCLHeaders not found, but OpenCLICDLoader is installed. Please, install OpenCL headers") else() set_target_properties(OpenCL::Headers PROPERTIES IMPORTED_GLOBAL ON) + set_property(TARGET OpenCL::OpenCL APPEND PROPERTY INTERFACE_LINK_LIBRARIES OpenCL::Headers) endif() - # 'brew install opencl-clhpp-gheaders' + # examples: + # - 'brew install opencl-clhpp-headers' + # - 'conan install opencl-clhpp-headers' find_package(OpenCLHeadersCpp QUIET) if(NOT OpenCLHeadersCpp_FOUND) message(WARNING "OpenCLHeadersCpp not found, but OpenCLICDLoader is installed. Please, install OpenCL C++ headers") else() set_target_properties(OpenCL::HeadersCpp PROPERTIES IMPORTED_GLOBAL ON) get_target_property(opencl_cpp_include_dirs OpenCL::HeadersCpp INTERFACE_INCLUDE_DIRECTORIES) + set_property(TARGET OpenCL::OpenCL APPEND PROPERTY INTERFACE_LINK_LIBRARIES OpenCL::HeadersCpp) endif() + + # set OpenCLICDLoader_FOUND to parent scope to generate proper OpenVINOConfig.cmake for static libraries case + set(OpenCLICDLoader_FOUND ON PARENT_SCOPE) else() # try to find system OpenCL: - # - 'sudo -E apt-get install opencl-headers ocl-icd-opencl-dev' - # - 'sudo -E yum install ocl-icd-devel opencl-headers' + # - 'apt-get install opencl-headers ocl-icd-opencl-dev' + # - 'yum install ocl-icd-devel opencl-headers' # - 'conda install khronos-opencl-icd-loader -c conda-forge' find_package(OpenCL QUIET) endif() @@ -105,6 +138,9 @@ if(ENABLE_INTEL_GPU) set(OpenCL_INCLUDE_DIR "${OpenCL_INCLUDE_DIR}" PARENT_SCOPE) set(OpenCL_LIBRARY "${OpenCL_LIBRARY}" PARENT_SCOPE) set(opencl_root_hints "${opencl_root_hints}" PARENT_SCOPE) + + # system OpenCL is not found: set it explictly for consistent OpenVINOConfig.cmake generation + set(ENABLE_SYSTEM_OPENCL OFF PARENT_SCOPE) endif() # cmake cannot set properties for imported targets @@ -136,17 +172,24 @@ endif() # if(ENABLE_SAMPLES OR ENABLE_TESTS) - if(PkgConfig_FOUND) + find_package(ZLIB QUIET NO_MODULE) + if(ZLIB_FOUND) + # need to make it global to use outside of the current sub-directory + set_target_properties(ZLIB::ZLIB PROPERTIES IMPORTED_GLOBAL ON) + endif() + + # cmake has failed to find zlib, let's try pkg-config + if(NOT ZLIB_FOUND AND PkgConfig_FOUND) pkg_search_module(zlib QUIET IMPORTED_TARGET GLOBAL zlib) if(zlib_FOUND) - add_library(zlib::zlib ALIAS PkgConfig::zlib) + add_library(ZLIB::ZLIB ALIAS PkgConfig::zlib) message(STATUS "${PKG_CONFIG_EXECUTABLE}: zlib (${zlib_VERSION}) is found at ${zlib_PREFIX}") endif() endif() - if(NOT zlib_FOUND) + if(NOT (zlib_FOUND OR ZLIB_FOUND)) add_subdirectory(zlib EXCLUDE_FROM_ALL) endif() endif() @@ -159,20 +202,22 @@ if(ENABLE_SYSTEM_PUGIXML) # try system pugixml first find_package(PugiXML QUIET) if(PugiXML_FOUND) + # TODO: use static pugixml library in case of BUILD_SHARED_LIBS=OFF if(TARGET pugixml::shared) # example: cross-compilation on debian set(pugixml_target pugixml::shared) elseif(TARGET pugixml::pugixml) # or create an alias for pugixml::pugixml shared library - # example: pugixml brew package + # - 'brew install pugixml' + # - 'conan install pugixml' set(pugixml_target pugixml::pugixml) elseif(TARGET pugixml) # or create an alias for pugixml shared library - # example: libpugixml-dev debian package + # - 'apt-get install libpugixml-dev' set(pugixml_target pugixml) elseif(TARGET pugixml::static) # sometimes pugixml::static target already exists, just need to make it global - # example: building using conda environment + # - 'conda install pugixml -c conda-forge' set(pugixml_target pugixml::static) else() message(FATAL_ERROR "Failed to detect pugixml library target name") @@ -182,7 +227,8 @@ if(ENABLE_SYSTEM_PUGIXML) elseif(PkgConfig_FOUND) # U18 case when cmake interface is not available pkg_search_module(pugixml QUIET - IMPORTED_TARGET GLOBAL + IMPORTED_TARGET + GLOBAL pugixml) if(pugixml_FOUND) set(pugixml_target PkgConfig::pugixml) @@ -237,26 +283,27 @@ if(ENABLE_SYSTEM_PUGIXML) # create an alias for real target which can be shared or static add_library(openvino::pugixml ALIAS ${pugixml_target}) else() - # reset to prevent improper code generation in OpenVINODeveloperPackage - set(ENABLE_SYSTEM_PUGIXML OFF CACHE BOOL "" FORCE) + # reset to prevent improper code generation in OpenVINODeveloperPackage.cmake, + # and OpenVINOConfig.cmake for static case + set(ENABLE_SYSTEM_PUGIXML OFF PARENT_SCOPE) endif() endif() if(NOT TARGET openvino::pugixml) # use OpenVINO pugixml copy if system one is not found - function(ie_build_pugixml) - function(ie_build_pugixml_static) + function(ov_build_pugixml) + function(ov_build_pugixml_static) set(BUILD_SHARED_LIBS OFF) add_subdirectory(pugixml EXCLUDE_FROM_ALL) endfunction() - ie_build_pugixml_static() + ov_build_pugixml_static() set_property(TARGET pugixml-static PROPERTY EXPORT_NAME pugixml) add_library(openvino::pugixml ALIAS pugixml-static) openvino_developer_export_targets(COMPONENT openvino_common TARGETS openvino::pugixml) ov_install_static_lib(pugixml-static ${OV_CPACK_COMP_CORE}) endfunction() - ie_build_pugixml() + ov_build_pugixml() endif() # @@ -267,7 +314,23 @@ if(ENABLE_GAPI_PREPROCESSING) add_library(ocv_hal INTERFACE) target_include_directories(ocv_hal INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/ocv") - add_subdirectory(ade EXCLUDE_FROM_ALL) + # ade + find_package(ade 0.1.2 QUIET) + if(ade_FOUND) + # conan creates 'ade' target + + # set ade_FOUND to parent scope to properly generate OpenVINOConfig.cmake for static build + set(ade_FOUND ${ade_FOUND} PARENT_SCOPE) + else() + add_subdirectory(ade EXCLUDE_FROM_ALL) + + set_target_properties(ade PROPERTIES FOLDER thirdparty) + openvino_developer_export_targets(COMPONENT openvino_common TARGETS ade) + + ov_install_static_lib(ade ${OV_CPACK_COMP_CORE}) + endif() + + # fluid add_subdirectory(fluid/modules/gapi EXCLUDE_FROM_ALL) if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 11) @@ -277,10 +340,9 @@ if(ENABLE_GAPI_PREPROCESSING) target_compile_options(fluid PRIVATE "-Wno-unused-but-set-variable") endif() - set_target_properties(ade fluid PROPERTIES FOLDER thirdparty) - openvino_developer_export_targets(COMPONENT openvino_common TARGETS ade fluid) + set_target_properties(fluid PROPERTIES FOLDER thirdparty) + openvino_developer_export_targets(COMPONENT openvino_common TARGETS fluid) - ov_install_static_lib(ade ${OV_CPACK_COMP_CORE}) ov_install_static_lib(fluid ${OV_CPACK_COMP_CORE}) endif() @@ -297,6 +359,9 @@ if(ENABLE_SAMPLES OR ENABLE_COMPILE_TOOL OR ENABLE_TESTS) set(gflag_component nothreads_static) endif() find_package(gflags QUIET OPTIONAL_COMPONENTS ${gflag_component}) + else() + # conan case + find_package(gflags QUIET) endif() if(gflags_FOUND) @@ -352,17 +417,22 @@ endif() if(ENABLE_OV_PADDLE_FRONTEND OR ENABLE_OV_ONNX_FRONTEND OR ENABLE_OV_TF_FRONTEND) if(ENABLE_SYSTEM_PROTOBUF) + # Note: Debian / Ubuntu / RHEL libprotobuf.a can only be used with -DBUILD_SHARED_LIBS=OFF + # because they are compiled without -fPIC set(Protobuf_USE_STATIC_LIBS ON) if(CMAKE_VERBOSE_MAKEFILE) set(Protobuf_DEBUG ON) endif() find_package(Protobuf 3.20.3 REQUIRED) - set(Protobuf_LITE_LIBRARIES protobuf::libprotobuf-lite) - set(Protobuf_LIBRARIES protobuf::libprotobuf) set(PROTOC_EXECUTABLE protobuf::protoc) - foreach(target IN LISTS PROTOC_EXECUTABLE Protobuf_LIBRARIES Protobuf_LITE_LIBRARIES) - set_property(TARGET ${target} PROPERTY IMPORTED_GLOBAL ON) + # in case of system protobuf, we have to add version to OpenVINOConfig.cmake for static build + # to ensure no mismatch between versions of protoc and libprotobuf, we need to use exactly + # the same versions + set(Protobuf_VERSION ${Protobuf_VERSION} PARENT_SCOPE) + + foreach(target ${PROTOC_EXECUTABLE} protobuf::libprotobuf protobuf::libprotobuf-lite) + set_target_properties(${target} PROPERTIES IMPORTED_GLOBAL ON) endforeach() else() add_subdirectory(protobuf EXCLUDE_FROM_ALL) @@ -371,34 +441,40 @@ if(ENABLE_OV_PADDLE_FRONTEND OR ENABLE_OV_ONNX_FRONTEND OR ENABLE_OV_TF_FRONTEND # forward variables used in the other places set(PROTOC_DEPENDENCY ${PROTOC_DEPENDENCY} PARENT_SCOPE) set(PROTOC_EXECUTABLE ${PROTOC_EXECUTABLE} PARENT_SCOPE) - set(Protobuf_LIBRARIES ${Protobuf_LIBRARIES} PARENT_SCOPE) - set(Protobuf_LITE_LIBRARIES ${Protobuf_LITE_LIBRARIES} PARENT_SCOPE) - set(Protobuf_INCLUDE_DIRS ${Protobuf_INCLUDE_DIRS} PARENT_SCOPE) set(Protobuf_IN_FRONTEND ON PARENT_SCOPE) # set public / interface compile options - foreach(target IN LISTS Protobuf_LITE_LIBRARIES Protobuf_LIBRARIES) + foreach(target_name protobuf::libprotobuf protobuf::libprotobuf-lite) set(link_type PUBLIC) if(ENABLE_SYSTEM_PROTOBUF) set(link_type INTERFACE) endif() if(CMAKE_COMPILER_IS_GNUCXX OR OV_COMPILER_IS_CLANG) - target_compile_options(${target} ${link_type} -Wno-undef) + get_target_property(original_name ${target_name} ALIASED_TARGET) + if(TARGET ${original_name}) + # during build protobuf's cmake creates aliased targets + set(target_name ${original_name}) + endif() + target_compile_options(${target_name} ${link_type} -Wno-undef) endif() endforeach() endif() # -# Flat Buffers +# FlatBuffers # if(ENABLE_OV_TF_LITE_FRONTEND) if(ENABLE_SYSTEM_FLATBUFFERS) - if(CMAKE_HOST_LINUX AND EMSCRIPTEN AND HOST_X86_64) + if(CMAKE_HOST_LINUX AND EMSCRIPTEN) set(_old_flat_CMAKE_LIBRARY_ARCHITECTURE ${CMAKE_LIBRARY_ARCHITECTURE}) # without this WA cmake does not search in subfolder # see https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-search-procedure - set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + if(HOST_X86_64) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + elseif(HOST_AARCH64) + set(CMAKE_LIBRARY_ARCHITECTURE "aarch64-linux-gnu") + endif() endif() find_host_package(Flatbuffers QUIET NO_CMAKE_FIND_ROOT_PATH) @@ -433,10 +509,24 @@ endif() if(ENABLE_SNAPPY_COMPRESSION) if(ENABLE_SYSTEM_SNAPPY) find_package(Snappy REQUIRED) - set_target_properties(Snappy::snappy PROPERTIES IMPORTED_GLOBAL ON) + + set(ov_snappy_lib Snappy::snappy) + if(NOT BUILD_SHARED_LIBS AND TARGET Snappy::snappy-static) + # we can use static library only in static build, because in case od dynamic build + # the libsnappy.a should be compiled with -fPIC, while Debian / Ubuntu / RHEL don't do it + set(ov_snappy_lib Snappy::snappy-static) + endif() + + set_target_properties(${ov_snappy_lib} PROPERTIES IMPORTED_GLOBAL ON) + add_library(openvino::snappy ALIAS ${ov_snappy_lib}) + + # set Snappy_VERSION to parent scope for consistent OpenVINOConfig.cmake generation + # in case of static build with system dependencies + set(Snappy_VERSION ${Snappy_VERSION} PARENT_SCOPE) + set(ov_snappy_lib ${ov_snappy_lib} PARENT_SCOPE) endif() - if(NOT TARGET Snappy::snappy) + if(NOT TARGET openvino::snappy) function(ov_build_snappy) set(BUILD_SHARED_LIBS OFF) set(SNAPPY_BUILD_BENCHMARKS OFF) @@ -462,10 +552,10 @@ if(ENABLE_SNAPPY_COMPRESSION) endif() add_subdirectory(snappy EXCLUDE_FROM_ALL) - # need to create alias Snappy::snappy - add_library(Snappy::snappy ALIAS snappy) + # need to create alias openvino::snappy + add_library(openvino::snappy ALIAS snappy) - # WA for emscriptem build which currently requires -fexceptions + # WA for emscripten build which currently requires -fexceptions if(EMSCRIPTEN) target_compile_options(snappy PRIVATE "-fexceptions") endif() @@ -481,7 +571,19 @@ endif() # if(ENABLE_OV_ONNX_FRONTEND) - add_subdirectory(onnx) + find_package(ONNX 1.13.1 EXACT QUIET COMPONENTS onnx onnx_proto NO_MODULE) + + if(ONNX_FOUND) + # conan creates imported targets 'onnx' and 'onnx_proto' + set_target_properties(onnx onnx_proto PROPERTIES IMPORTED_GLOBAL ON) + + # set ONNX_VERSION to parent scope for correct OpenVINOConfig.cmake generation + # in case of static libraries + set(ONNX_VERSION ${ONNX_VERSION} PARENT_SCOPE) + set(ENABLE_SYSTEM_ONNX ON PARENT_SCOPE) + else() + add_subdirectory(onnx) + endif() endif() # @@ -489,18 +591,26 @@ endif() # if(ENABLE_SAMPLES) - add_subdirectory(json) - - # this is required only because of VPUX plugin reused this - openvino_developer_export_targets(COMPONENT openvino_common - TARGETS nlohmann_json) - - # for nlohmann library version v3.0.0 and later - if(NOT TARGET nlohmann_json::nlohmann_json) - add_library(nlohmann_json::nlohmann_json INTERFACE IMPORTED GLOBAL) - set_target_properties(nlohmann_json::nlohmann_json PROPERTIES - INTERFACE_LINK_LIBRARIES nlohmann_json - INTERFACE_COMPILE_DEFINITIONS JSON_HEADER) + # Note: VPUX requires 3.9.0 version, because it contains 'nlohmann::ordered_json' + find_package(nlohmann_json 3.9.0 QUIET) + if(nlohmann_json_FOUND) + # conan creates imported target nlohmann_json::nlohmann_json + # no needs to make the target global, because samples call find_package(nlohmann_json) as well + # but we need to set nlohmann_json_FOUND to parent scope to properly generate InferenceEngineDeveloperPackageConfig.cmake + set(nlohmann_json_FOUND ${nlohmann_json_FOUND} PARENT_SCOPE) + else() + add_subdirectory(json) + + # this is required only because of VPUX plugin reused this + openvino_developer_export_targets(COMPONENT openvino_common TARGETS nlohmann_json) + + # for nlohmann library versions older than v3.0.0 + if(NOT TARGET nlohmann_json::nlohmann_json) + add_library(nlohmann_json::nlohmann_json INTERFACE IMPORTED GLOBAL) + set_target_properties(nlohmann_json::nlohmann_json PROPERTIES + INTERFACE_LINK_LIBRARIES nlohmann_json + INTERFACE_COMPILE_DEFINITIONS JSON_HEADER) + endif() endif() endif() @@ -508,14 +618,14 @@ endif() # Install # -if(CPACK_GENERATOR MATCHES "^(DEB|RPM|CONDA-FORGE|BREW)$") +if(CPACK_GENERATOR MATCHES "^(DEB|RPM|CONDA-FORGE|BREW|CONAN)$") # These libraries are dependencies for openvino-samples package if(ENABLE_SAMPLES OR ENABLE_COMPILE_TOOL OR ENABLE_TESTS) if(NOT gflags_FOUND) message(FATAL_ERROR "gflags must be used as a ${CPACK_GENERATOR} package. Install libgflags-dev / gflags-devel") endif() - if(NOT zlib_FOUND) + if(NOT (zlib_FOUND OR ZLIB_FOUND)) message(FATAL_ERROR "zlib must be used as a ${CPACK_GENERATOR} package. Install zlib1g-dev / zlib-devel") endif() endif() diff --git a/thirdparty/cnpy/CMakeLists.txt b/thirdparty/cnpy/CMakeLists.txt index 6c1293f34416e7..c10d23301d9113 100644 --- a/thirdparty/cnpy/CMakeLists.txt +++ b/thirdparty/cnpy/CMakeLists.txt @@ -13,7 +13,7 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$") PRIVATE -Wno-all) endif() -target_link_libraries(${TARGET_NAME} PUBLIC zlib::zlib) +target_link_libraries(${TARGET_NAME} PUBLIC ZLIB::ZLIB) target_include_directories(${TARGET_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") set_target_properties(${TARGET_NAME} PROPERTIES FOLDER thirdparty) diff --git a/thirdparty/fluid/modules/gapi/include/opencv2/gapi/infer/parsers.hpp b/thirdparty/fluid/modules/gapi/include/opencv2/gapi/infer/parsers.hpp index c7308dd39f4792..e39d6fd4c6a267 100644 --- a/thirdparty/fluid/modules/gapi/include/opencv2/gapi/infer/parsers.hpp +++ b/thirdparty/fluid/modules/gapi/include/opencv2/gapi/infer/parsers.hpp @@ -95,7 +95,7 @@ GAPI_EXPORTS_W GArray parseSSD(const GMat& in, /** @brief Parses output of Yolo network. Extracts detection information (box, confidence, label) from Yolo output, -filters it by given confidence and performs non-maximum supression for overlapping boxes. +filters it by given confidence and performs non-maximum suppression for overlapping boxes. @note Function textual ID is "org.opencv.nn.parsers.parseYolo" @@ -105,7 +105,7 @@ where num_classes - a number of classes Yolo network was trained with. @param inSz Size to project detected boxes to (size of the input image). @param confidenceThreshold If confidence of the detection is smaller than confidence threshold, detection is rejected. -@param nmsThreshold Non-maximum supression threshold which controls minimum +@param nmsThreshold Non-maximum suppression threshold which controls minimum relative box intersection area required for rejecting the box with a smaller confidence. If 1.f, nms is not performed and no boxes are rejected. @param anchors Anchors Yolo network was trained with. diff --git a/thirdparty/itt_collector/sea_itt_lib/CMakeLists.txt b/thirdparty/itt_collector/sea_itt_lib/CMakeLists.txt index 694f9341bd2fbc..82919fb64b5d33 100644 --- a/thirdparty/itt_collector/sea_itt_lib/CMakeLists.txt +++ b/thirdparty/itt_collector/sea_itt_lib/CMakeLists.txt @@ -27,15 +27,18 @@ add_library(${TARGET_NAME} SHARED ${SOURCES}) target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME IntelSEAPI) -target_link_libraries(${TARGET_NAME} PRIVATE ittnotify) +target_link_libraries(${TARGET_NAME} PRIVATE ittapi::ittnotify) if(UNIX) - target_link_libraries(${TARGET_NAME} PRIVATE dl) - target_compile_options(${TARGET_NAME} PRIVATE -Wno-undef -Wno-deprecated-declarations -Wno-multichar) + target_link_libraries(${TARGET_NAME} PRIVATE ${CMAKE_DL_LIBS}) elseif(WIN32) target_link_libraries(${TARGET_NAME} PRIVATE Dbghelp) endif() +if(CMAKE_COMPILER_IS_GNUCC OR OV_COMPILER_IS_CLANG) + target_compile_options(${TARGET_NAME} PRIVATE -Wno-undef -Wno-deprecated-declarations -Wno-multichar) +endif() + add_clang_format_target(${TARGET_NAME}_clang FOR_TARGETS ${TARGET_NAME}) install(TARGETS ${TARGET_NAME} diff --git a/thirdparty/ittapi/CMakeLists.txt b/thirdparty/ittapi/CMakeLists.txt index feb06a31c01a5e..d30d6f0136c2fa 100644 --- a/thirdparty/ittapi/CMakeLists.txt +++ b/thirdparty/ittapi/CMakeLists.txt @@ -10,7 +10,7 @@ if(DEFINED INTEL_VTUNE_DIR OR DEFINED ENV{INTEL_VTUNE_DIR}) message(WARNING "Profiling option enabled, but no ITT library was found under INTEL_VTUNE_DIR") endif() else() - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ittapi ${CMAKE_BINARY_DIR}/_deps/ittapi EXCLUDE_FROM_ALL) + add_subdirectory(ittapi EXCLUDE_FROM_ALL) target_compile_definitions(ittnotify INTERFACE ENABLE_PROFILING_ITT) if(CMAKE_COMPILER_IS_GNUCXX OR OV_COMPILER_IS_CLANG) @@ -22,6 +22,9 @@ else() $ $) - openvino_developer_export_targets(COMPONENT openvino_common TARGETS ittnotify) - ov_install_static_lib(ittnotify ${OV_CPACK_COMP_CORE}) + # create alias ittapi::ittnotify + add_library(ittapi::ittnotify ALIAS ittnotify) + + openvino_developer_export_targets(COMPONENT openvino_common TARGETS ittapi::ittnotify) + ov_install_static_lib(ittapi::ittnotify ${OV_CPACK_COMP_CORE}) endif() diff --git a/thirdparty/onnx/CMakeLists.txt b/thirdparty/onnx/CMakeLists.txt index c276a78a74de89..1884c4b646421d 100644 --- a/thirdparty/onnx/CMakeLists.txt +++ b/thirdparty/onnx/CMakeLists.txt @@ -41,8 +41,10 @@ endfunction() ov_onnx_build_static() -target_include_directories(onnx SYSTEM PRIVATE "${Protobuf_INCLUDE_DIRS}") -target_include_directories(onnx_proto SYSTEM PRIVATE "${Protobuf_INCLUDE_DIRS}") +foreach(_onnx_target onnx onnx_proto) + target_include_directories(${_onnx_target} SYSTEM PRIVATE + $) +endforeach() if(WIN32) # from onnx==1.13.1 it requires C++17 when compiling on Windows @@ -62,12 +64,14 @@ ov_install_static_lib(onnx ${OV_CPACK_COMP_CORE}) ov_install_static_lib(onnx_proto ${OV_CPACK_COMP_CORE}) # WA for ONNX: protobuf must be in the same export set of ONNX targets -if(NOT BUILD_SHARED_LIBS) +# in case of protobuf::libprotobuf-lite / protobuf::libprotobuf are imported targets +if(NOT ENABLE_SYSTEM_PROTOBUF) if(ONNX_USE_LITE_PROTO) - install(TARGETS ${Protobuf_LITE_LIBRARIES} EXPORT ONNXTargets - ARCHIVE DESTINATION ${OV_CPACK_ARCHIVEDIR} COMPONENT ${OV_CPACK_COMP_CORE}) + set(protobuf_target_name libprotobuf-lite) else() - install(TARGETS ${Protobuf_LIBRARIES} EXPORT ONNXTargets - ARCHIVE DESTINATION ${OV_CPACK_ARCHIVEDIR} COMPONENT ${OV_CPACK_COMP_CORE}) + set(protobuf_target_name libprotobuf) endif() + + install(TARGETS ${protobuf_target_name} EXPORT ONNXTargets + ARCHIVE DESTINATION ${OV_CPACK_ARCHIVEDIR} COMPONENT ${OV_CPACK_COMP_CORE}) endif() diff --git a/thirdparty/protobuf/CMakeLists.txt b/thirdparty/protobuf/CMakeLists.txt index 79e69a47b09a00..2f1fd6e4876530 100644 --- a/thirdparty/protobuf/CMakeLists.txt +++ b/thirdparty/protobuf/CMakeLists.txt @@ -96,10 +96,3 @@ else() set(PROTOC_EXECUTABLE $ PARENT_SCOPE) set(PROTOC_DEPENDENCY protoc PARENT_SCOPE) endif() - -# set to parent scope - -set(protobuf_VERSION ${protobuf_VERSION} PARENT_SCOPE) -set(Protobuf_LITE_LIBRARIES libprotobuf-lite PARENT_SCOPE) -set(Protobuf_LIBRARIES libprotobuf PARENT_SCOPE) -set(Protobuf_INCLUDE_DIRS ${Protobuf_INCLUDE_DIRS} PARENT_SCOPE) diff --git a/thirdparty/zlib/CMakeLists.txt b/thirdparty/zlib/CMakeLists.txt index fb4b1dadc73c7d..89fa92abef341d 100644 --- a/thirdparty/zlib/CMakeLists.txt +++ b/thirdparty/zlib/CMakeLists.txt @@ -55,8 +55,8 @@ set(zlib_ext_hdrs zlib/zconf.h) add_library(${TARGET_NAME} STATIC ${zlib_srcs} ${zlib_hdrs} ${lib_ext_hdrs}) -add_library(${TARGET_NAME}::${TARGET_NAME} ALIAS ${TARGET_NAME}) +add_library(ZLIB::ZLIB ALIAS ${TARGET_NAME}) target_include_directories(${TARGET_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/zlib") -set_target_properties(zlib PROPERTIES FOLDER thirdparty) +set_target_properties(${TARGET_NAME} PROPERTIES FOLDER thirdparty) diff --git a/tools/compile_tool/CMakeLists.txt b/tools/compile_tool/CMakeLists.txt index bb66f387449fad..1cb39b7703008d 100644 --- a/tools/compile_tool/CMakeLists.txt +++ b/tools/compile_tool/CMakeLists.txt @@ -38,7 +38,7 @@ ov_cpack_add_component(${OV_CPACK_COMP_CORE_TOOLS} HIDDEN DEPENDS ${OV_CPACK_COMP_CORE}) -if(CPACK_GENERATOR MATCHES "^(DEB|RPM|CONDA-FORGE|BREW)$") +if(CPACK_GENERATOR MATCHES "^(DEB|RPM|CONDA-FORGE|BREW|CONAN)$") install(TARGETS compile_tool RUNTIME DESTINATION ${OV_CPACK_TOOLSDIR} COMPONENT ${OV_CPACK_COMP_CORE_TOOLS}) diff --git a/tools/mo/openvino/tools/mo/utils/cli_parser.py b/tools/mo/openvino/tools/mo/utils/cli_parser.py index cca28014c3a632..2efb7e0db2ce16 100644 --- a/tools/mo/openvino/tools/mo/utils/cli_parser.py +++ b/tools/mo/openvino/tools/mo/utils/cli_parser.py @@ -580,7 +580,7 @@ def __call__(self, parser, namespace, values, option_string=None): def canonicalize_and_check_paths(values: Union[str, List[str]], param_name, - try_mo_root=False, check_existance=True) -> List[str]: + try_mo_root=False, check_existence=True) -> List[str]: if values is not None: list_of_values = list() if isinstance(values, str): @@ -591,7 +591,7 @@ def canonicalize_and_check_paths(values: Union[str, List[str]], param_name, else: raise Error('Unsupported type of command line parameter "{}" value'.format(param_name)) - if not check_existance: + if not check_existence: return [get_absolute_path(path) for path in list_of_values] for idx, val in enumerate(list_of_values): @@ -619,7 +619,7 @@ class CanonicalizePathAction(argparse.Action): def __call__(self, parser, namespace, values, option_string=None): list_of_paths = canonicalize_and_check_paths(values, param_name=option_string, - try_mo_root=False, check_existance=False) + try_mo_root=False, check_existence=False) setattr(namespace, self.dest, ','.join(list_of_paths)) @@ -631,7 +631,7 @@ class CanonicalizeTransformationPathCheckExistenceAction(argparse.Action): def __call__(self, parser, namespace, values, option_string=None): list_of_paths = canonicalize_and_check_paths(values, param_name=option_string, - try_mo_root=True, check_existance=True) + try_mo_root=True, check_existence=True) setattr(namespace, self.dest, ','.join(list_of_paths)) @@ -643,7 +643,7 @@ class CanonicalizePathCheckExistenceAction(argparse.Action): def __call__(self, parser, namespace, values, option_string=None): list_of_paths = canonicalize_and_check_paths(values, param_name=option_string, - try_mo_root=False, check_existance=True) + try_mo_root=False, check_existence=True) setattr(namespace, self.dest, ','.join(list_of_paths)) @@ -655,7 +655,7 @@ class CanonicalizeExtensionsPathCheckExistenceAction(argparse.Action): def __call__(self, parser, namespace, values, option_string=None): list_of_paths = canonicalize_and_check_paths(values, param_name=option_string, - try_mo_root=False, check_existance=True) + try_mo_root=False, check_existence=True) # Extensions paths are needed to be stored as list setattr(namespace, self.dest, list_of_paths)