|
2 | 2 | # Distributed under the MIT software license, see the accompanying
|
3 | 3 | # file COPYING or https://opensource.org/license/mit/.
|
4 | 4 |
|
| 5 | +cmake_path(GET RAW_SOURCE_PATH STEM raw_source_basename) |
| 6 | + |
5 | 7 | file(READ ${RAW_SOURCE_PATH} hex_content HEX)
|
6 |
| -string(REGEX MATCHALL "([A-Za-z0-9][A-Za-z0-9])" bytes "${hex_content}") |
| 8 | +string(REGEX REPLACE "................" "\\0\n" formatted_bytes "${hex_content}") |
| 9 | +string(REGEX REPLACE "[^\n][^\n]" "std::byte{0x\\0}, " formatted_bytes "${formatted_bytes}") |
7 | 10 |
|
8 |
| -file(WRITE ${HEADER_PATH} "#include <cstddef>\n") |
9 |
| -file(APPEND ${HEADER_PATH} "#include <span>\n") |
10 |
| -file(APPEND ${HEADER_PATH} "namespace ${RAW_NAMESPACE} {\n") |
11 |
| -get_filename_component(raw_source_basename ${RAW_SOURCE_PATH} NAME_WE) |
12 |
| -file(APPEND ${HEADER_PATH} "inline constexpr std::byte detail_${raw_source_basename}_raw[]{\n") |
| 11 | +set(header_content |
| 12 | +"#include <cstddef> |
| 13 | +#include <span> |
13 | 14 |
|
14 |
| -set(i 0) |
15 |
| -foreach(byte ${bytes}) |
16 |
| - math(EXPR i "${i} + 1") |
17 |
| - math(EXPR remainder "${i} % 8") |
18 |
| - if(remainder EQUAL 0) |
19 |
| - file(APPEND ${HEADER_PATH} "std::byte{0x${byte}},\n") |
20 |
| - else() |
21 |
| - file(APPEND ${HEADER_PATH} "std::byte{0x${byte}}, ") |
22 |
| - endif() |
23 |
| -endforeach() |
| 15 | +namespace ${RAW_NAMESPACE} { |
| 16 | +inline constexpr std::byte detail_${raw_source_basename}_raw[] { |
| 17 | +${formatted_bytes} |
| 18 | +}; |
24 | 19 |
|
25 |
| -file(APPEND ${HEADER_PATH} "\n};\n") |
26 |
| -file(APPEND ${HEADER_PATH} "inline constexpr std::span ${raw_source_basename}{detail_${raw_source_basename}_raw};\n") |
27 |
| -file(APPEND ${HEADER_PATH} "}") |
| 20 | +inline constexpr std::span ${raw_source_basename}{detail_${raw_source_basename}_raw}; |
| 21 | +} |
| 22 | +") |
| 23 | +file(WRITE ${HEADER_PATH} "${header_content}") |
0 commit comments