2023-11-23 00:10:59 +00:00
|
|
|
function(build_qat)
|
2023-11-24 19:10:55 +00:00
|
|
|
set(QAT_BINARY_DIR ${CMAKE_BINARY_DIR}/src/qatlib)
|
|
|
|
set(QAT_INSTALL_DIR ${QAT_BINARY_DIR}/install)
|
2023-11-23 00:10:59 +00:00
|
|
|
set(QAT_INCLUDE_DIR ${QAT_INSTALL_DIR}/include)
|
|
|
|
set(QAT_LIBRARY_DIR ${QAT_INSTALL_DIR}/lib)
|
|
|
|
set(QAT_LIBRARY ${QAT_LIBRARY_DIR}/libqat.a)
|
|
|
|
set(QAT_USDM_LIBRARY ${QAT_LIBRARY_DIR}/libusdm.a)
|
|
|
|
|
|
|
|
# this include directory won't exist until the install step, but the
|
|
|
|
# imported targets need it early for INTERFACE_INCLUDE_DIRECTORIES
|
|
|
|
file(MAKE_DIRECTORY "${QAT_INCLUDE_DIR}")
|
|
|
|
|
|
|
|
set(configure_cmd env CC=${CMAKE_C_COMPILER} ./configure --prefix=${QAT_INSTALL_DIR})
|
|
|
|
# disable systemd or 'make install' tries to write /usr/lib/systemd/system/qat.service
|
|
|
|
list(APPEND configure_cmd --disable-systemd)
|
|
|
|
# build a static library with -fPIC that we can link into crypto/compressor plugins
|
|
|
|
list(APPEND configure_cmd --with-pic --enable-static --disable-shared)
|
|
|
|
|
|
|
|
# clear the DESTDIR environment variable from debian/rules,
|
|
|
|
# because it messes with the internal install paths of arrow's bundled deps
|
|
|
|
set(NO_DESTDIR_COMMAND ${CMAKE_COMMAND} -E env --unset=DESTDIR)
|
|
|
|
|
|
|
|
include(ExternalProject)
|
|
|
|
ExternalProject_Add(qatlib_ext
|
2023-11-24 19:10:55 +00:00
|
|
|
SOURCE_DIR "${PROJECT_SOURCE_DIR}/src/qatlib"
|
2023-11-23 00:10:59 +00:00
|
|
|
CONFIGURE_COMMAND ./autogen.sh COMMAND ${configure_cmd}
|
|
|
|
BUILD_COMMAND ${NO_DESTDIR_COMMAND} make -j3
|
|
|
|
BUILD_IN_SOURCE 1
|
|
|
|
BUILD_BYPRODUCTS ${QAT_LIBRARY} ${QAT_USDM_LIBRARY}
|
|
|
|
INSTALL_COMMAND ${NO_DESTDIR_COMMAND} make install
|
|
|
|
UPDATE_COMMAND ""
|
|
|
|
LOG_CONFIGURE ON
|
|
|
|
LOG_BUILD ON
|
|
|
|
LOG_INSTALL ON
|
|
|
|
LOG_MERGED_STDOUTERR ON
|
|
|
|
LOG_OUTPUT_ON_FAILURE ON)
|
|
|
|
|
|
|
|
# export vars for find_package(QAT)
|
|
|
|
set(QAT_LIBRARY ${QAT_LIBRARY} PARENT_SCOPE)
|
|
|
|
set(QAT_USDM_LIBRARY ${QAT_USDM_LIBRARY} PARENT_SCOPE)
|
|
|
|
set(QAT_INCLUDE_DIR ${QAT_INCLUDE_DIR} PARENT_SCOPE)
|
|
|
|
# library dir for BuildQATzip.cmake
|
|
|
|
set(QAT_LIBRARY_DIR ${QAT_LIBRARY_DIR} PARENT_SCOPE)
|
|
|
|
endfunction()
|