File tree Expand file tree Collapse file tree 5 files changed +88
-0
lines changed Expand file tree Collapse file tree 5 files changed +88
-0
lines changed Original file line number Diff line number Diff line change @@ -155,6 +155,15 @@ if(WITH_QRENCODE)
155
155
endif ()
156
156
157
157
cmake_dependent_option (WITH_DBUS "Enable DBus support." ON "CMAKE_SYSTEM_NAME STREQUAL \" Linux\" AND BUILD_GUI" OFF )
158
+
159
+ option (WITH_MULTIPROCESS "Build multiprocess bitcoin-node and bitcoin-gui executables in addition to monolithic bitcoind and bitcoin-qt executables. Requires libmultiprocess library. Experimental." OFF )
160
+ if (WITH_MULTIPROCESS )
161
+ find_package (Libmultiprocess COMPONENTS Lib )
162
+ find_package (LibmultiprocessNative COMPONENTS Bin
163
+ NAMES Libmultiprocess
164
+ )
165
+ endif ()
166
+
158
167
cmake_dependent_option (BUILD_GUI_TESTS "Build test_bitcoin-qt executable." ON "BUILD_GUI;BUILD_TESTS" OFF )
159
168
if (BUILD_GUI )
160
169
set (qt_components Core Gui Widgets LinguistTools )
@@ -495,7 +504,14 @@ message("Configure summary")
495
504
message ("=================" )
496
505
message ("Executables:" )
497
506
message (" bitcoind ............................ ${BUILD_DAEMON} " )
507
+ message (" bitcoin-node (multiprocess) ......... ${WITH_MULTIPROCESS} " )
498
508
message (" bitcoin-qt (GUI) .................... ${BUILD_GUI} " )
509
+ if (BUILD_GUI AND WITH_MULTIPROCESS )
510
+ set (bitcoin_gui_status ON )
511
+ else ()
512
+ set (bitcoin_gui_status OFF )
513
+ endif ()
514
+ message (" bitcoin-gui (GUI, multiprocess) ..... ${bitcoin_gui_status} " )
499
515
message (" bitcoin-cli ......................... ${BUILD_CLI} " )
500
516
message (" bitcoin-tx .......................... ${BUILD_TX} " )
501
517
message (" bitcoin-util ........................ ${BUILD_UTIL} " )
Original file line number Diff line number Diff line change @@ -31,6 +31,9 @@ add_dependencies(bitcoin_clientversion generate_build_info)
31
31
add_subdirectory (crypto )
32
32
add_subdirectory (univalue )
33
33
add_subdirectory (util )
34
+ if (WITH_MULTIPROCESS )
35
+ add_subdirectory (ipc )
36
+ endif ()
34
37
35
38
#=============================
36
39
# secp256k1 subtree
@@ -297,6 +300,18 @@ if(BUILD_DAEMON)
297
300
$< TARGET_NAME_IF_EXISTS:bitcoin_wallet>
298
301
)
299
302
endif ()
303
+ if (WITH_MULTIPROCESS )
304
+ add_executable (bitcoin-node
305
+ bitcoind.cpp
306
+ init/bitcoin-node.cpp
307
+ )
308
+ target_link_libraries (bitcoin-node
309
+ core_interface
310
+ bitcoin_node
311
+ bitcoin_ipc
312
+ $< TARGET_NAME_IF_EXISTS:bitcoin_wallet>
313
+ )
314
+ endif ()
300
315
301
316
302
317
add_library (bitcoin_cli STATIC EXCLUDE_FROM_ALL
Original file line number Diff line number Diff line change
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/protocol.cpp
7
+ interfaces.cpp
8
+ process.cpp
9
+ )
10
+
11
+ target_capnp_sources (bitcoin_ipc ${PROJECT_SOURCE_DIR}
12
+ capnp/echo.capnp capnp/init.capnp
13
+ )
14
+
15
+ target_link_libraries (bitcoin_ipc
16
+ PRIVATE
17
+ core_interface
18
+ )
Original file line number Diff line number Diff line change @@ -243,6 +243,23 @@ if(WIN32)
243
243
set_target_properties (bitcoin-qt PROPERTIES WIN32_EXECUTABLE TRUE )
244
244
endif ()
245
245
246
+ if (WITH_MULTIPROCESS )
247
+ add_executable (bitcoin-gui
248
+ main.cpp
249
+ ../init/bitcoin-gui.cpp
250
+ )
251
+ target_link_libraries (bitcoin-gui
252
+ core_interface
253
+ bitcoinqt
254
+ bitcoin_node
255
+ bitcoin_ipc
256
+ )
257
+ import_plugins (bitcoin-gui )
258
+ if (WIN32 )
259
+ set_target_properties (bitcoin-gui PROPERTIES WIN32_EXECUTABLE TRUE )
260
+ endif ()
261
+ endif ()
262
+
246
263
if (BUILD_GUI_TESTS )
247
264
add_subdirectory (test )
248
265
endif ()
Original file line number Diff line number Diff line change @@ -158,6 +158,28 @@ if(ENABLE_WALLET)
158
158
add_subdirectory (${PROJECT_SOURCE_DIR} /src/wallet/test wallet )
159
159
endif ()
160
160
161
+ if (WITH_MULTIPROCESS )
162
+ add_library (bitcoin_ipc_test STATIC EXCLUDE_FROM_ALL
163
+ ipc_test.cpp
164
+ )
165
+
166
+ target_capnp_sources (bitcoin_ipc_test ${PROJECT_SOURCE_DIR}
167
+ ipc_test.capnp
168
+ )
169
+
170
+ target_link_libraries (bitcoin_ipc_test
171
+ PRIVATE
172
+ core_interface
173
+ univalue
174
+ )
175
+
176
+ target_sources (test_bitcoin
177
+ PRIVATE
178
+ ipc_tests.cpp
179
+ )
180
+ target_link_libraries (test_bitcoin bitcoin_ipc_test )
181
+ endif ()
182
+
161
183
function (add_boost_test source_file )
162
184
if (NOT EXISTS ${source_file} )
163
185
return ()
You can’t perform that action at this time.
0 commit comments