@ -1,3 +1,6 @@
# S P D X - F i l e C o p y r i g h t T e x t : 2 0 2 5 E d e n E m u l a t o r P r o j e c t
# S P D X - L i c e n s e - I d e n t i f i e r : G P L - 3 . 0 - o r - l a t e r
# S P D X - F i l e C o p y r i g h t T e x t : 2 0 2 3 y u z u E m u l a t o r P r o j e c t
# S P D X - F i l e C o p y r i g h t T e x t : 2 0 2 3 y u z u E m u l a t o r P r o j e c t
# S P D X - L i c e n s e - I d e n t i f i e r : G P L - 2 . 0 - o r - l a t e r
# S P D X - L i c e n s e - I d e n t i f i e r : G P L - 2 . 0 - o r - l a t e r
@ -15,35 +18,58 @@ find_program(DATE_PROG date)
set ( CAN_BUILD_NX_TZDB true )
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 )
if ( NOT ( GIT AND GNU_MAKE AND DATE_PROG ) OR CMAKE_SYSTEM_NAME STREQUAL "Windows" OR ANDROID )
# t z d b _ t o _ n x c u r r e n t l y r e q u i r e s a p o s i x - c o m p l i a n t h o s t
# t z d b _ t o _ n x c u r r e n t l y r e q u i r e s a p o s i x - c o m p l i a n t h o s t
# M i n G W a n d A n d r o i d a r e h a n d l e d h e r e d u e t o t h e e x e c u t a b l e f o r m a t b e i n g d i f f e r e n t f r o m t h e h o s t s y s t e m
# M i n G W a n d A n d r o i d a r e h a n d l e d h e r e d u e t o t h e e x e c u t a b l e f o r m a t b e i n g d i f f e r e n t f r o m t h e h o s t s y s t e m
# TODO ( lat9nq ) : c r o s s - c o m p i l i n g s u p p o r t
# TODO ( lat9nq ) : c r o s s - c o m p i l i n g s u p p o r t
set ( CAN_BUILD_NX_TZDB false )
set ( CAN_BUILD_NX_TZDB false )
endif ( )
endif ( )
set ( NX_TZDB_VERSION "250725" )
set ( NX_TZDB_ROMFS_DIR "${CPM_SOURCE_CACHE}/nx_tzdb" )
if ( ( NOT CAN_BUILD_NX_TZDB OR YUZU_DOWNLOAD_TIME_ZONE_DATA ) AND NOT EXISTS ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } )
message ( STATUS "Downloading time zone data..." )
AddJsonPackage ( tzdb )
elseif ( CAN_BUILD_NX_TZDB AND NOT YUZU_DOWNLOAD_TIME_ZONE_DATA )
# TODO ( crueter ) : t h i s s u c k e d t o d o w i t h c p m , s e e i f i c a n g e t i t t o w o r k a g a i n
if ( CAN_BUILD_NX_TZDB AND NOT YUZU_DOWNLOAD_TIME_ZONE_DATA )
message ( FATAL_ERROR "Building tzdb is currently unsupported. Check back later." )
message ( FATAL_ERROR "Building tzdb is currently unsupported. Check back later." )
add_subdirectory ( tzdb_to_nx )
add_subdirectory ( tzdb_to_nx )
add_dependencies ( nx_tzdb x80e )
add_dependencies ( nx_tzdb x80e )
set ( NX_TZDB_ROMFS_DIR "${NX_TZDB_DIR}" )
set ( NX_TZDB_BASE_DIR "${NX_TZDB_DIR}" )
set ( NX_TZDB_TZ_DIR "${NX_TZDB_BASE_DIR}/zoneinfo" )
endif ( )
# TODO ( crueter ) : T h i s i s a t e r r i b l e s o l u t i o n , b u t MSVC f a i l s t o l i n k w i t h o u t i t
# N e e d t o i n v e s t i g a t e f u r t h e r b u t I s t i l l c a n ' t r e p r o d u c e . . .
if ( MSVC )
set ( NX_TZDB_VERSION "250725" )
set ( NX_TZDB_ARCHIVE "${CPM_SOURCE_CACHE}/nx_tzdb/${NX_TZDB_VERSION}.zip" )
set ( NX_TZDB_BASE_DIR "${CPM_SOURCE_CACHE}/nx_tzdb/tz" )
set ( NX_TZDB_TZ_DIR "${NX_TZDB_BASE_DIR}/zoneinfo" )
set ( NX_TZDB_DOWNLOAD_URL "https://github.com/crueter/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 }
S T A T U S N X _ T Z D B _ D O W N L O A D _ S T A T U S )
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 ( )
file ( ARCHIVE_EXTRACT
I N P U T
$ { N X _ T Z D B _ A R C H I V E }
D E S T I N A T I O N
$ { N X _ T Z D B _ B A S E _ D I R } )
else ( )
message ( STATUS "Downloading time zone data..." )
AddJsonPackage ( tzdb )
target_include_directories ( nx_tzdb
I N T E R F A C E $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / i n c l u d e
I N T E R F A C E $ { N X _ T Z D B _ I N C L U D E _ D I R } )
set ( NX_TZDB_BASE_DIR "${CPM_SOURCE_CACHE}/nx_tzdb" )
set ( NX_TZDB_TZ_DIR "${nx_tzdb_SOURCE_DIR}" )
endif ( )
endif ( )
target_include_directories ( nx_tzdb
target_include_directories ( nx_tzdb
@ -68,25 +94,25 @@ function(CreateHeader ZONE_PATH HEADER_NAME)
target_sources ( nx_tzdb PRIVATE ${ HEADER_PATH } )
target_sources ( nx_tzdb PRIVATE ${ HEADER_PATH } )
endfunction ( )
endfunction ( )
CreateHeader ( ${ NX_TZDB_ROMFS _DIR } base )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } zoneinfo )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /Africa africa )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /America america )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /America/Argentina america_argentina )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /America/Indiana america_indiana )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /America/Kentucky america_kentucky )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /America/North_Dakota america_north_dakota )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /Antarctica antarctica )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /Arctic arctic )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /Asia asia )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /Atlantic atlantic )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /Australia australia )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /Brazil brazil )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /Canada canada )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /Chile chile )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /Etc etc )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /Europe europe )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /Indian indian )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /Mexico mexico )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /Pacific pacific )
CreateHeader ( ${ NX_TZDB_ROMFS_DIR } / ${ NX_TZDB_VERSION } /US us )
CreateHeader ( ${ NX_TZDB_BASE _DIR } base )
CreateHeader ( ${ NX_TZDB_TZ_DIR } zoneinfo )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /Africa africa )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /America america )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /America/Argentina america_argentina )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /America/Indiana america_indiana )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /America/Kentucky america_kentucky )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /America/North_Dakota america_north_dakota )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /Antarctica antarctica )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /Arctic arctic )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /Asia asia )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /Atlantic atlantic )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /Australia australia )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /Brazil brazil )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /Canada canada )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /Chile chile )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /Etc etc )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /Europe europe )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /Indian indian )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /Mexico mexico )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /Pacific pacific )
CreateHeader ( ${ NX_TZDB_TZ_DIR } /US us )