#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

menu "Time/Time Zone Support"

config LIBC_STRFTIME_C_STANDARD_FORMATS
	bool "strftime ISO C conversion specifiers"
	default !DEFAULT_SMALL
	---help---
		Enable ISO C strftime conversion specifiers that are not part of
		the small always-enabled subset.  Disabling this option
		removes support for %A, %B, %I, %j, %p, %U, %w, %W, %x, %X, and
		%y.  The always-enabled subset is %a, %b/%h, %d, %H, %m, %M,
		%S, %Y, and %%.

		Disabling this option makes strftime smaller, but the implementation
		no longer supports all conversion specifiers required by ISO C.

config LIBC_STRFTIME_POSIX_FORMATS
	bool "strftime POSIX conversion specifiers"
	default !DEFAULT_SMALL
	depends on LIBC_STRFTIME_C_STANDARD_FORMATS
	---help---
		Enable POSIX strftime conversion specifiers beyond ISO C that are
		implemented by NuttX.  Disabling this option removes support for
		%C, %e, %F, %g, %G, %n, %r, %R, %t, %T, %u, %V, and %z.
		Enabling this option also enables the ISO C conversion specifiers.

		Note that %h is kept in the always-enabled subset as an alias for
		%b because it shares the same implementation.  Some POSIX
		specifiers may be controlled by other options.

config LIBC_STRFTIME_NONSTANDARD_FORMATS
	bool "strftime non-standard conversion specifiers"
	default !DEFAULT_SMALL
	---help---
		Enable NuttX/GNU-style strftime conversion specifiers that are not
		required by ISO C or POSIX.  Disabling this option removes support
		for %k, %l, %P, and %s.

config LIBC_LOCALTIME
	bool "localtime API call support"
	default "n"
	depends on !DISABLE_ENVIRON
	---help---
		localtime API call support

		Logic currently depends on file system support with, at a minimum, these
		files in the zoneinfo directory:  GMT and posixrules.  An additional
		timezone file is required for any additional, local time zone(s) and the
		environment variable TZ must be set to the name of that timezone file
		when tzset() is called.

		See https://www.iana.org/time-zones .  See also libs/libc/zoneinfo
		which provides a framework for incorporating the TZ database into a
		NuttX build.

if LIBC_LOCALTIME

config LIBC_TZ_MAX_TIMES
	int "Maximum number of times in timezone"
	default 370
	---help---
		Timezone files with more than this number of times will not be used
		(timecnt).

		Warning: Some files in IANA TZ database include many times.  The current
		posixrules file, for example, has timecnt = 236.  The value of
		TX_MAX_ITMES in the tzfile.h header file on my Linux system is 370, the
		default used here.  You may want to reduce this value for a smaller
		footprint.

config LIBC_TZ_MAX_TYPES
	int "Maximum number of TZ types"
	default 20
	---help---
		Maximum number of local time types.  You may want to reduce this value
		for a smaller footprint.

config LIBC_TZDIR
	string "zoneinfo directory path"
	default "/etc/zoneinfo"
	---help---
		This is the full path to the location where the TZ database is expected
		to be found.

config LIBC_ZONEINFO
	bool "TZ database"
	default n
	---help---
		Download and build the TZ/Olson database.

if LIBC_ZONEINFO

config LIBC_ZONEINFO_ROMFS
	bool "Build ROMFS filesystem"
	default n
	depends on FS_ROMFS
	---help---
		Build a mountable ROMFS filesystem containing the TZ/Olson database

endif # LIBC_ZONEINFO
endif # LIBC_LOCALTIME
endmenu # Time/Time Zone Support
