aboutsummaryrefslogtreecommitdiff
path: root/externals/nx_tzdb/NxTzdbCreateHeader.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'externals/nx_tzdb/NxTzdbCreateHeader.cmake')
-rw-r--r--externals/nx_tzdb/NxTzdbCreateHeader.cmake27
1 files changed, 21 insertions, 6 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}")