# Copyright (c) 2024 Tenstorrent AI ULC
#
# SPDX-License-Identifier: Apache-2.0

# The following list of Kconfig options are based on standard POSIX Subprofiling Option Groups
# and may be used to override Zephyr's internal POSIX implementations. This facility is mainly
# for toolchain integrators, C library maintainers, etc, and is not intended for general users.
#
# Use these features with caution as doing so might introduce unwanted, unexpected, or undefined
# behavior.
#
# POSIX Subprofiling Option Groups are defined at the link below:
#
# https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html

config TC_PROVIDES_POSIX_ASYNCHRONOUS_IO
	bool

config TC_PROVIDES_POSIX_BARRIERS
	bool

config TC_PROVIDES_POSIX_C_LANG_JUMP
	bool

config TC_PROVIDES_POSIX_C_LANG_MATH
	bool

config TC_PROVIDES_POSIX_C_LANG_SUPPORT
	bool

config TC_PROVIDES_POSIX_C_LANG_SUPPORT_R
	bool

config TC_PROVIDES_POSIX_C_LANG_WIDE_CHAR
	bool

config TC_PROVIDES_POSIX_C_LANG_WIDE_CHAR_EXT
	bool

config TC_PROVIDES_POSIX_C_LIB_EXT
	bool

config TC_PROVIDES_POSIX_CLOCK_SELECTION
	bool

config TC_PROVIDES_POSIX_DEVICE_IO
	bool

config TC_PROVIDES_POSIX_DEVICE_IO_EXT
	bool

config TC_PROVIDES_POSIX_DEVICE_SPECIFIC
	bool

config TC_PROVIDES_POSIX_DEVICE_SPECIFIC_R
	bool

config TC_PROVIDES_POSIX_DYNAMIC_LINKING
	bool

config TC_PROVIDES_POSIX_FD_MGMT
	bool

config TC_PROVIDES_POSIX_FIFO
	bool

config TC_PROVIDES_POSIX_FIFO_FD
	bool

config TC_PROVIDES_POSIX_FILE_ATTRIBUTES
	bool

config TC_PROVIDES_POSIX_FILE_ATTRIBUTES_FD
	bool

config TC_PROVIDES_POSIX_FILE_LOCKING
	bool

config TC_PROVIDES_POSIX_FILE_SYSTEM
	bool

config TC_PROVIDES_POSIX_FILE_SYSTEM_EXT
	bool

config TC_PROVIDES_POSIX_FILE_SYSTEM_FD
	bool

config TC_PROVIDES_POSIX_FILE_SYSTEM_GLOB
	bool

config TC_PROVIDES_POSIX_FILE_SYSTEM_R
	bool

config TC_PROVIDES_POSIX_I18N
	bool

config TC_PROVIDES_POSIX_JOB_CONTROL
	bool

config TC_PROVIDES_POSIX_MAPPED_FILES
	bool

config TC_PROVIDES_POSIX_MEMORY_PROTECTION
	bool

config TC_PROVIDES_POSIX_MULTI_CONCURRENT_LOCALES
	bool

config TC_PROVIDES_POSIX_MULTI_PROCESS
	bool

config TC_PROVIDES_POSIX_MULTI_PROCESS_FD
	bool

config TC_PROVIDES_POSIX_NETWORKING
	bool

config TC_PROVIDES_POSIX_PIPE
	bool

config TC_PROVIDES_POSIX_ROBUST_MUTEXES
	bool

config TC_PROVIDES_POSIX_REALTIME_SIGNALS
	bool

config TC_PROVIDES_POSIX_REGEXP
	bool

config TC_PROVIDES_POSIX_RW_LOCKS
	bool

config TC_PROVIDES_POSIX_SEMAPHORES
	bool

config TC_PROVIDES_POSIX_SHELL_FUNC
	bool

config TC_PROVIDES_POSIX_SIGNAL_JUMP
	bool

config TC_PROVIDES_POSIX_SIGNALS
	bool

config TC_PROVIDES_POSIX_SIGNALS_EXT
	bool

config TC_PROVIDES_POSIX_SINGLE_PROCESS
	bool

config TC_PROVIDES_POSIX_SPIN_LOCKS
	bool

config TC_PROVIDES_POSIX_SYMBOLIC_LINKS
	bool

config TC_PROVIDES_POSIX_SYMBOLIC_LINKS_FD
	bool

config TC_PROVIDES_POSIX_SYSTEM_DATABASE
	bool

config TC_PROVIDES_POSIX_SYSTEM_DATABASE_R
	bool

# Note: the Option is _POSIX_THREADS, while the Option Group is POSIX_THREADS_BASE.
# We have opted to use POSIX_THREADS here to match the Option name.
config TC_PROVIDES_POSIX_THREADS
	bool

config TC_PROVIDES_POSIX_THREADS_EXT
	bool

config TC_PROVIDES_POSIX_TIMERS
	bool

config TC_PROVIDES_POSIX_USER_GROUPS
	bool

config TC_PROVIDES_POSIX_USER_GROUPS_R
	bool

config TC_PROVIDES_POSIX_WIDE_CHAR_DEVICE_IO
	bool

config TC_PROVIDES_XSI_C_LANG_SUPPORT
	bool

config TC_PROVIDES_XSI_DBM
	bool

config TC_PROVIDES_XSI_DEVICE_IO
	bool

config TC_PROVIDES_XSI_DEVICE_SPECIFIC
	bool

config TC_PROVIDES_XSI_FILE_SYSTEM
	bool

config TC_PROVIDES_XSI_IPC
	bool

config TC_PROVIDES_XSI_JUMP
	bool

config TC_PROVIDES_XSI_MATH
	bool

config TC_PROVIDES_XSI_MULTI_PROCESS
	bool

config TC_PROVIDES_XSI_REALTIME
	bool

config TC_PROVIDES_XSI_SIGNALS
	bool

config TC_PROVIDES_XSI_SINGLE_PROCESS
	bool

config TC_PROVIDES_XSI_SYSTEM_DATABASE
	bool

config TC_PROVIDES_XSI_SYSTEM_LOGGING
	bool

config TC_PROVIDES_XSI_THREADS_EXT
	bool

config TC_PROVIDES_XSI_TIMERS
	bool

config TC_PROVIDES_XSI_USER_GROUPS
	bool

config TC_PROVIDES_XSI_WIDE_CHAR
	bool
