diff --git a/src/bench/CMakeLists.txt b/src/bench/CMakeLists.txt --- a/src/bench/CMakeLists.txt +++ b/src/bench/CMakeLists.txt @@ -2,6 +2,31 @@ project(bitcoin-bench) +set(BENCH_DATA_RAW_FILES + data/block413567.raw +) + +foreach(_raw_file ${BENCH_DATA_RAW_FILES}) + string(APPEND + _generated_header_output + "${CMAKE_CURRENT_BINARY_DIR}/${_raw_file}" ".h" + ) + + list(APPEND BENCH_DATA_GENERATED_HEADERS ${_generated_header_output}) + + add_custom_command( + OUTPUT "${_generated_header_output}" + COMMAND + "data/convert-raw-to-header.sh" + "${_raw_file}" > "${_generated_header_output}" + COMMENT "Transforming raw file ${_raw_file} into header" + MAIN_DEPEDENCY "${_raw_file}" + DEPENDS "data/convert-raw-to-header.sh" + VERBATIM + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + ) +endforeach() + add_executable(bitcoin-bench EXCLUDE_FROM_ALL base58.cpp @@ -9,7 +34,7 @@ bench_bitcoin.cpp cashaddr.cpp ccoins_caching.cpp -# checkblock.cpp TODO Fix including bench/data/*.raw files + checkblock.cpp checkqueue.cpp crypto_aes.cpp crypto_hash.cpp @@ -20,6 +45,9 @@ merkle_root.cpp prevector.cpp rollingbloom.cpp + + # Add the generated headers to trigger the conversion command + ${BENCH_DATA_GENERATED_HEADERS} ) target_link_libraries(bitcoin-bench common bitcoinconsensus server) diff --git a/src/bench/data/convert-raw-to-header.sh b/src/bench/data/convert-raw-to-header.sh new file mode 100755 --- /dev/null +++ b/src/bench/data/convert-raw-to-header.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +INPUT_BASENAME=$(basename ${1}) +{ + echo "static unsigned const char ${INPUT_BASENAME%.*}[] = {" && \ + hexdump -v -e '8/1 "0x%02x, "' -e '"\n"' ${1} | sed -e 's/0x ,//g' && \ + echo "};"; \ +}