From 7ffb96f474ec970823111d6274c495df95081a66 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Fri, 16 Jun 2023 01:03:46 -0400 Subject: [PATCH] cmake: Extra time zone data download checks Extra sanitization for Windows hosts, and fail loudly when the download fails. cmake: Fix status code reading --- externals/nx_tzdb/CMakeLists.txt | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/externals/nx_tzdb/CMakeLists.txt b/externals/nx_tzdb/CMakeLists.txt index c15110fd6b..67599faf46 100644 --- a/externals/nx_tzdb/CMakeLists.txt +++ b/externals/nx_tzdb/CMakeLists.txt @@ -12,27 +12,35 @@ find_program(GNU_DATE date) set(CAN_BUILD_NX_TZDB true) if ("${GIT}" STREQUAL "GIT-NOTFOUND") - message("git program not found") set(CAN_BUILD_NX_TZDB false) endif() if ("${GNU_MAKE}" STREQUAL "GNU_MAKE-NOTFOUND") - message("GNU make program not found") set(CAN_BUILD_NX_TZDB false) endif() if ("${GNU_DATE}" STREQUAL "GNU_DATE-NOTFOUND") - message("GNU date program not found") + set(CAN_BUILD_NX_TZDB false) +endif() +if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") + # tzdb_to_nx currently requires a posix-compliant host 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") + 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") - set(NX_TZDB_DIR "${CMAKE_CURRENT_BINARY_DIR}/nx_tzdb" CACHE PATH "Path to Switch-style time zone data") + 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}" STREQUAL "0") + message(FATAL_ERROR "Time zone data download failed (status code ${NX_TZDB_DOWNLOAD_STATUS_CODE})") + endif() - file(DOWNLOAD ${NX_TZDB_DOWNLOAD_URL} ${NX_TZDB_ARCHIVE}) file(ARCHIVE_EXTRACT INPUT ${NX_TZDB_ARCHIVE}