]> git.proxmox.com Git - ceph.git/blob - ceph/cmake/modules/FindQatDrv.cmake
import quincy 17.2.0
[ceph.git] / ceph / cmake / modules / FindQatDrv.cmake
1 # - Find_QatDrv
2 # Find the qat driver library and includes
3 #
4 # QatDrv_INCLUDE_DIRS = where to find cap.h, qae_mem.h, etc
5 # QatDrv_LIBRARIES - List of libraries when using qat driver
6 # QatDrv_FOUND - True if qat driver found
7
8 set(expected_version "v1.7.L.4.14.0-00031")
9 set(expected_version_url "https://www.intel.com/content/www/us/en/download/19081/intel-quickassist-technology-intel-qat-driver-for-linux-for-intel-server-boards-and-systems-based-on-intel-62x-chipset.html")
10
11 function(get_qatdrv_version versionfile)
12 file(STRINGS "${versionfile}" QAT_VERSION_LINE
13 REGEX "^PACKAGE_VERSION_MAJOR_NUMBER=[0-9]+$")
14 string(REGEX REPLACE "^PACKAGE_VERSION_MAJOR_NUMBER=([0-9]+)$"
15 "\\1" QAT_VERSION1 "${QAT_VERSION_LINE}")
16 unset(QAT_VERSION_LINE)
17 file(STRINGS "${versionfile}" QAT_VERSION_LINE
18 REGEX "^PACKAGE_VERSION_MINOR_NUMBER=[0-9]+$")
19 string(REGEX REPLACE "^PACKAGE_VERSION_MINOR_NUMBER=([0-9]+)$"
20 "\\1" QAT_VERSION2 "${QAT_VERSION_LINE}")
21 unset(QAT_VERSION_LINE)
22 file(STRINGS "${versionfile}" QAT_VERSION_LINE
23 REGEX "^PACKAGE_VERSION_PATCH_NUMBER=[0-9]+$")
24 string(REGEX REPLACE "^PACKAGE_VERSION_PATCH_NUMBER=([0-9]+)$"
25 "\\1" QAT_VERSION3 "${QAT_VERSION_LINE}")
26 unset(QAT_VERSION_LINE)
27 file(STRINGS "${versionfile}" QAT_VERSION_LINE
28 REGEX "^PACKAGE_VERSION_BUILD_NUMBER=[0-9]+$")
29 string(REGEX REPLACE "^PACKAGE_VERSION_BUILD_NUMBER=([0-9]+)$"
30 "\\1" QAT_VERSION4 "${QAT_VERSION_LINE}")
31
32 set(QatDrv_VERSION_MAJOR ${QAT_VERSION1} PARENT_SCOPE)
33 set(QatDrv_VERSION_MINOR ${QAT_VERSION2} PARENT_SCOPE)
34 set(QatDrv_VERSION_PATCH ${QAT_VERSION3} PARENT_SCOPE)
35 set(QatDrv_VERSION_TWEAK ${QAT_VERSION4} PARENT_SCOPE)
36 set(QatDrv_VERSION_COUNT 4 PARENT_SCOPE)
37 set(QatDrv_VERSION ${QAT_VERSION1}.${QAT_VERSION2}.${QAT_VERSION3}.${QAT_VERSION4}
38 PARENT_SCOPE)
39 endfunction()
40
41 find_path(QATDRV_INCLUDE_DIR
42 name quickassist/include/cpa.h
43 HINTS $ENV{ICP_ROOT} /opt/APP/driver/QAT
44 NO_DEFAULT_PATH)
45 if(QATDRV_INCLUDE_DIR)
46 get_qatdrv_version(${QATDRV_INCLUDE_DIR}/versionfile)
47 set(QatDrv_INCLUDE_DIRS
48 ${QATDRV_INCLUDE_DIR}/quickassist/include
49 ${QATDRV_INCLUDE_DIR}/quickassist/include/dc
50 ${QATDRV_INCLUDE_DIR}/quickassist/lookaside/access_layer/include
51 ${QATDRV_INCLUDE_DIR}/quickassist/include/lac
52 ${QATDRV_INCLUDE_DIR}/quickassist/utilities/libusdm_drv
53 ${QATDRV_INCLUDE_DIR}/quickassist/utilities/libusdm_drv/include)
54 endif()
55 foreach(component ${QatDrv_FIND_COMPONENTS})
56 find_library(QatDrv_${component}_LIBRARIES
57 NAMES ${component}
58 HINTS ${QATDRV_INCLUDE_DIR}/build/)
59 mark_as_advanced(QatDrv_INCLUDE_DIRS
60 QatDrv_${component}_LIBRARIES)
61 list(APPEND QatDrv_LIBRARIES "${QatDrv_${component}_LIBRARIES}")
62 endforeach()
63
64 set(failure_message "Please ensure QAT driver has been installed with version no less than ${expected_version}. And set the environment variable \"ICP_ROOT\" for the QAT driver package root directory, i.e. \"export ICP_ROOT=/the/directory/of/QAT\". Or download and install QAT driver ${expected_version} manually at the link ${expected_version_url}. Remember to set the environment variable \"ICP_ROOT\" for the package root directory.")
65
66 include(FindPackageHandleStandardArgs)
67 find_package_handle_standard_args(QatDrv
68 REQUIRED_VARS QatDrv_LIBRARIES QatDrv_INCLUDE_DIRS
69 VERSION_VAR QatDrv_VERSION
70 FAIL_MESSAGE ${failure_message})
71
72 foreach(component ${QatDrv_FIND_COMPONENTS})
73 if(NOT TARGET QatDrv::${component})
74 add_library(QatDrv::${component} STATIC IMPORTED GLOBAL)
75 set_target_properties(QatDrv::${component} PROPERTIES
76 INTERFACE_INCLUDE_DIRECTORIES "${QatDrv_INCLUDE_DIRS}"
77 IMPORTED_LINK_INTERFACE_LANGUAGES "C"
78 IMPORTED_LOCATION "${QatDrv_${component}_LIBRARIES}")
79 endif()
80 endforeach()