# Copyright (c) 2023 Yonatan Schachter
# SPDX-License-Identifier: Apache-2.0

menuconfig BINDESC_DEFINE_BUILD_TIME
	bool "Build Time binary descriptors"
	help
	  Add the build time binary descriptors

if BINDESC_DEFINE_BUILD_TIME

config BINDESC_BUILD_TIME_USE_LOCAL_TIME
	bool "Use local time"
	help
	  If enabled, the build time used for the descriptors will express
	  the local time, rather than UTC.

config BINDESC_BUILD_TIME_ALWAYS_REBUILD
	bool "Always rebuild"
	default y
	help
	  If enabled, the file containing the build time definitions will
	  always be rebuilt. This results in the timestamp always being
	  accurate, but also in slightly longer build times.

config BINDESC_BUILD_TIME_YEAR
	bool "Year of build"
	help
	  The year the image was compiled, such as 2023

config BINDESC_BUILD_TIME_MONTH
	bool "Month of build"
	help
	  The month the image was compiled, such as 5 (May)

config BINDESC_BUILD_TIME_DAY
	bool "Day of build"
	help
	  The day of the month the image was compiled, such as 9

config BINDESC_BUILD_TIME_HOUR
	bool "Hour of build"
	help
	  The hour of the day the image was compiled, such as 13 in 13:34:52

config BINDESC_BUILD_TIME_MINUTE
	bool "Minute of build"
	help
	  The minute the image was compiled, such as 34 in 13:34:52

config BINDESC_BUILD_TIME_SECOND
	bool "Second of build"
	help
	  The second the image was compiled, such as 52 in 13:34:52

config BINDESC_BUILD_TIME_UNIX
	bool "Build time as UNIX time"
	help
	  The UNIX time at which the image was compiled. This is an integer
	  counting the seconds since midnight of January 1st 1970

config BINDESC_BUILD_DATE_TIME_STRING
	bool "Build date and time as string"
	help
	  The date and time of compilation as a string, such as "2023-09-29T17:43:14+0000"

config BINDESC_BUILD_DATE_STRING
	bool "Build date as string"
	help
	  The date of compilation as a string, such as "2023-09-29"

config BINDESC_BUILD_TIME_STRING
	bool "Build time as string"
	help
	  The time of compilation as a string, such as "T17:43:14+0000"

config BINDESC_BUILD_DATE_TIME_STRING_FORMAT
	depends on BINDESC_BUILD_DATE_TIME_STRING
	string "Date-Time format"
	default "%Y-%m-%dT%H:%M:%S%z"
	help
	  Format of the build time string. This value is passed to cmake's string(TIMESTAMP ...)
	  function, so refer to string's documentation for more info on the different formats.
	  This can also be used to set a specific time, when trying to reproduce an image. For
	  example, setting the format to "2023-02-05T00:07:04+0000" will set it as the build time,
	  regardless of the actual build time.
	  If BINDESC_BUILD_TIME_USE_LOCAL_TIME is enabled, the time is the local time, else
	  it is UTC time.
	  Example of the default format: 2023-09-29T17:43:14+0000.
	  Note: the default format complies with ISO-8601.

config BINDESC_BUILD_DATE_STRING_FORMAT
	depends on BINDESC_BUILD_DATE_STRING
	string "Date format"
	default "%Y-%m-%d"
	help
	  Format of the build date string. This value is passed to cmake's string(TIMESTAMP ...)
	  function, so refer to string's documentation for more info on the different formats.
	  This can also be used to set a specific time, when trying to reproduce an image. For
	  example, setting the format to "2023-02-05" will set it as the build time,
	  regardless of the actual build time.
	  Example of the default format: 2023-02-05
	  Note: the default format complies with ISO-8601.

config BINDESC_BUILD_TIME_STRING_FORMAT
	depends on BINDESC_BUILD_TIME_STRING
	string "Time format"
	default "T%H:%M:%S%z"
	help
	  Format of the build time string. This value is passed to cmake's string(TIMESTAMP ...)
	  function, so refer to string's documentation for more info on the different formats.
	  This can also be used to set a specific time, when trying to reproduce an image. For
	  example, setting the format to "T00:07:04+0000" will set it as the build time,
	  regardless of the actual build time.
	  Example of the default format: T00:07:04+0000.
	  Note: the default format complies with ISO-8601.

endif # BINDESC_DEFINE_BUILD_TIME
