From 82fe1677d0ea099c0cfdba0c041e6faff210f7d7 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Thu, 13 Jul 2023 21:05:55 +0400 Subject: [PATCH] Revert "Use system gflags only in samples (#18478)" (#18543) This reverts commit bca3f3e441ddb611f8ae6b8d7b62bde942d693cd. --- .ci/azure/linux_arm64.yml | 1 - samples/cpp/CMakeLists.txt | 11 ++++---- thirdparty/dependencies.cmake | 52 +++++++++++++++++++++++++++++++++-- 3 files changed, 56 insertions(+), 8 deletions(-) diff --git a/.ci/azure/linux_arm64.yml b/.ci/azure/linux_arm64.yml index bce18607617..7ba72f6e9ae 100644 --- a/.ci/azure/linux_arm64.yml +++ b/.ci/azure/linux_arm64.yml @@ -147,7 +147,6 @@ jobs: - script: | git submodule update --init -- $(OPENVINO_REPO_DIR)/src/plugins git submodule update --init -- $(OPENVINO_REPO_DIR)/thirdparty/gtest - git submodule update --init -- $(OPENVINO_REPO_DIR)/thirdparty/gflags git submodule update --init -- $(OPENVINO_REPO_DIR)/thirdparty/open_model_zoo displayName: 'Init submodules for non Conan dependencies' diff --git a/samples/cpp/CMakeLists.txt b/samples/cpp/CMakeLists.txt index 8b56ca018de..8849aaf47d1 100644 --- a/samples/cpp/CMakeLists.txt +++ b/samples/cpp/CMakeLists.txt @@ -100,11 +100,12 @@ endif() if(TARGET gflags) set(GFLAGS_TARGET gflags) elseif(gflags_required) - set(GFLAGS_USE_TARGET_NAMESPACE ON) - set(GFLAGS_SHARED OFF) - set(GFLAGS_NOTHREADS ON) - - find_package(gflags QUIET) + if(EXISTS /etc/debian_version) + set(gflags_component nothreads_static) + else() + set(gflags_component shared) + endif() + find_package(gflags QUIET OPTIONAL_COMPONENTS ${gflags_component}) if(gflags_FOUND) if(TARGET ${GFLAGS_TARGET}) # nothing diff --git a/thirdparty/dependencies.cmake b/thirdparty/dependencies.cmake index c4adfeccee9..3095e1c6416 100644 --- a/thirdparty/dependencies.cmake +++ b/thirdparty/dependencies.cmake @@ -4,6 +4,8 @@ if(CMAKE_TOOLCHAIN_FILE MATCHES "vcpkg" OR DEFINED VCPKG_VERBOSE) set(OV_VCPKG_BUILD ON) +elseif(CMAKE_TOOLCHAIN_FILE MATCHES "conan_toolchain" OR DEFINED CONAN_EXPORTED) + set(OV_CONAN_BUILD) endif() set(_old_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) @@ -367,8 +369,51 @@ endif() # if(ENABLE_SAMPLES OR ENABLE_TESTS) - add_subdirectory(thirdparty/gflags EXCLUDE_FROM_ALL) - openvino_developer_export_targets(COMPONENT openvino_common TARGETS gflags) + if(OV_VCPKG_BUILD OR OV_CONAN_BUILD) + # vcpkg contains only libs compiled with threads + # conan case + find_package(gflags QUIET) + elseif(APPLE OR WIN32) + # on Windows and macOS we don't use gflags, because will be dynamically linked + elseif(CMAKE_HOST_LINUX AND LINUX) + if(OV_OS_RHEL) + set(gflag_component nothreads_shared) + elseif(OV_OS_DEBIAN) + set(gflag_component nothreads_static) + endif() + find_package(gflags QUIET OPTIONAL_COMPONENTS ${gflag_component}) + endif() + + if(gflags_FOUND) + if(TARGET gflags) + # no extra steps + elseif(TARGET gflags_nothreads-static) + # Debian 9: gflag_component is ignored + set(gflags_target gflags_nothreads-static) + elseif(TARGET gflags_nothreads-shared) + # CentOS / RHEL / Fedora case + set(gflags_target gflags_nothreads-shared) + elseif(TARGET ${GFLAGS_TARGET}) + set(gflags_target ${GFLAGS_TARGET}) + else() + message(FATAL_ERROR "Internal error: failed to find imported target 'gflags' using '${gflag_component}' component") + endif() + + if(gflags_target) + if(OV_PkgConfig_VISILITY) + # need to set GLOBAL visibility in order to create ALIAS for this target + set_target_properties(${gflags_target} PROPERTIES IMPORTED_GLOBAL ON) + endif() + add_library(gflags ALIAS ${gflags_target}) + endif() + + message(STATUS "gflags (${gflags_VERSION}) is found at ${gflags_DIR} using '${gflag_component}' component") + endif() + + if(NOT TARGET gflags) + add_subdirectory(thirdparty/gflags EXCLUDE_FROM_ALL) + openvino_developer_export_targets(COMPONENT openvino_common TARGETS gflags) + endif() endif() # @@ -590,6 +635,9 @@ endif() if(CPACK_GENERATOR MATCHES "^(DEB|RPM|CONDA-FORGE|BREW|CONAN|VCPKG)$") # These libraries are dependencies for openvino-samples package if(ENABLE_SAMPLES OR ENABLE_TESTS) + if(NOT gflags_FOUND AND CPACK_GENERATOR MATCHES "^(DEB|RPM)$") + message(FATAL_ERROR "gflags must be used as a ${CPACK_GENERATOR} package. Install libgflags-dev / gflags-devel") + endif() 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()