@@ -8,6 +8,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
88
99add_subdirectory (crypto)
1010add_subdirectory (univalue)
11+ add_subdirectory (util)
1112
1213
1314# Stable, backwards-compatible consensus functionality 
@@ -27,3 +28,165 @@ add_library(bitcoin_consensus OBJECT EXCLUDE_FROM_ALL
2728  util/strencodings.cpp
2829)
2930target_link_libraries (bitcoin_consensus PRIVATE  secp256k1)
31+ 
32+ 
33+ # Home for common functionality shared by different executables and libraries. 
34+ # Similar to `bitcoin_util` library, but higher-level. 
35+ add_library (bitcoin_common STATIC  EXCLUDE_FROM_ALL 
36+   base58.cpp
37+   bech32.cpp
38+   chainparams.cpp
39+   coins.cpp
40+   common/bloom.cpp
41+   common/interfaces.cpp
42+   common/run_command.cpp
43+   $<$<TARGET_EXISTS:PkgConfig::libevent>:common/url.cpp>
44+   compressor.cpp
45+   core_read.cpp
46+   core_write.cpp
47+   deploymentinfo.cpp
48+   external_signer.cpp
49+   init/common.cpp
50+   key.cpp
51+   key_io.cpp
52+   merkleblock.cpp
53+   net_types.cpp
54+   netaddress.cpp
55+   netbase.cpp
56+   net_permissions.cpp
57+   outputtype.cpp
58+   policy /feerate.cpp
59+   policy /policy .cpp
60+   protocol.cpp
61+   psbt.cpp
62+   rpc/rawtransaction_util.cpp
63+   rpc/request.cpp
64+   rpc/external_signer.cpp
65+   rpc/util.cpp
66+   scheduler.cpp
67+   script/descriptor.cpp
68+   script/miniscript.cpp
69+   script/sign.cpp
70+   script/signingprovider.cpp
71+   script/standard.cpp
72+   warnings.cpp
73+ )
74+ target_link_libraries (bitcoin_common
75+   PRIVATE 
76+     bitcoin_consensus
77+     bitcoin_util
78+     univalue
79+     secp256k1
80+     Boost::boost
81+     $<TARGET_NAME_IF_EXISTS:PkgConfig::libevent>
82+ )
83+ 
84+ 
85+ # P2P and RPC server functionality used by `bitcoind` and `bitcoin-qt` executables. 
86+ add_library (bitcoin_node STATIC  EXCLUDE_FROM_ALL 
87+   addrdb.cpp
88+   addrman.cpp
89+   banman.cpp
90+   blockencodings.cpp
91+   blockfilter.cpp
92+   chain.cpp
93+   consensus/tx_verify.cpp
94+   dbwrapper.cpp
95+   deploymentstatus.cpp
96+   flatfile.cpp
97+   headerssync.cpp
98+   httprpc.cpp
99+   httpserver.cpp
100+   i2p.cpp
101+   index/base.cpp
102+   index/blockfilterindex.cpp
103+   index/coinstatsindex.cpp
104+   index/txindex.cpp
105+   init.cpp
106+   kernel/chain.cpp
107+   kernel/checks.cpp
108+   kernel/coinstats.cpp
109+   kernel/context.cpp
110+   kernel/cs_main.cpp
111+   kernel/mempool_persist.cpp
112+   mapport.cpp
113+   net.cpp
114+   netgroup.cpp
115+   net_processing.cpp
116+   node/blockstorage.cpp
117+   node/caches.cpp
118+   node/chainstate.cpp
119+   node/chainstatemanager_args.cpp
120+   node/coin.cpp
121+   node/connection_types.cpp
122+   node/context.cpp
123+   node/eviction.cpp
124+   node/interface_ui.cpp
125+   node/interfaces.cpp
126+   node/mempool_args.cpp
127+   node/mempool_persist_args.cpp
128+   node/miner.cpp
129+   node/minisketchwrapper.cpp
130+   node/psbt.cpp
131+   node/transaction.cpp
132+   node/txreconciliation.cpp
133+   node/utxo_snapshot.cpp
134+   node/validation_cache_args.cpp
135+   noui.cpp
136+   policy /fees.cpp
137+   policy /fees_args.cpp
138+   policy /packages.cpp
139+   policy /rbf.cpp
140+   policy /settings.cpp
141+   pow.cpp
142+   rest.cpp
143+   rpc/blockchain.cpp
144+   rpc/fees.cpp
145+   rpc/mempool.cpp
146+   rpc/mining.cpp
147+   rpc/net.cpp
148+   rpc/node.cpp
149+   rpc/output_script.cpp
150+   rpc/rawtransaction.cpp
151+   rpc/server.cpp
152+   rpc/server_util.cpp
153+   rpc/signmessage.cpp
154+   rpc/txoutproof.cpp
155+   script/sigcache.cpp
156+   shutdown.cpp
157+   signet.cpp
158+   timedata.cpp
159+   torcontrol.cpp
160+   txdb.cpp
161+   txmempool.cpp
162+   txorphanage.cpp
163+   txrequest.cpp
164+   validation.cpp
165+   validationinterface.cpp
166+   versionbits.cpp
167+ 
168+   dummywallet.cpp
169+ )
170+ target_link_libraries (bitcoin_node
171+   PRIVATE 
172+     bitcoin_common
173+     bitcoin_util
174+     leveldb
175+     minisketch
176+     univalue
177+     Boost::boost
178+     $<$<NOT :$<PLATFORM_ID:Windows>>:PkgConfig::libevent_pthreads>
179+ )
180+ 
181+ 
182+ # Bitcoin Core bitcoind. 
183+ if (BUILD_DAEMON)
184+   add_executable (bitcoind
185+     bitcoind.cpp
186+     init/bitcoind.cpp
187+   )
188+   target_link_libraries (bitcoind
189+     PRIVATE 
190+       bitcoin_node
191+   )
192+ endif ()
0 commit comments