From 73036c83a3805e5a0460cd5871743c88fe9405a5 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Sat, 3 Jun 2023 13:18:51 -0400 Subject: nx_tzdb: Create headers from downloaded system archive data Use lat9nq/tzdb_to_nx release data to generate header files. nx_tzdb: Use an interface library nx_tzdb: Gate download if achive not exists nx_tzdb: Fix header generator brace closing nx_tzdb: Add base directory files nx_tzdb: Add SPDX info --- externals/nx_tzdb/CMakeLists.txt | 65 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 externals/nx_tzdb/CMakeLists.txt (limited to 'externals/nx_tzdb/CMakeLists.txt') diff --git a/externals/nx_tzdb/CMakeLists.txt b/externals/nx_tzdb/CMakeLists.txt new file mode 100644 index 000000000..2f625c108 --- /dev/null +++ b/externals/nx_tzdb/CMakeLists.txt @@ -0,0 +1,65 @@ +# SPDX-FileCopyrightText: 2023 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +set(NX_TZDB_VERSION "220816") +set(NX_TZDB_DOWNLOAD_URL "https://github.com/lat9nq/tzdb_to_nx/releases/download/${NX_TZDB_VERSION}/${NX_TZDB_VERSION}.zip") + +set(NX_TZDB_ARCHIVE "${CMAKE_CURRENT_BINARY_DIR}/${NX_TZDB_VERSION}.zip") +set(NX_TZDB_DIR "${CMAKE_CURRENT_BINARY_DIR}/nx_tzdb") + +set(NX_TZDB_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include") + +if (NOT EXISTS ${NX_TZDB_ARCHIVE}) + file(DOWNLOAD ${NX_TZDB_DOWNLOAD_URL} ${NX_TZDB_ARCHIVE}) + file(ARCHIVE_EXTRACT + INPUT + ${NX_TZDB_ARCHIVE} + DESTINATION + ${NX_TZDB_DIR}) +endif() + +add_library(nx_tzdb INTERFACE) +target_include_directories(nx_tzdb + INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include + INTERFACE ${NX_TZDB_INCLUDE_DIR}) + +function(CreateHeader ZONE_PATH HEADER_NAME) + set(HEADER_PATH "${NX_TZDB_INCLUDE_DIR}/nx_tzdb/${HEADER_NAME}.h") + add_custom_command( + OUTPUT + ${NX_TZDB_INCLUDE_DIR}/nx_tzdb/${HEADER_NAME}.h + COMMAND + ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/NxTzdbCreateHeader.cmake + ${ZONE_PATH} + ${HEADER_NAME} + ${NX_TZDB_INCLUDE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS + tzdb_template.h.in + NxTzdbCreateHeader.cmake) + + target_sources(nx_tzdb PRIVATE ${HEADER_PATH}) +endfunction() + +CreateHeader(${NX_TZDB_DIR} base) +CreateHeader(${NX_TZDB_DIR}/zoneinfo zoneinfo) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/Africa africa) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/America america) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/America/Argentina america_argentina) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/America/Indiana america_indiana) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/America/Kentucky america_kentucky) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/America/North_Dakota america_north_dakota) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/Antartica antartica) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/Arctic arctic) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/Asia asia) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/Atlantic atlantic) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/Australia australia) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/Brazil brazil) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/Canada canada) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/Chile chile) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/Etc etc) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/Europe europe) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/Indian indian) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/Mexico mexico) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/Pacific pacific) +CreateHeader(${NX_TZDB_DIR}/zoneinfo/US us) -- cgit v1.2.3