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_ipc STATIC EXCLUDE_FROM_ALL
6 capnp/mining.cpp
7 capnp/protocol.cpp
8 interfaces.cpp
9 process.cpp
10 )
11
12 target_capnp_sources(bitcoin_ipc ${CMAKE_CURRENT_SOURCE_DIR}
13 capnp/common.capnp
14 capnp/echo.capnp
15 capnp/init.capnp
16 capnp/mining.capnp
17 capnp/rpc.capnp
18 )
19
20 target_link_libraries(bitcoin_ipc
21 PRIVATE
22 core_interface
23 univalue
24 Boost::headers
25 )
26
27 if(BUILD_TESTS)
28 # bitcoin_ipc_test library target is defined here in src/ipc/CMakeLists.txt
29 # instead of src/ipc/test/CMakeLists.txt so capnp files in src/ipc/test/ are able to
30 # reference capnp files in src/ipc/capnp/ by relative path. The Cap'n Proto
31 # compiler only allows importing by relative path when the importing and
32 # imported files are underneath the same compilation source prefix, so the
33 # source prefix must be src/ipc, not src/ipc/test/
34 add_library(bitcoin_ipc_test STATIC EXCLUDE_FROM_ALL
35 test/ipc_test.cpp
36 )
37 target_capnp_sources(bitcoin_ipc_test ${CMAKE_CURRENT_SOURCE_DIR}
38 test/ipc_test.capnp
39 )
40 add_dependencies(bitcoin_ipc_test bitcoin_ipc_headers)
41
42 target_link_libraries(bitcoin_ipc_test
43 PRIVATE
44 core_interface
45 univalue
46 Boost::headers
47 )
48 endif()
49
50 if (BUILD_FUZZ_BINARY)
51 add_library(bitcoin_ipc_fuzz STATIC EXCLUDE_FROM_ALL)
52 target_capnp_sources(bitcoin_ipc_fuzz ${CMAKE_CURRENT_SOURCE_DIR}
53 test/fuzz/ipc_fuzz.capnp
54 )
55 add_dependencies(bitcoin_ipc_fuzz bitcoin_ipc_headers)
56
57 target_link_libraries(bitcoin_ipc_fuzz
58 PRIVATE
59 core_interface
60 univalue
61 Boost::headers
62 )
63 endif()
64
65 configure_file(.clang-tidy.in .clang-tidy USE_SOURCE_PERMISSIONS COPYONLY)
66