diff options
Diffstat (limited to 'externals')
| -rw-r--r-- | externals/nx_tzdb/NxTzdbCreateHeader.cmake | 27 | ||||
| -rw-r--r-- | externals/nx_tzdb/tzdb_template.h.in | 6 |
2 files changed, 24 insertions, 9 deletions
diff --git a/externals/nx_tzdb/NxTzdbCreateHeader.cmake b/externals/nx_tzdb/NxTzdbCreateHeader.cmake index 95606d8629..229c8aa43d 100644 --- a/externals/nx_tzdb/NxTzdbCreateHeader.cmake +++ b/externals/nx_tzdb/NxTzdbCreateHeader.cmake @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2023 yuzu Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later @@ -16,15 +19,24 @@ if (NOT FILE_LIST) endif() set(DIRECTORY_NAME ${HEADER_NAME}) - set(FILE_DATA "") + +string(APPEND FILE_DATA "[[nodiscard]] static inline std::vector<FileSys::VirtualFile> CollectFiles_${DIRECTORY_NAME}() {\n") +string(APPEND FILE_DATA [[ + std::vector<FileSys::VirtualFile> vfs_files; + auto const fn = [&](std::string_view name, std::span<const u8> data) { + vfs_files.push_back(std::make_shared<FileSys::VectorVfsFile>( + std::vector<u8>(data.begin(), data.end()), + std::string{name} + )); + }; +]]) foreach(ZONE_FILE ${FILE_LIST}) if (ZONE_FILE STREQUAL "\n") continue() endif() - - string(APPEND FILE_DATA "{\"${ZONE_FILE}\",\n{") - + string(APPEND FILE_DATA " {\n") + string(APPEND FILE_DATA " constexpr uint8_t tzdb_data[] = {\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) @@ -42,9 +54,12 @@ foreach(ZONE_FILE ${FILE_LIST}) string(APPEND FILE_DATA " ") endif() endforeach() - - string(APPEND FILE_DATA "}},\n") + string(APPEND FILE_DATA " };\n") + string(APPEND FILE_DATA " fn(\"${ZONE_FILE}\", tzdb_data);\n") + string(APPEND FILE_DATA " }\n") endforeach() +string(APPEND FILE_DATA " return vfs_files;\n") +string(APPEND FILE_DATA "}\n") 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}") diff --git a/externals/nx_tzdb/tzdb_template.h.in b/externals/nx_tzdb/tzdb_template.h.in index 289d002ea8..d7907b846d 100644 --- a/externals/nx_tzdb/tzdb_template.h.in +++ b/externals/nx_tzdb/tzdb_template.h.in @@ -9,10 +9,10 @@ namespace NxTzdb { +// @DIRECTORY_NAME@ + // clang-format off -const static std::map<const char*, const std::vector<uint8_t>> @DIRECTORY_NAME@ = -{ -@FILE_DATA@}; +@FILE_DATA@ // clang-format on } // namespace NxTzdb |
