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 function(create_test_config)
6 set(abs_top_srcdir ${PROJECT_SOURCE_DIR})
7 set(abs_top_builddir ${PROJECT_BINARY_DIR})
8 set(EXEEXT ${CMAKE_EXECUTABLE_SUFFIX})
9
10 macro(set_configure_variable var conf_var)
11 if(${var})
12 set(${conf_var}_TRUE "")
13 else()
14 set(${conf_var}_TRUE "#")
15 endif()
16 endmacro()
17
18 set_configure_variable(ENABLE_WALLET ENABLE_WALLET)
19 set_configure_variable(BUILD_BENCH BUILD_BENCH)
20 set_configure_variable(BUILD_CLI BUILD_BITCOIN_CLI)
21 set_configure_variable(BUILD_TX BUILD_BITCOIN_TX)
22 set_configure_variable(BUILD_UTIL BUILD_BITCOIN_UTIL)
23 set_configure_variable(BUILD_UTIL_CHAINSTATE BUILD_BITCOIN_CHAINSTATE)
24 set_configure_variable(BUILD_WALLET_TOOL BUILD_BITCOIN_WALLET)
25 set_configure_variable(BUILD_DAEMON BUILD_BITCOIND)
26 set_configure_variable(BUILD_FUZZ_BINARY ENABLE_FUZZ_BINARY)
27 set_configure_variable(WITH_ZMQ ENABLE_ZMQ)
28 set_configure_variable(WITH_EMBEDDED_ASMAP ENABLE_EMBEDDED_ASMAP)
29 set_configure_variable(ENABLE_EXTERNAL_SIGNER ENABLE_EXTERNAL_SIGNER)
30 set_configure_variable(WITH_USDT ENABLE_USDT_TRACEPOINTS)
31 set_configure_variable(ENABLE_IPC ENABLE_IPC)
32
33 configure_file(config.ini.in config.ini USE_SOURCE_PERMISSIONS @ONLY)
34 endfunction()
35
36 create_test_config()
37
38
39 function(create_test_directory_links)
40 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/functional)
41 file(GLOB functional
42 LIST_DIRECTORIES FALSE
43 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
44 functional/*.html
45 functional/*.py
46 )
47
48 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/functional/data)
49 file(GLOB functional_data
50 LIST_DIRECTORIES FALSE
51 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
52 functional/data/*.json
53 functional/data/*.py
54 )
55
56 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/functional/mocks)
57 file(GLOB functional_mocks
58 LIST_DIRECTORIES FALSE
59 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
60 functional/mocks/*.py
61 )
62
63 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/functional/test_framework)
64 file(GLOB functional_test_framework
65 LIST_DIRECTORIES FALSE
66 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
67 functional/test_framework/*.csv
68 functional/test_framework/*.py
69 )
70
71 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/functional/test_framework/crypto)
72 file(GLOB functional_test_framework_crypto
73 LIST_DIRECTORIES FALSE
74 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
75 functional/test_framework/crypto/*.csv
76 functional/test_framework/crypto/*.py
77 )
78
79 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/fuzz)
80 set(files_to_link
81 ${functional}
82 ${functional_data}
83 ${functional_mocks}
84 ${functional_test_framework}
85 ${functional_test_framework_crypto}
86 fuzz/test_runner.py
87 )
88
89 foreach(f IN LISTS files_to_link)
90 if(CMAKE_HOST_WIN32)
91 set(symlink)
92 else()
93 set(symlink SYMBOLIC)
94 endif()
95 file(CREATE_LINK ${CMAKE_CURRENT_SOURCE_DIR}/${f} ${CMAKE_CURRENT_BINARY_DIR}/${f} COPY_ON_ERROR ${symlink})
96 endforeach()
97 endfunction()
98
99 create_test_directory_links()
100