diff options
| author | bunnei <bunneidev@gmail.com> | 2023-06-13 13:28:45 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-06-13 13:28:45 -0700 |
| commit | 698a3eda508ca0d3220452854b3ec977d7be5ea2 (patch) | |
| tree | fc71df2feda7bfed6f686e3f7aa0fa8629aebc5d /externals/nx_tzdb/NxTzdbCreateHeader.cmake | |
| parent | 190eed819959987054a06c756e2be9a3a5eac37f (diff) | |
| parent | 8f9afbcd91444c5e0653da458e44de37388c6d79 (diff) | |
Merge pull request #10603 from lat9nq/tz-more-complete
core,common: Implement missing time zone data/computations
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..69166aa5b --- /dev/null +++ b/externals/nx_tzdb/NxTzdbCreateHeader.cmake @@ -0,0 +1,46 @@ +# SPDX-FileCopyrightText: 2023 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +set(ZONE_PATH ${CMAKE_ARGV3}) +set(HEADER_NAME ${CMAKE_ARGV4}) +set(NX_TZDB_INCLUDE_DIR ${CMAKE_ARGV5}) +set(NX_TZDB_SOURCE_DIR ${CMAKE_ARGV6}) + +execute_process( + COMMAND ${CMAKE_COMMAND} -P ${NX_TZDB_SOURCE_DIR}/ListFilesInDirectory.cmake + WORKING_DIRECTORY ${ZONE_PATH} + OUTPUT_VARIABLE FILE_LIST) + +set(DIRECTORY_NAME ${HEADER_NAME}) + +set(FILE_DATA "") +foreach(ZONE_FILE ${FILE_LIST}) + if ("${ZONE_FILE}" STREQUAL "\n") + continue() + endif() + + string(APPEND FILE_DATA "{\"${ZONE_FILE}\",\n{") + + file(READ ${ZONE_PATH}/${ZONE_FILE} ZONE_DATA HEX) + string(LENGTH "${ZONE_DATA}" ZONE_DATA_LEN) + foreach(I RANGE 0 ${ZONE_DATA_LEN} 2) + math(EXPR BREAK_LINE "(${I} + 2) % 38") + + string(SUBSTRING "${ZONE_DATA}" "${I}" "2" HEX_DATA) + if ("${HEX_DATA}" STREQUAL "") + break() + endif() + + string(APPEND FILE_DATA "0x${HEX_DATA},") + if ("${BREAK_LINE}" STREQUAL "0") + string(APPEND FILE_DATA "\n") + else() + string(APPEND FILE_DATA " ") + endif() + endforeach() + + string(APPEND FILE_DATA "}},\n") +endforeach() + +file(READ ${NX_TZDB_SOURCE_DIR}/tzdb_template.h.in NX_TZDB_TEMPLATE_H_IN) +file(CONFIGURE OUTPUT ${NX_TZDB_INCLUDE_DIR}/nx_tzdb/${HEADER_NAME}.h CONTENT "${NX_TZDB_TEMPLATE_H_IN}") |
