diff options
Diffstat (limited to 'externals/nx_tzdb/NxTzdbCreateHeader.cmake')
| -rw-r--r-- | externals/nx_tzdb/NxTzdbCreateHeader.cmake | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/externals/nx_tzdb/NxTzdbCreateHeader.cmake b/externals/nx_tzdb/NxTzdbCreateHeader.cmake new file mode 100644 index 000000000..8c29e1167 --- /dev/null +++ b/externals/nx_tzdb/NxTzdbCreateHeader.cmake | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | # SPDX-FileCopyrightText: 2023 yuzu Emulator Project | ||
| 2 | # SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 4 | set(ZONE_PATH ${CMAKE_ARGV3}) | ||
| 5 | set(HEADER_NAME ${CMAKE_ARGV4}) | ||
| 6 | set(NX_TZDB_INCLUDE_DIR ${CMAKE_ARGV5}) | ||
| 7 | set(NX_TZDB_SOURCE_DIR ${CMAKE_ARGV6}) | ||
| 8 | |||
| 9 | execute_process( | ||
| 10 | COMMAND ${CMAKE_COMMAND} -P ${NX_TZDB_SOURCE_DIR}/ListFilesInDirectory.cmake | ||
| 11 | WORKING_DIRECTORY ${ZONE_PATH} | ||
| 12 | OUTPUT_VARIABLE FILE_LIST) | ||
| 13 | |||
| 14 | set(DIRECTORY_NAME ${HEADER_NAME}) | ||
| 15 | |||
| 16 | set(FILE_DATA "") | ||
| 17 | foreach(ZONE_FILE ${FILE_LIST}) | ||
| 18 | if (ZONE_FILE STREQUAL "\n") | ||
| 19 | continue() | ||
| 20 | endif() | ||
| 21 | |||
| 22 | string(APPEND FILE_DATA "{\"${ZONE_FILE}\",\n{") | ||
| 23 | |||
| 24 | file(READ ${ZONE_PATH}/${ZONE_FILE} ZONE_DATA HEX) | ||
| 25 | string(LENGTH "${ZONE_DATA}" ZONE_DATA_LEN) | ||
| 26 | foreach(I RANGE 0 ${ZONE_DATA_LEN} 2) | ||
| 27 | math(EXPR BREAK_LINE "(${I} + 2) % 38") | ||
| 28 | |||
| 29 | string(SUBSTRING "${ZONE_DATA}" "${I}" 2 HEX_DATA) | ||
| 30 | if (NOT HEX_DATA) | ||
| 31 | break() | ||
| 32 | endif() | ||
| 33 | |||
| 34 | string(APPEND FILE_DATA "0x${HEX_DATA},") | ||
| 35 | if (BREAK_LINE EQUAL 0) | ||
| 36 | string(APPEND FILE_DATA "\n") | ||
| 37 | else() | ||
| 38 | string(APPEND FILE_DATA " ") | ||
| 39 | endif() | ||
| 40 | endforeach() | ||
| 41 | |||
| 42 | string(APPEND FILE_DATA "}},\n") | ||
| 43 | endforeach() | ||
| 44 | |||
| 45 | file(READ ${NX_TZDB_SOURCE_DIR}/tzdb_template.h.in NX_TZDB_TEMPLATE_H_IN) | ||
| 46 | file(CONFIGURE OUTPUT ${NX_TZDB_INCLUDE_DIR}/nx_tzdb/${HEADER_NAME}.h CONTENT "${NX_TZDB_TEMPLATE_H_IN}") | ||