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