aboutsummaryrefslogtreecommitdiff
path: root/cmake/script/GenerateHeaderFromJson.cmake
blob: 279ceedf04405e02076b921131d508e821f3c3b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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};};")