Files
compute-runtime/cmake/find_metrics.cmake
Grzegorz Choinski 5183de21fa fix finding metrics when found empty
Do not try to include empty directories, as cmake will not
explicitely return directiories, which would be searched
by compiler anyway. Such found should still be considered
as successful.

Signed-off-by: Grzegorz Choinski <grzegorz.choinski@intel.com>
2022-03-10 23:32:33 +01:00

84 lines
2.9 KiB
CMake

#
# Copyright (C) 2021-2022 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" 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)
if(NOT NEO__METRICS_LIBRARY_INCLUDE_DIR STREQUAL "")
include_directories("${NEO__METRICS_LIBRARY_INCLUDE_DIR}")
endif()
# Metrics Discovery Detection
dependency_detect("Metrics Discovery" libmd METRICS_DISCOVERY "../metrics/discovery" TRUE)
if(NOT NEO__METRICS_DISCOVERY_INCLUDE_DIR STREQUAL "")
include_directories("${NEO__METRICS_DISCOVERY_INCLUDE_DIR}")
endif()