Skip to content

Commit 3bfc1ae

Browse files
committed
cmake/crypto: use ExternalProject to build isal crypto library
instead of building isa-l_crypto source files directly into the ceph_crypto_isal plugin, use a cmake ExternalProject to build the library with make and expose the static library as cmake target ISAL::Crypto Signed-off-by: Casey Bodley <[email protected]>
1 parent 5e51a6e commit 3bfc1ae

File tree

2 files changed

+36
-24
lines changed

2 files changed

+36
-24
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# use an ExternalProject to build isa-l_crypto using its makefile
2+
function(build_isal_crypto)
3+
set(ISAL_CRYPTO_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/crypto/isa-l/isa-l_crypto)
4+
set(ISAL_CRYPTO_INCLUDE_DIR "${ISAL_CRYPTO_SOURCE_DIR}/include")
5+
set(ISAL_CRYPTO_LIBRARY "${ISAL_CRYPTO_SOURCE_DIR}/bin/isa-l_crypto.a")
6+
7+
include(FindMake)
8+
find_make("MAKE_EXECUTABLE" "make_cmd")
9+
10+
include(ExternalProject)
11+
ExternalProject_Add(isal_crypto_ext
12+
SOURCE_DIR ${ISAL_CRYPTO_SOURCE_DIR}
13+
CONFIGURE_COMMAND ""
14+
BUILD_COMMAND ${make_cmd} -f <SOURCE_DIR>/Makefile.unx
15+
BUILD_IN_SOURCE 1
16+
BUILD_BYPRODUCTS ${ISAL_CRYPTO_LIBRARY}
17+
INSTALL_COMMAND ""
18+
UPDATE_COMMAND ""
19+
LOG_CONFIGURE ON
20+
LOG_BUILD ON
21+
LOG_MERGED_STDOUTERR ON
22+
LOG_OUTPUT_ON_FAILURE ON)
23+
24+
# add imported library target ISAL::Crypto
25+
add_library(ISAL::Crypto STATIC IMPORTED GLOBAL)
26+
add_dependencies(ISAL::Crypto isal_crypto_ext)
27+
set_target_properties(ISAL::Crypto PROPERTIES
28+
INTERFACE_INCLUDE_DIRECTORIES ${ISAL_CRYPTO_INCLUDE_DIR}
29+
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
30+
IMPORTED_LOCATION ${ISAL_CRYPTO_LIBRARY})
31+
endfunction()

src/crypto/isa-l/CMakeLists.txt

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,17 @@
1-
set(isal_dir ${CMAKE_SOURCE_DIR}/src/crypto/isa-l/isa-l_crypto)
2-
set(CMAKE_ASM_FLAGS "-i ${isal_dir}/aes/ -i ${isal_dir}/include/ ${CMAKE_ASM_FLAGS}")
1+
# build isa-l_crypto from its makefile and expose as target ISAL::Crypto
2+
include(BuildISALCrypto)
3+
build_isal_crypto()
34

45
set(isal_crypto_plugin_srcs
56
isal_crypto_accel.cc
6-
isal_crypto_plugin.cc
7-
${isal_dir}/aes/cbc_pre.c
8-
${isal_dir}/aes/cbc_multibinary.asm
9-
${isal_dir}/aes/keyexp_128.asm
10-
${isal_dir}/aes/keyexp_192.asm
11-
${isal_dir}/aes/keyexp_256.asm
12-
${isal_dir}/aes/keyexp_multibinary.asm
13-
${isal_dir}/aes/cbc_dec_128_x4_sse.asm
14-
${isal_dir}/aes/cbc_dec_128_x8_avx.asm
15-
${isal_dir}/aes/cbc_dec_192_x4_sse.asm
16-
${isal_dir}/aes/cbc_dec_192_x8_avx.asm
17-
${isal_dir}/aes/cbc_dec_256_x4_sse.asm
18-
${isal_dir}/aes/cbc_dec_256_x8_avx.asm
19-
${isal_dir}/aes/cbc_enc_128_x4_sb.asm
20-
${isal_dir}/aes/cbc_enc_128_x8_sb.asm
21-
${isal_dir}/aes/cbc_enc_192_x4_sb.asm
22-
${isal_dir}/aes/cbc_enc_192_x8_sb.asm
23-
${isal_dir}/aes/cbc_enc_256_x4_sb.asm
24-
${isal_dir}/aes/cbc_enc_256_x8_sb.asm)
7+
isal_crypto_plugin.cc)
258

269
if(HAVE_NASM_X64)
2710
add_dependencies(crypto_plugins ceph_crypto_isal)
2811
endif(HAVE_NASM_X64)
2912

3013
add_library(ceph_crypto_isal SHARED ${isal_crypto_plugin_srcs})
31-
target_include_directories(ceph_crypto_isal PRIVATE ${isal_dir}/include)
32-
33-
target_link_libraries(ceph_crypto_isal PRIVATE Boost::context)
14+
target_link_libraries(ceph_crypto_isal PRIVATE ISAL::Crypto Boost::context)
3415

3516
set_target_properties(ceph_crypto_isal PROPERTIES
3617
VERSION 1.0.0

0 commit comments

Comments
 (0)