cgal/Installation/cmake/modules/FindITT.cmake

205 lines
5.3 KiB
CMake

# CGAL note: copy from https://raw.githubusercontent.com/dmitry-gurulev/cmake/104ca4a6c462e3d5a1c217571212238c6446cfca/FindITT.cmake
#
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#.rst:
# FindITT
# ---------
#
# Find Instrumentation and Tracing Technology (ITT) API include dirs and libraries
#
# Use this module by invoking find_package with the form
#
# ::
#
# find_package(ITT
# [REQUIRED] # Fail with error if ITT is not found
# )
#
# This module finds headers and libraries
# For the former case results are reported in variables
#
# ::
#
# ITT_FOUND - True if headers and requested libraries were found
# ITT_INCLUDE_DIRS - ITT include directories
# ITT_LIBRARIES - ITT libraries to be linked
#
# This module reads hints about search locations from variables
#
# ::
#
# SEAPI_ROOT - Preferred installation path for Intel® Single Event API (Intel® SEAPI)
# (https://github.com/intel/IntelSEAPI)
# ITT_ROOT/
# CMAKE_ITT_HOME - Preferred installation path for standalone ITT library
# INTEL_LIBITTNOTIFY32/
# INTEL_LIBITTNOTIFY64 - Preferred ITT library directory
# VTUNE_AMPLIFIER_<YEAR>_DIR - VTune Amplifier XE installation path which is set by amplxe-vars.sh/bat script
# See notes about [ITT_NO_VTUNE_PATH] below
# CMAKE_VTUNE_HOME - Explicitly defined VTune Amplifier XE installation path
#
# Other variables one may set to control this module are
#
# ::
#
# ITT_DEBUG - Set to ON to enable debug output from FindITT.
# Please enable this before filing any bug report.
# ITT_NO_VTUNE_PATH - Set to ON to not try to find VTUNE_AMPLIFIER_<YEAR>_DIR environment variable
#
# Example to find ITT headers and libraries
#
# ::
#
# find_package(ITT)
# if (ITT_FOUND)
# include_directories(${ITT_INCLUDE_DIRS})
# add_executable(foo foo.cc)
# target_link_libraries(foo ${ITT_LIBRARIES})
# endif()
#
# Example to find ITT library and use imported targets::
#
# ::
#
# find_package(ITT REQUIRED)
# add_executable(foo foo.cc)
# target_link_libraries(foo ITT::ITT)
unset (_itt_INC_DIR_HINT)
unset (_itt_LIB_DIR_HINT)
set (_itt_ARC "")
if (${CMAKE_CXX_COMPILER_ARCHITECTURE_ID} MATCHES "x86")
set (_itt_ARC "64")
elseif (${CMAKE_CXX_COMPILER_ARCHITECTURE_ID} MATCHES "x64")
set (_itt_ARC "64")
endif()
if ("x${_itt_ARC}" STREQUAL "x")
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
set (_itt_ARC "64")
else()
set (_itt_ARC "32")
endif()
endif()
list (APPEND _itt_INC_DIR_HINT
$ENV{ITT_ROOT}
$ENV{SEAPI_ROOT}/ittnotify
${CMAKE_ITT_HOME}
${CMAKE_VTUNE_HOME}
)
set (_itt_LIBITTNOTIFY $ENV{INTEL_LIBITTNOTIFY${_itt_ARC}})
if (_itt_LIBITTNOTIFY)
get_filename_component (_itt_LIB_DIR_HINT ${_itt_LIBITTNOTIFY} DIRECTORY)
get_filename_component (_itt_INC_DIR_HINT ${_itt_LIB_DIR_HINT} DIRECTORY)
endif()
list (APPEND _itt_INC_DIR_HINT
${_itt_INC_DIR_HINT}/ittnotify
)
if (NOT ITT_NO_VTUNE_PATH)
execute_process (COMMAND "${CMAKE_COMMAND}" "-E" "environment"
OUTPUT_VARIABLE _itt_ENV_LIST
)
string (REGEX MATCH "VTUNE_AMPLIFIER_[0-9]+_DIR"
_itt_VTUNE_DIR ${_itt_ENV_LIST}
)
endif()
if (_itt_VTUNE_DIR)
list (APPEND _itt_INC_DIR_HINT $ENV{${_itt_VTUNE_DIR}})
endif()
if (ITT_DEBUG)
message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
"_itt_INC_DIR_HINT = ${_itt_INC_DIR_HINT}")
endif()
find_path (ITT_INCLUDE_DIR
NAMES ittnotify.h
HINTS
${_itt_INC_DIR_HINT}
PATH_SUFFIXES
include
)
if (ITT_DEBUG)
message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
"ITT_INCLUDE_DIR = ${ITT_INCLUDE_DIR}")
endif()
if (ITT_DEBUG)
message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
"_itt_ARC = ${_itt_ARC}")
endif()
if (ITT_INCLUDE_DIR)
get_filename_component (_itt_INC_DIR_HINT ${ITT_INCLUDE_DIR} DIRECTORY)
list (APPEND _itt_LIB_DIR_HINT ${_itt_INC_DIR_HINT})
endif()
list (APPEND _itt_LIB_DIR_HINT
$ENV{ITT_ROOT}
$ENV{SEAPI_ROOT}
)
if (ITT_DEBUG)
message (STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
"_itt_LIB_DIR_HINT = ${_itt_LIB_DIR_HINT}")
endif()
find_library (ITT_LIBRARY
NAMES
libittnotify
libittnotify${_itt_ARC}
ittnotify
ittnotify${_itt_ARC}
HINTS
${_itt_LIB_DIR_HINT}
PATH_SUFFIXES
lib${_itt_ARC}
lib
bin
)
if (ITT_DEBUG)
message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
"ITT_LIBRARY = ${ITT_LIBRARY}")
endif()
# handle the QUIETLY and REQUIRED arguments and set MFX_FOUND to TRUE if
# all listed variables are TRUE
include (${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
FIND_PACKAGE_HANDLE_STANDARD_ARGS (ITT
REQUIRED_VARS ITT_INCLUDE_DIR ITT_LIBRARY
)
mark_as_advanced(ITT_INCLUDE_DIR ITT_LIBRARY)
if (ITT_FOUND)
set (ITT_INCLUDE_DIRS ${ITT_INCLUDE_DIR})
set (ITT_LIBRARIES ${ITT_LIBRARY})
if (NOT TARGET ITT::ITT)
add_library(ITT::ITT UNKNOWN IMPORTED)
set_target_properties(ITT::ITT PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${ITT_INCLUDE_DIRS}"
)
set_target_properties(ITT::ITT PROPERTIES
IMPORTED_LOCATION "${ITT_LIBRARIES}"
)
set_target_properties(ITT::ITT PROPERTIES
INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}"
)
endif()
endif()