mirror of
https://github.com/ceph/ceph
synced 2025-03-11 02:39:05 +00:00
cmake: build qatzip from source when WITH_SYSTEM_QATZIP=OFF
Signed-off-by: Casey Bodley <cbodley@redhat.com>
This commit is contained in:
parent
74c437a0c8
commit
e4e7dfd472
@ -311,6 +311,7 @@ option(WITH_QATLIB "Enable QAT with qatlib" OFF)
|
||||
option(WITH_SYSTEM_QATLIB "Use system packages for qatlib" OFF)
|
||||
option(WITH_QATDRV "Enable QAT with out-of-tree driver" OFF)
|
||||
option(WITH_QATZIP "Enable QATzip" OFF)
|
||||
option(WITH_SYSTEM_QATZIP "Use system packages for QATzip" OFF)
|
||||
|
||||
if(WITH_QATDRV)
|
||||
find_package(QatDrv REQUIRED COMPONENTS qat_s usdm_drv_s)
|
||||
@ -329,7 +330,16 @@ elseif(WITH_QATLIB)
|
||||
endif()
|
||||
|
||||
if(WITH_QATZIP)
|
||||
if(NOT WITH_SYSTEM_QATZIP)
|
||||
include(BuildQATzip)
|
||||
build_qatzip()
|
||||
# qatzip build depends on qatlib
|
||||
add_dependencies(qatzip_ext QAT::qat)
|
||||
endif()
|
||||
find_package(QATzip REQUIRED)
|
||||
if(NOT WITH_SYSTEM_QATZIP)
|
||||
add_dependencies(QAT::zip qatzip_ext)
|
||||
endif()
|
||||
set(HAVE_QATZIP TRUE)
|
||||
endif(WITH_QATZIP)
|
||||
|
||||
|
56
cmake/modules/BuildQATzip.cmake
Normal file
56
cmake/modules/BuildQATzip.cmake
Normal file
@ -0,0 +1,56 @@
|
||||
function(build_qatzip)
|
||||
set(QATzip_REPO https://github.com/intel/qatzip.git)
|
||||
set(QATzip_TAG "v1.1.2")
|
||||
|
||||
set(QATzip_SOURCE_DIR ${CMAKE_BINARY_DIR}/src/qatzip)
|
||||
set(QATzip_INSTALL_DIR ${QATzip_SOURCE_DIR}/install)
|
||||
set(QATzip_INCLUDE_DIR ${QATzip_INSTALL_DIR}/include)
|
||||
set(QATzip_LIBRARY ${QATzip_INSTALL_DIR}/lib/libqatzip.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 "${QATzip_INCLUDE_DIR}")
|
||||
|
||||
set(configure_cmd env CC=${CMAKE_C_COMPILER} ./configure --prefix=${QATzip_INSTALL_DIR})
|
||||
# build a static library with -fPIC that we can link into crypto/compressor plugins
|
||||
list(APPEND configure_cmd --with-pic --enable-static --disable-shared)
|
||||
if(QATDRV_INCLUDE_DIR)
|
||||
list(APPEND configure_cmd --with-ICP_ROOT=${QATDRV_INCLUDE_DIR})
|
||||
endif()
|
||||
if(QAT_INCLUDE_DIR)
|
||||
list(APPEND configure_cmd CFLAGS=-I${QAT_INCLUDE_DIR})
|
||||
endif()
|
||||
if(QAT_LIBRARY_DIR)
|
||||
list(APPEND configure_cmd LDFLAGS=-L${QAT_LIBRARY_DIR})
|
||||
endif()
|
||||
|
||||
# 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)
|
||||
|
||||
set(source_dir_args
|
||||
SOURCE_DIR ${QATzip_SOURCE_DIR}
|
||||
GIT_REPOSITORY ${QATzip_REPO}
|
||||
GIT_TAG ${QATzip_TAG}
|
||||
GIT_SHALLOW TRUE
|
||||
GIT_CONFIG advice.detachedHead=false)
|
||||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(qatzip_ext
|
||||
${source_dir_args}
|
||||
CONFIGURE_COMMAND ./autogen.sh COMMAND ${configure_cmd}
|
||||
BUILD_COMMAND ${NO_DESTDIR_COMMAND} make -j3
|
||||
BUILD_IN_SOURCE 1
|
||||
BUILD_BYPRODUCTS ${QATzip_LIBRARY}
|
||||
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(QATzip)
|
||||
set(QATzip_LIBRARIES ${QATzip_LIBRARY} PARENT_SCOPE)
|
||||
set(QATzip_INCLUDE_DIR ${QATzip_INCLUDE_DIR} PARENT_SCOPE)
|
||||
set(QATzip_INTERFACE_LINK_LIBRARIES QAT::qat QAT::usdm LZ4::LZ4 PARENT_SCOPE)
|
||||
endfunction()
|
@ -27,6 +27,7 @@ if(QATzip_FOUND AND NOT TARGET QAT::zip)
|
||||
add_library(QAT::zip SHARED IMPORTED)
|
||||
set_target_properties(QAT::zip PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${QATzip_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "${QATzip_INTERFACE_LINK_LIBRARIES}"
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
||||
IMPORTED_LOCATION "${QATzip_LIBRARIES}")
|
||||
endif()
|
||||
|
Loading…
Reference in New Issue
Block a user