cmake: replace BuildQatDrv.cmake with FindQatDrv.cmake

because QAT driver with version v1.7.l.4.14.0 or higher cannot be dowmloaded
directly by URL, FindQatDrv.cmake can find the locally installed QAT package and libraries

Signed-off-by: Miaomiao Liu <miaomiao.liu@intel.com>
Signed-off-by: Hualong Feng <hualong.feng@intel.com>
This commit is contained in:
Miaomiao Liu 2022-01-14 13:40:11 +08:00
parent 21a4254d0e
commit 082dcf0a58
3 changed files with 86 additions and 33 deletions

View File

@ -270,6 +270,12 @@ endif()
option(WITH_BLUEFS "libbluefs library" OFF)
option(WITH_QAT "Enable Qat driver" OFF)
if(WITH_QAT)
find_package(QatDrv REQUIRED COMPONENTS qat_s usdm_drv_s)
set(HAVE_QATDRV $(QatDrv_FOUND))
endif()
option(WITH_QATZIP "Enable QATZIP" OFF)
if(WITH_QATZIP)
find_package(qatzip REQUIRED)

View File

@ -1,33 +0,0 @@
##
# Make file for QAT linux driver project
##
set(qatdrv_root_dir "${CMAKE_BINARY_DIR}/qatdrv")
set(qatdrv_url "https://01.org/sites/default/files/downloads/intelr-quickassist-technology/qat1.7.l.4.2.0-00012.tar.gz")
set(qatdrv_url_hash "SHA256=47990b3283ded748799dba42d4b0e1bdc0be3cf3978bd587533cd12788b03856")
set(qatdrv_config_args "--enable-qat-uio")
include(ExternalProject)
ExternalProject_Add(QatDrv
URL ${qatdrv_url}
URL_HASH ${qatdrv_url_hash}
CONFIGURE_COMMAND ${qatdrv_env} ./configure ${qatdrv_config_args}
# Temporarily forcing single thread as multi-threaded make is causing build
# failues.
BUILD_COMMAND make -j1 quickassist-all
BUILD_IN_SOURCE 1
INSTALL_COMMAND ""
TEST_COMMAND ""
PREFIX ${qatdrv_root_dir})
set(QatDrv_INCLUDE_DIRS
${qatdrv_root_dir}/src/QatDrv/quickassist/include
${qatdrv_root_dir}/src/QatDrv/quickassist/lookaside/access_layer/include
${qatdrv_root_dir}/src/QatDrv/quickassist/include/lac
${qatdrv_root_dir}/src/QatDrv/quickassist/utilities/libusdm_drv
${qatdrv_root_dir}/src/QatDrv/quickassist/utilities/libusdm_drv/linux/include)
set(QatDrv_LIBRARIES
${qatdrv_root_dir}/src/QatDrv/build/libqat_s.so
${qatdrv_root_dir}/src/QatDrv/build/libusdm_drv_s.so)

View File

@ -0,0 +1,80 @@
# - Find_QatDrv
# Find the qat driver library and includes
#
# QatDrv_INCLUDE_DIRS = where to find cap.h, qae_mem.h, etc
# QatDrv_LIBRARIES - List of libraries when using qat driver
# QatDrv_FOUND - True if qat driver found
set(expected_version "v1.7.L.4.14.0-00031")
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")
function(get_qatdrv_version versionfile)
file(STRINGS "${versionfile}" QAT_VERSION_LINE
REGEX "^PACKAGE_VERSION_MAJOR_NUMBER=[0-9]+$")
string(REGEX REPLACE "^PACKAGE_VERSION_MAJOR_NUMBER=([0-9]+)$"
"\\1" QAT_VERSION1 "${QAT_VERSION_LINE}")
unset(QAT_VERSION_LINE)
file(STRINGS "${versionfile}" QAT_VERSION_LINE
REGEX "^PACKAGE_VERSION_MINOR_NUMBER=[0-9]+$")
string(REGEX REPLACE "^PACKAGE_VERSION_MINOR_NUMBER=([0-9]+)$"
"\\1" QAT_VERSION2 "${QAT_VERSION_LINE}")
unset(QAT_VERSION_LINE)
file(STRINGS "${versionfile}" QAT_VERSION_LINE
REGEX "^PACKAGE_VERSION_PATCH_NUMBER=[0-9]+$")
string(REGEX REPLACE "^PACKAGE_VERSION_PATCH_NUMBER=([0-9]+)$"
"\\1" QAT_VERSION3 "${QAT_VERSION_LINE}")
unset(QAT_VERSION_LINE)
file(STRINGS "${versionfile}" QAT_VERSION_LINE
REGEX "^PACKAGE_VERSION_BUILD_NUMBER=[0-9]+$")
string(REGEX REPLACE "^PACKAGE_VERSION_BUILD_NUMBER=([0-9]+)$"
"\\1" QAT_VERSION4 "${QAT_VERSION_LINE}")
set(QatDrv_VERSION_MAJOR ${QAT_VERSION1} PARENT_SCOPE)
set(QatDrv_VERSION_MINOR ${QAT_VERSION2} PARENT_SCOPE)
set(QatDrv_VERSION_PATCH ${QAT_VERSION3} PARENT_SCOPE)
set(QatDrv_VERSION_TWEAK ${QAT_VERSION4} PARENT_SCOPE)
set(QatDrv_VERSION_COUNT 4 PARENT_SCOPE)
set(QatDrv_VERSION ${QAT_VERSION1}.${QAT_VERSION2}.${QAT_VERSION3}.${QAT_VERSION4}
PARENT_SCOPE)
endfunction()
find_path(QATDRV_INCLUDE_DIR
name quickassist/include/cpa.h
HINTS $ENV{ICP_ROOT} /opt/APP/driver/QAT
NO_DEFAULT_PATH)
if(QATDRV_INCLUDE_DIR)
get_qatdrv_version(${QATDRV_INCLUDE_DIR}/versionfile)
set(QatDrv_INCLUDE_DIRS
${QATDRV_INCLUDE_DIR}/quickassist/include
${QATDRV_INCLUDE_DIR}/quickassist/include/dc
${QATDRV_INCLUDE_DIR}/quickassist/lookaside/access_layer/include
${QATDRV_INCLUDE_DIR}/quickassist/include/lac
${QATDRV_INCLUDE_DIR}/quickassist/utilities/libusdm_drv
${QATDRV_INCLUDE_DIR}/quickassist/utilities/libusdm_drv/include)
endif()
foreach(component ${QatDrv_FIND_COMPONENTS})
find_library(QatDrv_${component}_LIBRARIES
NAMES ${component}
HINTS ${QATDRV_INCLUDE_DIR}/build/)
mark_as_advanced(QatDrv_INCLUDE_DIRS
QatDrv_${component}_LIBRARIES)
list(APPEND QatDrv_LIBRARIES "${QatDrv_${component}_LIBRARIES}")
endforeach()
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.")
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(QatDrv
REQUIRED_VARS QatDrv_LIBRARIES QatDrv_INCLUDE_DIRS
VERSION_VAR QatDrv_VERSION
FAIL_MESSAGE ${failure_message})
foreach(component ${QatDrv_FIND_COMPONENTS})
if(NOT TARGET QatDrv::${component})
add_library(QatDrv::${component} STATIC IMPORTED GLOBAL)
set_target_properties(QatDrv::${component} PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${QatDrv_INCLUDE_DIRS}"
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
IMPORTED_LOCATION "${QatDrv_${component}_LIBRARIES}")
endif()
endforeach()