Skip to content

Commit 1fc6d39

Browse files
committed
cmake: Add add_executable_append_flags function
1 parent 8e2c7c2 commit 1fc6d39

File tree

8 files changed

+87
-100
lines changed

8 files changed

+87
-100
lines changed

cmake/module/AddTargetMacros.cmake

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,10 @@ function(add_library_append_flags name)
3232
endif()
3333
target_append_flags_interface("${name}")
3434
endfunction()
35+
36+
function(add_executable_append_flags name)
37+
cmake_parse_arguments(PARSE_ARGV 1 FWD "" "" "")
38+
add_executable("${name}" ${FWD_UNPARSED_ARGUMENTS})
39+
target_link_libraries("${name}" PRIVATE core_interface)
40+
target_append_flags_interface("${name}")
41+
endfunction()

src/CMakeLists.txt

Lines changed: 32 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -125,18 +125,18 @@ if(ENABLE_WALLET)
125125
add_subdirectory(wallet)
126126

127127
if(BUILD_WALLET_TOOL)
128-
add_executable(bitcoin-wallet
128+
add_executable_append_flags(bitcoin-wallet
129129
bitcoin-wallet.cpp
130130
init/bitcoin-wallet.cpp
131131
wallet/wallettool.cpp
132132
)
133133
add_windows_resources(bitcoin-wallet bitcoin-wallet-res.rc)
134134
target_link_libraries(bitcoin-wallet
135-
core_interface
136-
bitcoin_wallet
137-
bitcoin_common
138-
bitcoin_util
139-
Boost::headers
135+
PRIVATE
136+
bitcoin_wallet
137+
bitcoin_common
138+
bitcoin_util
139+
Boost::headers
140140
)
141141
list(APPEND installable_targets bitcoin-wallet)
142142
endif()
@@ -256,28 +256,28 @@ target_link_libraries(bitcoin_node
256256

257257
# Bitcoin Core bitcoind.
258258
if(BUILD_DAEMON)
259-
add_executable(bitcoind
259+
add_executable_append_flags(bitcoind
260260
bitcoind.cpp
261261
init/bitcoind.cpp
262262
)
263263
add_windows_resources(bitcoind bitcoind-res.rc)
264264
target_link_libraries(bitcoind
265-
core_interface
266-
bitcoin_node
267-
$<TARGET_NAME_IF_EXISTS:bitcoin_wallet>
265+
PRIVATE
266+
bitcoin_node
267+
$<TARGET_NAME_IF_EXISTS:bitcoin_wallet>
268268
)
269269
list(APPEND installable_targets bitcoind)
270270
endif()
271271
if(MULTIPROCESS)
272-
add_executable(bitcoin-node
272+
add_executable_append_flags(bitcoin-node
273273
bitcoind.cpp
274274
init/bitcoin-node.cpp
275275
)
276276
target_link_libraries(bitcoin-node
277-
core_interface
278-
bitcoin_node
279-
bitcoin_ipc
280-
$<TARGET_NAME_IF_EXISTS:bitcoin_wallet>
277+
PRIVATE
278+
bitcoin_node
279+
bitcoin_ipc
280+
$<TARGET_NAME_IF_EXISTS:bitcoin_wallet>
281281
)
282282
list(APPEND installable_targets bitcoin-node)
283283
endif()
@@ -295,39 +295,39 @@ target_link_libraries(bitcoin_cli
295295

296296
# Bitcoin Core RPC client
297297
if(BUILD_CLI)
298-
add_executable(bitcoin-cli bitcoin-cli.cpp)
298+
add_executable_append_flags(bitcoin-cli bitcoin-cli.cpp)
299299
add_windows_resources(bitcoin-cli bitcoin-cli-res.rc)
300300
target_link_libraries(bitcoin-cli
301-
core_interface
302-
bitcoin_cli
303-
bitcoin_common
304-
bitcoin_util
305-
libevent::libevent
301+
PRIVATE
302+
bitcoin_cli
303+
bitcoin_common
304+
bitcoin_util
305+
libevent::libevent
306306
)
307307
list(APPEND installable_targets bitcoin-cli)
308308
endif()
309309

310310

311311
if(BUILD_TX)
312-
add_executable(bitcoin-tx bitcoin-tx.cpp)
312+
add_executable_append_flags(bitcoin-tx bitcoin-tx.cpp)
313313
add_windows_resources(bitcoin-tx bitcoin-tx-res.rc)
314314
target_link_libraries(bitcoin-tx
315-
core_interface
316-
bitcoin_common
317-
bitcoin_util
318-
univalue
315+
PRIVATE
316+
bitcoin_common
317+
bitcoin_util
318+
univalue
319319
)
320320
list(APPEND installable_targets bitcoin-tx)
321321
endif()
322322

323323

324324
if(BUILD_UTIL)
325-
add_executable(bitcoin-util bitcoin-util.cpp)
325+
add_executable_append_flags(bitcoin-util bitcoin-util.cpp)
326326
add_windows_resources(bitcoin-util bitcoin-util-res.rc)
327327
target_link_libraries(bitcoin-util
328-
core_interface
329-
bitcoin_common
330-
bitcoin_util
328+
PRIVATE
329+
bitcoin_common
330+
bitcoin_util
331331
)
332332
list(APPEND installable_targets bitcoin-util)
333333
endif()
@@ -343,14 +343,8 @@ if(BUILD_KERNEL_LIB)
343343
endif()
344344

345345
if(BUILD_UTIL_CHAINSTATE)
346-
add_executable(bitcoin-chainstate
347-
bitcoin-chainstate.cpp
348-
)
349-
target_link_libraries(bitcoin-chainstate
350-
PRIVATE
351-
core_interface
352-
bitcoinkernel
353-
)
346+
add_executable_append_flags(bitcoin-chainstate bitcoin-chainstate.cpp)
347+
target_link_libraries(bitcoin-chainstate PRIVATE bitcoinkernel)
354348
endif()
355349

356350

src/bench/CMakeLists.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
include(GenerateHeaders)
66
generate_header_from_raw(data/block413567.raw)
77

8-
add_executable(bench_bitcoin
8+
add_executable_append_flags(bench_bitcoin
99
bench_bitcoin.cpp
1010
bench.cpp
1111
data.cpp
@@ -53,10 +53,10 @@ add_executable(bench_bitcoin
5353
)
5454

5555
target_link_libraries(bench_bitcoin
56-
core_interface
57-
test_util
58-
bitcoin_node
59-
Boost::headers
56+
PRIVATE
57+
test_util
58+
bitcoin_node
59+
Boost::headers
6060
)
6161

6262
if(ENABLE_WALLET)
@@ -69,7 +69,7 @@ if(ENABLE_WALLET)
6969
wallet_loading.cpp
7070
wallet_ismine.cpp
7171
)
72-
target_link_libraries(bench_bitcoin bitcoin_wallet)
72+
target_link_libraries(bench_bitcoin PRIVATE bitcoin_wallet)
7373
endif()
7474

7575
install(TARGETS bench_bitcoin

src/qt/CMakeLists.txt

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -187,41 +187,35 @@ if(QT_IS_STATIC)
187187
)
188188
endif()
189189

190-
add_executable(bitcoin-qt
190+
add_executable_append_flags(bitcoin-qt WIN32
191191
main.cpp
192192
../init/bitcoin-qt.cpp
193193
)
194194

195195
add_windows_resources(bitcoin-qt res/bitcoin-qt-res.rc)
196196

197197
target_link_libraries(bitcoin-qt
198-
core_interface
199-
bitcoinqt
200-
bitcoin_node
198+
PRIVATE
199+
bitcoinqt
200+
bitcoin_node
201201
)
202202

203203
import_plugins(bitcoin-qt)
204204
set(installable_targets bitcoin-qt)
205-
if(WIN32)
206-
set_target_properties(bitcoin-qt PROPERTIES WIN32_EXECUTABLE TRUE)
207-
endif()
208205

209206
if(MULTIPROCESS)
210-
add_executable(bitcoin-gui
207+
add_executable_append_flags(bitcoin-gui WIN32
211208
main.cpp
212209
../init/bitcoin-gui.cpp
213210
)
214211
target_link_libraries(bitcoin-gui
215-
core_interface
216-
bitcoinqt
217-
bitcoin_node
218-
bitcoin_ipc
212+
PRIVATE
213+
bitcoinqt
214+
bitcoin_node
215+
bitcoin_ipc
219216
)
220217
import_plugins(bitcoin-gui)
221218
list(APPEND installable_targets bitcoin-gui)
222-
if(WIN32)
223-
set_target_properties(bitcoin-gui PROPERTIES WIN32_EXECUTABLE TRUE)
224-
endif()
225219
endif()
226220

227221
install(TARGETS ${installable_targets}

src/qt/test/CMakeLists.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Distributed under the MIT software license, see the accompanying
33
# file COPYING or https://opensource.org/license/mit/.
44

5-
add_executable(test_bitcoin-qt
5+
add_executable_append_flags(test_bitcoin-qt
66
apptests.cpp
77
optiontests.cpp
88
rpcnestedtests.cpp
@@ -13,12 +13,12 @@ add_executable(test_bitcoin-qt
1313
)
1414

1515
target_link_libraries(test_bitcoin-qt
16-
core_interface
17-
bitcoinqt
18-
test_util
19-
bitcoin_node
20-
Boost::headers
21-
Qt5::Test
16+
PRIVATE
17+
bitcoinqt
18+
test_util
19+
bitcoin_node
20+
Boost::headers
21+
Qt5::Test
2222
)
2323

2424
import_plugins(test_bitcoin-qt)

src/test/CMakeLists.txt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ generate_header_from_json(data/tx_invalid.json)
1414
generate_header_from_json(data/tx_valid.json)
1515
generate_header_from_raw(data/asmap.raw)
1616

17-
add_executable(test_bitcoin
17+
add_executable_append_flags(test_bitcoin
1818
main.cpp
1919
$<TARGET_OBJECTS:bitcoin_consensus>
2020
${CMAKE_CURRENT_BINARY_DIR}/data/asmap.raw.h
@@ -140,13 +140,13 @@ add_executable(test_bitcoin
140140
)
141141

142142
target_link_libraries(test_bitcoin
143-
core_interface
144-
test_util
145-
bitcoin_cli
146-
bitcoin_node
147-
minisketch
148-
Boost::headers
149-
libevent::libevent
143+
PRIVATE
144+
test_util
145+
bitcoin_cli
146+
bitcoin_node
147+
minisketch
148+
Boost::headers
149+
libevent::libevent
150150
)
151151

152152
if(ENABLE_WALLET)
@@ -170,10 +170,10 @@ if(ENABLE_WALLET)
170170
../wallet/test/walletdb_tests.cpp
171171
../wallet/test/walletload_tests.cpp
172172
)
173-
target_link_libraries(test_bitcoin bitcoin_wallet)
174173
if(USE_BDB)
175174
target_sources(test_bitcoin PRIVATE ../wallet/test/db_tests.cpp)
176175
endif()
176+
target_link_libraries(test_bitcoin PRIVATE bitcoin_wallet)
177177
endif()
178178

179179
if(MULTIPROCESS)
@@ -191,7 +191,7 @@ if(MULTIPROCESS)
191191
PRIVATE
192192
ipc_tests.cpp
193193
)
194-
target_link_libraries(test_bitcoin bitcoin_ipc_test)
194+
target_link_libraries(test_bitcoin PRIVATE bitcoin_ipc_test)
195195
endif()
196196

197197
install(TARGETS test_bitcoin

src/test/fuzz/CMakeLists.txt

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
add_subdirectory(util)
66

7-
add_executable(fuzz
7+
add_executable_append_flags(fuzz
88
addition_overflow.cpp
99
addrman.cpp
1010
asmap.cpp
@@ -121,16 +121,16 @@ add_executable(fuzz
121121
versionbits.cpp
122122
)
123123
target_link_libraries(fuzz
124-
core_interface
125-
test_fuzz
126-
bitcoin_cli
127-
bitcoin_common
128-
minisketch
129-
leveldb
130-
univalue
131-
secp256k1
132-
Boost::headers
133-
libevent::libevent
124+
PRIVATE
125+
test_fuzz
126+
bitcoin_cli
127+
bitcoin_common
128+
minisketch
129+
leveldb
130+
univalue
131+
secp256k1
132+
Boost::headers
133+
libevent::libevent
134134
)
135135

136136
if(ENABLE_WALLET)
@@ -143,5 +143,5 @@ if(ENABLE_WALLET)
143143
$<$<BOOL:${USE_SQLITE}>:${PROJECT_SOURCE_DIR}/src/wallet/test/fuzz/notifications.cpp>
144144
$<$<BOOL:${USE_SQLITE}>:${PROJECT_SOURCE_DIR}/src/wallet/test/fuzz/scriptpubkeyman.cpp>
145145
)
146-
target_link_libraries(fuzz bitcoin_wallet)
146+
target_link_libraries(fuzz PRIVATE bitcoin_wallet)
147147
endif()

src/univalue/CMakeLists.txt

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,13 @@ target_include_directories(univalue
1414
)
1515

1616
if(BUILD_TESTS)
17-
add_executable(unitester test/unitester.cpp)
17+
add_executable_append_flags(unitester test/unitester.cpp)
1818
target_compile_definitions(unitester
1919
PRIVATE
2020
JSON_TEST_SRC=\"${CMAKE_CURRENT_SOURCE_DIR}/test\"
2121
)
22-
target_link_libraries(unitester
23-
PRIVATE
24-
core_interface
25-
univalue
26-
)
22+
target_link_libraries(unitester PRIVATE univalue)
2723

28-
add_executable(object test/object.cpp)
29-
target_link_libraries(object
30-
PRIVATE
31-
core_interface
32-
univalue
33-
)
24+
add_executable_append_flags(object test/object.cpp)
25+
target_link_libraries(object PRIVATE univalue)
3426
endif()

0 commit comments

Comments
 (0)