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()