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