@@ -28,3 +28,176 @@ add_library(bitcoin_consensus OBJECT EXCLUDE_FROM_ALL
2828 util/strencodings.cpp
2929)
3030target_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:libevent::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_compile_definitions (bitcoin_common
75+ PRIVATE
76+ ${THREAD_LOCAL_IF_AVAILABLE}
77+ )
78+ target_link_libraries (bitcoin_common
79+ PRIVATE
80+ bitcoin_consensus
81+ bitcoin_util
82+ univalue
83+ secp256k1
84+ Boost::headers
85+ $<TARGET_NAME_IF_EXISTS:libevent::libevent>
86+ )
87+
88+
89+ # P2P and RPC server functionality used by `bitcoind` and `bitcoin-qt` executables.
90+ add_library (bitcoin_node STATIC EXCLUDE_FROM_ALL
91+ addrdb.cpp
92+ addrman.cpp
93+ banman.cpp
94+ blockencodings.cpp
95+ blockfilter.cpp
96+ chain.cpp
97+ consensus/tx_verify.cpp
98+ dbwrapper.cpp
99+ deploymentstatus.cpp
100+ flatfile.cpp
101+ headerssync.cpp
102+ httprpc.cpp
103+ httpserver.cpp
104+ i2p.cpp
105+ index/base.cpp
106+ index/blockfilterindex.cpp
107+ index/coinstatsindex.cpp
108+ index/txindex.cpp
109+ init.cpp
110+ kernel/chain.cpp
111+ kernel/checks.cpp
112+ kernel/coinstats.cpp
113+ kernel/context.cpp
114+ kernel/cs_main.cpp
115+ kernel/mempool_persist.cpp
116+ mapport.cpp
117+ net.cpp
118+ netgroup.cpp
119+ net_processing.cpp
120+ node/blockstorage.cpp
121+ node/caches.cpp
122+ node/chainstate.cpp
123+ node/chainstatemanager_args.cpp
124+ node/coin.cpp
125+ node/coins_view_args.cpp
126+ node/connection_types.cpp
127+ node/context.cpp
128+ node/database_args.cpp
129+ node/eviction.cpp
130+ node/interface_ui.cpp
131+ node/interfaces.cpp
132+ node/mempool_args.cpp
133+ node/mempool_persist_args.cpp
134+ node/miner.cpp
135+ node/minisketchwrapper.cpp
136+ node/psbt.cpp
137+ node/transaction.cpp
138+ node/txreconciliation.cpp
139+ node/utxo_snapshot.cpp
140+ node/validation_cache_args.cpp
141+ noui.cpp
142+ policy /fees.cpp
143+ policy /fees_args.cpp
144+ policy /packages.cpp
145+ policy /rbf.cpp
146+ policy /settings.cpp
147+ pow.cpp
148+ rest.cpp
149+ rpc/blockchain.cpp
150+ rpc/fees.cpp
151+ rpc/mempool.cpp
152+ rpc/mining.cpp
153+ rpc/net.cpp
154+ rpc/node.cpp
155+ rpc/output_script.cpp
156+ rpc/rawtransaction.cpp
157+ rpc/server.cpp
158+ rpc/server_util.cpp
159+ rpc/signmessage.cpp
160+ rpc/txoutproof.cpp
161+ script/sigcache.cpp
162+ shutdown.cpp
163+ signet.cpp
164+ timedata.cpp
165+ torcontrol.cpp
166+ txdb.cpp
167+ txmempool.cpp
168+ txorphanage.cpp
169+ txrequest.cpp
170+ validation.cpp
171+ validationinterface.cpp
172+ versionbits.cpp
173+
174+ dummywallet.cpp
175+ )
176+ target_link_libraries (bitcoin_node
177+ PRIVATE
178+ bitcoin_common
179+ bitcoin_util
180+ leveldb
181+ minisketch
182+ univalue
183+ Boost::headers
184+ libevent::libevent
185+ $<TARGET_NAME_IF_EXISTS:PkgConfig::libevent_pthreads>
186+ )
187+
188+
189+ # Bitcoin Core bitcoind.
190+ if (BUILD_DAEMON)
191+ add_executable (bitcoind
192+ bitcoind.cpp
193+ init/bitcoind.cpp
194+ )
195+ target_link_libraries (bitcoind
196+ PRIVATE
197+ bitcoin_node
198+ )
199+ target_link_options (bitcoind
200+ PRIVATE
201+ $<$<BOOL :${MINGW} >:-static >
202+ )
203+ endif ()
0 commit comments