diff options
Diffstat (limited to 'externals/nx_tzdb')
| -rw-r--r-- | externals/nx_tzdb/CMakeLists.txt | 96 | ||||
| -rw-r--r-- | externals/nx_tzdb/NxTzdbCreateHeader.cmake | 8 | ||||
| -rw-r--r-- | externals/nx_tzdb/include/nx_tzdb.h | 2 | ||||
| m--------- | externals/nx_tzdb/tzdb_to_nx | 0 | 
4 files changed, 71 insertions, 35 deletions
| diff --git a/externals/nx_tzdb/CMakeLists.txt b/externals/nx_tzdb/CMakeLists.txt index 2f625c108..593786250 100644 --- a/externals/nx_tzdb/CMakeLists.txt +++ b/externals/nx_tzdb/CMakeLists.txt @@ -1,24 +1,60 @@  # 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_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include") + +add_library(nx_tzdb INTERFACE) + +find_program(GIT git) +find_program(GNU_MAKE make) +find_program(DATE_PROG date) +set(CAN_BUILD_NX_TZDB true) + +if (NOT GIT) +    set(CAN_BUILD_NX_TZDB false) +endif() +if (NOT GNU_MAKE) +    set(CAN_BUILD_NX_TZDB false) +endif() +if (NOT DATE_PROG) +    set(CAN_BUILD_NX_TZDB false) +endif() +if (CMAKE_SYSTEM_NAME STREQUAL "Windows" OR ANDROID) +    # tzdb_to_nx currently requires a posix-compliant host +    # MinGW and Android are handled here due to the executable format being different from the host system +    # TODO (lat9nq): cross-compiling support +    set(CAN_BUILD_NX_TZDB false) +endif() + +set(NX_TZDB_VERSION "220816")  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") +set(NX_TZDB_ROMFS_DIR "${CMAKE_CURRENT_BINARY_DIR}/nx_tzdb") + +if ((NOT CAN_BUILD_NX_TZDB OR YUZU_DOWNLOAD_TIME_ZONE_DATA) AND NOT EXISTS ${NX_TZDB_ARCHIVE}) +    set(NX_TZDB_DOWNLOAD_URL "https://github.com/lat9nq/tzdb_to_nx/releases/download/${NX_TZDB_VERSION}/${NX_TZDB_VERSION}.zip") + +    message(STATUS "Downloading time zone data from ${NX_TZDB_DOWNLOAD_URL}...") +    file(DOWNLOAD ${NX_TZDB_DOWNLOAD_URL} ${NX_TZDB_ARCHIVE} +        STATUS NX_TZDB_DOWNLOAD_STATUS) +    list(GET NX_TZDB_DOWNLOAD_STATUS 0 NX_TZDB_DOWNLOAD_STATUS_CODE) +    if (NOT NX_TZDB_DOWNLOAD_STATUS_CODE EQUAL 0) +        message(FATAL_ERROR "Time zone data download failed (status code ${NX_TZDB_DOWNLOAD_STATUS_CODE})") +    endif() -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}) +            ${NX_TZDB_ROMFS_DIR}) +elseif (CAN_BUILD_NX_TZDB AND NOT YUZU_DOWNLOAD_TIME_ZONE_DATA) +    add_subdirectory(tzdb_to_nx) +    add_dependencies(nx_tzdb x80e) + +    set(NX_TZDB_ROMFS_DIR "${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}) @@ -41,25 +77,25 @@ function(CreateHeader ZONE_PATH HEADER_NAME)      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) +CreateHeader(${NX_TZDB_ROMFS_DIR} base) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo zoneinfo) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Africa africa) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America america) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America/Argentina america_argentina) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America/Indiana america_indiana) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America/Kentucky america_kentucky) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America/North_Dakota america_north_dakota) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Antarctica antarctica) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Arctic arctic) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Asia asia) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Atlantic atlantic) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Australia australia) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Brazil brazil) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Canada canada) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Chile chile) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Etc etc) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Europe europe) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Indian indian) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Mexico mexico) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Pacific pacific) +CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/US us) diff --git a/externals/nx_tzdb/NxTzdbCreateHeader.cmake b/externals/nx_tzdb/NxTzdbCreateHeader.cmake index 69166aa5b..8c29e1167 100644 --- a/externals/nx_tzdb/NxTzdbCreateHeader.cmake +++ b/externals/nx_tzdb/NxTzdbCreateHeader.cmake @@ -15,7 +15,7 @@ set(DIRECTORY_NAME ${HEADER_NAME})  set(FILE_DATA "")  foreach(ZONE_FILE ${FILE_LIST}) -    if ("${ZONE_FILE}" STREQUAL "\n") +    if (ZONE_FILE STREQUAL "\n")          continue()      endif() @@ -26,13 +26,13 @@ foreach(ZONE_FILE ${FILE_LIST})      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 "") +        string(SUBSTRING "${ZONE_DATA}" "${I}" 2 HEX_DATA) +        if (NOT HEX_DATA)              break()          endif()          string(APPEND FILE_DATA "0x${HEX_DATA},") -        if ("${BREAK_LINE}" STREQUAL "0") +        if (BREAK_LINE EQUAL 0)              string(APPEND FILE_DATA "\n")          else()              string(APPEND FILE_DATA " ") diff --git a/externals/nx_tzdb/include/nx_tzdb.h b/externals/nx_tzdb/include/nx_tzdb.h index d7b1e4304..1f7c6069a 100644 --- a/externals/nx_tzdb/include/nx_tzdb.h +++ b/externals/nx_tzdb/include/nx_tzdb.h @@ -9,7 +9,7 @@  #include "nx_tzdb/america_indiana.h"  #include "nx_tzdb/america_kentucky.h"  #include "nx_tzdb/america_north_dakota.h" -#include "nx_tzdb/antartica.h" +#include "nx_tzdb/antarctica.h"  #include "nx_tzdb/arctic.h"  #include "nx_tzdb/asia.h"  #include "nx_tzdb/atlantic.h" diff --git a/externals/nx_tzdb/tzdb_to_nx b/externals/nx_tzdb/tzdb_to_nx new file mode 160000 +Subproject 8c272f21d19c6e821345fd055f41b9640f9189d | 
