mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-23 05:09:26 +02:00
cmake: Build test_bitcoin executable
This commit is contained in:
@@ -64,4 +64,15 @@ function(add_boost_if_needed)
|
||||
set(CMAKE_REQUIRED_DEFINITIONS)
|
||||
endif()
|
||||
|
||||
if(BUILD_TESTS)
|
||||
# Some package managers, such as vcpkg, vendor Boost.Test separately
|
||||
# from the rest of the headers, so we have to check for it individually.
|
||||
list(APPEND CMAKE_REQUIRED_DEFINITIONS -DBOOST_TEST_NO_MAIN)
|
||||
include(CheckIncludeFileCXX)
|
||||
check_include_file_cxx(boost/test/included/unit_test.hpp HAVE_BOOST_INCLUDED_UNIT_TEST_H)
|
||||
if(NOT HAVE_BOOST_INCLUDED_UNIT_TEST_H)
|
||||
message(FATAL_ERROR "Building test_bitcoin executable requested but boost/test/included/unit_test.hpp header not available.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
endfunction()
|
||||
|
||||
21
cmake/module/GenerateHeaders.cmake
Normal file
21
cmake/module/GenerateHeaders.cmake
Normal file
@@ -0,0 +1,21 @@
|
||||
# Copyright (c) 2023-present The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or https://opensource.org/license/mit/.
|
||||
|
||||
function(generate_header_from_json json_source_relpath)
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${json_source_relpath}.h
|
||||
COMMAND ${CMAKE_COMMAND} -DJSON_SOURCE_PATH=${CMAKE_CURRENT_SOURCE_DIR}/${json_source_relpath} -DHEADER_PATH=${CMAKE_CURRENT_BINARY_DIR}/${json_source_relpath}.h -P ${PROJECT_SOURCE_DIR}/cmake/script/GenerateHeaderFromJson.cmake
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${json_source_relpath} ${PROJECT_SOURCE_DIR}/cmake/script/GenerateHeaderFromJson.cmake
|
||||
VERBATIM
|
||||
)
|
||||
endfunction()
|
||||
|
||||
function(generate_header_from_raw raw_source_relpath)
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${raw_source_relpath}.h
|
||||
COMMAND ${CMAKE_COMMAND} -DRAW_SOURCE_PATH=${CMAKE_CURRENT_SOURCE_DIR}/${raw_source_relpath} -DHEADER_PATH=${CMAKE_CURRENT_BINARY_DIR}/${raw_source_relpath}.h -P ${PROJECT_SOURCE_DIR}/cmake/script/GenerateHeaderFromRaw.cmake
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${raw_source_relpath} ${PROJECT_SOURCE_DIR}/cmake/script/GenerateHeaderFromRaw.cmake
|
||||
VERBATIM
|
||||
)
|
||||
endfunction()
|
||||
24
cmake/script/GenerateHeaderFromJson.cmake
Normal file
24
cmake/script/GenerateHeaderFromJson.cmake
Normal file
@@ -0,0 +1,24 @@
|
||||
# Copyright (c) 2023-present The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or https://opensource.org/license/mit/.
|
||||
|
||||
file(READ ${JSON_SOURCE_PATH} hex_content HEX)
|
||||
string(REGEX MATCHALL "([A-Za-z0-9][A-Za-z0-9])" bytes "${hex_content}")
|
||||
|
||||
file(WRITE ${HEADER_PATH} "#include <string>\n")
|
||||
file(APPEND ${HEADER_PATH} "namespace json_tests{\n")
|
||||
get_filename_component(json_source_basename ${JSON_SOURCE_PATH} NAME_WE)
|
||||
file(APPEND ${HEADER_PATH} "static const std::string ${json_source_basename}{\n")
|
||||
|
||||
set(i 0)
|
||||
foreach(byte ${bytes})
|
||||
math(EXPR i "${i} + 1")
|
||||
math(EXPR remainder "${i} % 8")
|
||||
if(remainder EQUAL 0)
|
||||
file(APPEND ${HEADER_PATH} "0x${byte},\n")
|
||||
else()
|
||||
file(APPEND ${HEADER_PATH} "0x${byte}, ")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
file(APPEND ${HEADER_PATH} "\n};};")
|
||||
22
cmake/script/GenerateHeaderFromRaw.cmake
Normal file
22
cmake/script/GenerateHeaderFromRaw.cmake
Normal file
@@ -0,0 +1,22 @@
|
||||
# Copyright (c) 2023-present The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or https://opensource.org/license/mit/.
|
||||
|
||||
file(READ ${RAW_SOURCE_PATH} hex_content HEX)
|
||||
string(REGEX MATCHALL "([A-Za-z0-9][A-Za-z0-9])" bytes "${hex_content}")
|
||||
|
||||
get_filename_component(raw_source_basename ${RAW_SOURCE_PATH} NAME_WE)
|
||||
file(WRITE ${HEADER_PATH} "static unsigned const char ${raw_source_basename}_raw[] = {\n")
|
||||
|
||||
set(i 0)
|
||||
foreach(byte ${bytes})
|
||||
math(EXPR i "${i} + 1")
|
||||
math(EXPR remainder "${i} % 8")
|
||||
if(remainder EQUAL 0)
|
||||
file(APPEND ${HEADER_PATH} "0x${byte},\n")
|
||||
else()
|
||||
file(APPEND ${HEADER_PATH} "0x${byte}, ")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
file(APPEND ${HEADER_PATH} "\n};")
|
||||
Reference in New Issue
Block a user