CMakeLists.txt raw
1 # Copyright (c) 2023-present The Limenka developers
2 # Distributed under the MIT software license, see the accompanying
3 # file COPYING or https://opensource.org/license/mit/.
4
5 add_library(limenka_crypto STATIC EXCLUDE_FROM_ALL
6 aes.cpp
7 bignum.cpp
8 bulletproofs.cpp
9 chacha20.cpp
10 chacha20poly1305.cpp
11 hex_base.cpp
12 hkdf_sha256_32.cpp
13 hmac_sha256.cpp
14 hmac_sha512.cpp
15 muhash.cpp
16 poly1305.cpp
17 ripemd160.cpp
18 sha1.cpp
19 sha256.cpp
20 sha256_sse4.cpp
21 sha3.cpp
22 sha512.cpp
23 siphash.cpp
24 ../support/cleanse.cpp
25 )
26
27 target_link_libraries(limenka_crypto
28 PRIVATE
29 core_interface
30 )
31
32 if(HAVE_SSE41)
33 target_compile_definitions(limenka_crypto PRIVATE ENABLE_SSE41)
34 target_sources(limenka_crypto PRIVATE sha256_sse41.cpp)
35 set_property(SOURCE sha256_sse41.cpp PROPERTY
36 COMPILE_OPTIONS ${SSE41_CXXFLAGS}
37 )
38 endif()
39
40 if(HAVE_AVX2)
41 target_compile_definitions(limenka_crypto PRIVATE ENABLE_AVX2)
42 target_sources(limenka_crypto PRIVATE sha256_avx2.cpp)
43 set_property(SOURCE sha256_avx2.cpp PROPERTY
44 COMPILE_OPTIONS ${AVX2_CXXFLAGS}
45 )
46 endif()
47
48 if(HAVE_SSE41 AND HAVE_X86_SHANI)
49 target_compile_definitions(limenka_crypto PRIVATE ENABLE_SSE41 ENABLE_X86_SHANI)
50 target_sources(limenka_crypto PRIVATE sha256_x86_shani.cpp)
51 set_property(SOURCE sha256_x86_shani.cpp PROPERTY
52 COMPILE_OPTIONS ${SSE41_CXXFLAGS} ${X86_SHANI_CXXFLAGS}
53 )
54 endif()
55
56 if(HAVE_ARM_SHANI)
57 target_compile_definitions(limenka_crypto PRIVATE ENABLE_ARM_SHANI)
58 target_sources(limenka_crypto PRIVATE sha256_arm_shani.cpp)
59 set_property(SOURCE sha256_arm_shani.cpp PROPERTY
60 COMPILE_OPTIONS ${ARM_SHANI_CXXFLAGS}
61 )
62 endif()
63
64 if(ENABLE_POWER8)
65 target_compile_definitions(limenka_crypto PRIVATE
66 ENABLE_POWER8
67 $<IF:$<STREQUAL:${CMAKE_CXX_BYTE_ORDER},BIG_ENDIAN>,WORDS_BIGENDIAN,>
68 )
69 target_sources(limenka_crypto PRIVATE sha256_power8.cpp)
70 set_property(SOURCE sha256_power8.cpp PROPERTY
71 COMPILE_OPTIONS ${POWER8_CXXFLAGS}
72 )
73 endif()
74