|
| 1 | +function(build_qat) |
| 2 | + set(QAT_BINARY_DIR ${CMAKE_BINARY_DIR}/src/qatlib) |
| 3 | + set(QAT_INSTALL_DIR ${QAT_BINARY_DIR}/install) |
| 4 | + set(QAT_INCLUDE_DIR ${QAT_INSTALL_DIR}/include) |
| 5 | + set(QAT_LIBRARY_DIR ${QAT_INSTALL_DIR}/lib) |
| 6 | + set(QAT_LIBRARY ${QAT_LIBRARY_DIR}/libqat.a) |
| 7 | + set(QAT_USDM_LIBRARY ${QAT_LIBRARY_DIR}/libusdm.a) |
| 8 | + |
| 9 | + # this include directory won't exist until the install step, but the |
| 10 | + # imported targets need it early for INTERFACE_INCLUDE_DIRECTORIES |
| 11 | + file(MAKE_DIRECTORY "${QAT_INCLUDE_DIR}") |
| 12 | + |
| 13 | + set(configure_cmd env CC=${CMAKE_C_COMPILER} ./configure --prefix=${QAT_INSTALL_DIR}) |
| 14 | + # disable systemd or 'make install' tries to write /usr/lib/systemd/system/qat.service |
| 15 | + list(APPEND configure_cmd --disable-systemd) |
| 16 | + # build a static library with -fPIC that we can link into crypto/compressor plugins |
| 17 | + list(APPEND configure_cmd --with-pic --enable-static --disable-shared) |
| 18 | + |
| 19 | + # clear the DESTDIR environment variable from debian/rules, |
| 20 | + # because it messes with the internal install paths of arrow's bundled deps |
| 21 | + set(NO_DESTDIR_COMMAND ${CMAKE_COMMAND} -E env --unset=DESTDIR) |
| 22 | + |
| 23 | + include(ExternalProject) |
| 24 | + ExternalProject_Add(qatlib_ext |
| 25 | + SOURCE_DIR "${PROJECT_SOURCE_DIR}/src/qatlib" |
| 26 | + CONFIGURE_COMMAND ./autogen.sh COMMAND ${configure_cmd} |
| 27 | + BUILD_COMMAND ${NO_DESTDIR_COMMAND} make -j3 |
| 28 | + BUILD_IN_SOURCE 1 |
| 29 | + BUILD_BYPRODUCTS ${QAT_LIBRARY} ${QAT_USDM_LIBRARY} |
| 30 | + INSTALL_COMMAND ${NO_DESTDIR_COMMAND} make install |
| 31 | + UPDATE_COMMAND "" |
| 32 | + LOG_CONFIGURE ON |
| 33 | + LOG_BUILD ON |
| 34 | + LOG_INSTALL ON |
| 35 | + LOG_MERGED_STDOUTERR ON |
| 36 | + LOG_OUTPUT_ON_FAILURE ON) |
| 37 | + |
| 38 | + # export vars for find_package(QAT) |
| 39 | + set(QAT_LIBRARY ${QAT_LIBRARY} PARENT_SCOPE) |
| 40 | + set(QAT_USDM_LIBRARY ${QAT_USDM_LIBRARY} PARENT_SCOPE) |
| 41 | + set(QAT_INCLUDE_DIR ${QAT_INCLUDE_DIR} PARENT_SCOPE) |
| 42 | + # library dir for BuildQATzip.cmake |
| 43 | + set(QAT_LIBRARY_DIR ${QAT_LIBRARY_DIR} PARENT_SCOPE) |
| 44 | +endfunction() |
0 commit comments