/ test / CMakeLists.txt
CMakeLists.txt
 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()