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

config BINFMT_DISABLE
	bool "Disable BINFMT support"
	default n
	---help---
		By default, support for loadable binary formats is built.  This logic
		may be suppressed be defining this setting.

if !BINFMT_DISABLE

config PATH_INITIAL
	string "Initial PATH Value"
	default ""
	depends on LIB_ENVPATH
	---help---
		The initial value of the PATH variable.  This is the colon-separated
		list of absolute paths.  E.g., "/bin:/usr/bin:/sbin"

config BINFMT_LOADABLE
	bool
	default n
	---help---
		Automatically selected if a loadable binary format is selected.

config PIC
	bool
	default n
	---help---
		Automatically selected if the binary format requires position
		independent operation.

config NXFLAT
	bool "Enable the NXFLAT Binary Format"
	default n
	select BINFMT_LOADABLE
	select PIC
	---help---
		Enable support for the NXFLAT binary format.  Default: n

if NXFLAT
source binfmt/libnxflat/Kconfig
endif

config ELF
	bool "Enable the ELF Binary Format"
	default n
	select BINFMT_LOADABLE
	select LIBC_ARCH_ELF
	---help---
		Enable support for the ELF binary format.  Default: n

if ELF
source binfmt/libelf/Kconfig
endif

config BUILTIN
	bool "Support Builtin Applications"
	default n
	depends on (!BUILD_PROTECTED && !BUILD_KERNEL) || EXPERIMENTAL
	---help---
		Enable support for builtin applications.  This features assigns a string
		name to an application and in addition if FS_BINFS is defined, retaining
		those names in a file system from which they can be executed.  This feature
		is also the underlying requirement to support built-in applications in the
		NuttShell (NSH).

		ISSUES:  This feature is highly coupled with logic in the apps/
		sub-directory and, as a consequence, cannot be used in environments
		that do not include the standard NuttX apps/ nor in build
		configurations using BUILD_PROTECTED or BUILD_KERNEL.

if BUILTIN
source binfmt/libbuiltin/Kconfig
endif

config BINFMT_PCODE
	bool "Support P-Code Applications"
	default n
	depends on INTERPRETERS_PCODE && ((!BUILD_PROTECTED && !BUILD_KERNEL) || EXPERIMENTAL)
	---help---
		Enable support for interpreted P-Code binaries.  P-Code binaries are
		generated by the NuttX Pascal compiler.

		NOTE:  You must first install and select the Pascal P-Code
		interpreter before you can select this binary format.  The P-Code
		interpreter is in the Pascal download package and can also be found
		in the NuttX Pascal GIT repository.  Read the README.txt file in the
		Pascal package directory for more details.  The correct installation
		directory is: apps/interpreters.

		ISSUES:  This feature is highly coupled with logic in the apps/
		directory and, as a consequence, cannot be used in environments that
		do not include the standard NuttX apps/ directory nor in build
		configurations using BUILD_PROTECTED or BUILD_KERNEL.

if BINFMT_PCODE
source binfmt/libpcode/Kconfig
endif

endif

config BINFMT_CONSTRUCTORS
	bool "C++ Static Constructor Support"
	default n
	depends on HAVE_CXX && SCHED_STARTHOOK && ELF
	---help---
		Build in support for C++ constructors in loaded modules.  Currently
		only support for ELF binary formats.

config SYMTAB_ORDEREDBYNAME
	bool "Symbol Tables Ordered by Name"
	default n
	---help---
		Select if the symbol table is ordered by symbol name.  In this case,
		the logic can perform faster lookups using a binary search.
		Otherwise, the symbol table is assumed to be un-ordered an only
		slow, linear searches are supported.
