diff --git a/CMakeLists.txt b/CMakeLists.txt index 1433d923a4..8d17b0adba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -333,24 +333,6 @@ else() endif() endif() -# Metrics Library -get_filename_component(METRICS_LIBRARY_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party${BRANCH_DIR_SUFFIX}metrics_library" ABSOLUTE) -if(IS_DIRECTORY ${METRICS_LIBRARY_HEADERS_DIR}) - message(STATUS "Metrics Library dir: ${METRICS_LIBRARY_HEADERS_DIR}") - include_directories(${NEO_SOURCE_DIR}/third_party${BRANCH_DIR_SUFFIX}metrics_library) -else() - message(FATAL_ERROR "Metrics Library headers not available!") -endif() - -# Metrics Discovery -get_filename_component(METRICS_DISCOVERY_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party${BRANCH_DIR_SUFFIX}metrics_discovery" ABSOLUTE) -if(IS_DIRECTORY ${METRICS_DISCOVERY_HEADERS_DIR}) - message(STATUS "Metrics Discovery dir: ${METRICS_DISCOVERY_HEADERS_DIR}") - include_directories(${NEO_SOURCE_DIR}/third_party${BRANCH_DIR_SUFFIX}metrics_discovery) -else() - message(FATAL_ERROR "Metrics Discovery headers not available!") -endif() - if(NOT DEFINED KHRONOS_HEADERS_DIR) get_filename_component(DIR_tmp "${CMAKE_CURRENT_SOURCE_DIR}/third_party/opencl_headers" ABSOLUTE) if(IS_DIRECTORY ${DIR_tmp}) @@ -383,6 +365,9 @@ include(cmake/find_igc.cmake) # GmmLib detection include(cmake/find_gmmlib.cmake) +# Metrics detection +include(cmake/find_metrics.cmake) + # LibVA detection if(NOT DISABLE_LIBVA) if(UNIX) diff --git a/cmake/find_metrics.cmake b/cmake/find_metrics.cmake new file mode 100644 index 0000000000..caeb97a491 --- /dev/null +++ b/cmake/find_metrics.cmake @@ -0,0 +1,79 @@ +# +# Copyright (C) 2021 Intel Corporation +# +# SPDX-License-Identifier: MIT +# + +# DEPENDENCY DETECTION +function(dependency_detect COMPONENT_NAME DLL_NAME VAR_NAME REL_LOCATION IS_THIRD_PARTY) + if(DEFINED ${VAR_NAME}_DIR) + get_filename_component(LIBRARY_DIR "${${VAR_NAME}_DIR}" ABSOLUTE) + else() + get_filename_component(LIBRARY_DIR_tmp "${NEO_SOURCE_DIR}/${REL_LOCATION}" ABSOLUTE) + if(IS_DIRECTORY "${LIBRARY_DIR_tmp}") + set(LIBRARY_DIR "${LIBRARY_DIR_tmp}") + endif() + endif() + if(UNIX) + if(DEFINED LIBRARY_DIR) + if(IS_DIRECTORY "${LIBRARY_DIR}/lib/pkgconfig/") + set(__tmp_LIBDIR "lib") + elseif(IS_DIRECTORY "${LIBRARY_DIR}/${CMAKE_INSTALL_LIBDIR}/pkgconfig/") + set(__tmp_LIBDIR ${CMAKE_INSTALL_LIBDIR}) + endif() + endif() + + find_package(PkgConfig) + if(DEFINED __tmp_LIBDIR) + set(OLD_PKG_CONFIG_PATH $ENV{PKG_CONFIG_PATH}) + set(ENV{PKG_CONFIG_PATH} "${LIBRARY_DIR}/${__tmp_LIBDIR}/pkgconfig/") + endif() + pkg_check_modules(NEO__${VAR_NAME} ${DLL_NAME}) + if(DEFINED __tmp_LIBDIR) + set(ENV{PKG_CONFIG_PATH} ${OLD_PKG_CONFIG_PATH}) + endif() + + if(NEO__${VAR_NAME}_FOUND) + if(DEFINED __tmp_LIBDIR) + if(NOT NEO__${VAR_NAME}_INCLUDE_DIRS STREQUAL "") + string(REPLACE "${NEO__${VAR_NAME}_INCLUDEDIR}" "${LIBRARY_DIR}/include/${DLL_NAME}" NEO__${VAR_NAME}_INCLUDE_DIRS "${NEO__${VAR_NAME}_INCLUDE_DIRS}") + else() + set(NEO__${VAR_NAME}_INCLUDE_DIRS "${LIBRARY_DIR}/include") + endif() + endif() + + set(NEO__${VAR_NAME}_INCLUDE_DIR "${NEO__${VAR_NAME}_INCLUDE_DIRS}") + set(NEO__${VAR_NAME}_INCLUDE_DIR "${NEO__${VAR_NAME}_INCLUDE_DIRS}" PARENT_SCOPE) + + set(NEO__${VAR_NAME}_LIBRARIES ${NEO__${VAR_NAME}_LIBRARIES} PARENT_SCOPE) + + message(STATUS "${COMPONENT_NAME} include dirs: ${NEO__${VAR_NAME}_INCLUDE_DIR}") + + return() + endif() + else() + # Windows + endif() + + if(IS_THIRD_PARTY) + string(TOLOWER ${VAR_NAME} _VAR_NAME_LOWER) + get_filename_component(${VAR_NAME}_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party${BRANCH_DIR_SUFFIX}/${_VAR_NAME_LOWER}" ABSOLUTE) + if(IS_DIRECTORY ${${VAR_NAME}_HEADERS_DIR}) + message(STATUS "${COMPONENT_NAME} dir: ${${VAR_NAME}_HEADERS_DIR}") + set(NEO__${VAR_NAME}_INCLUDE_DIR "${${VAR_NAME}_HEADERS_DIR}" PARENT_SCOPE) + return() + endif() + endif() + + message(FATAL_ERROR "${COMPONENT_NAME} not found!") + +endfunction() + +# Metrics Library Detection +dependency_detect("Metrics Library" libigdml METRICS_LIBRARY "../metrics/library" TRUE) +include_directories("${NEO__METRICS_LIBRARY_INCLUDE_DIR}") + +# Metrics Discovery Detection +dependency_detect("Metrics Discovery" libmd METRICS_DISCOVERY "../metrics/discovery" TRUE) +include_directories("${NEO__METRICS_DISCOVERY_INCLUDE_DIR}") +