# Copyright (c) 2016 Intel Corporation
# Copyright (c) 2020 Nordic Semiconductor (ASA)
# SPDX-License-Identifier: Apache-2.0

menu "File Systems"

config FILE_SYSTEM
	bool "File system support"
	help
	  Enables support for file system.

if FILE_SYSTEM

module = FS
module-str = fs
source "subsys/logging/Kconfig.template.log_config"

config APP_LINK_WITH_FS
	bool "Link 'app' with FS"
	default y
	help
	  Add FS header files to the 'app' include path. It may be
	  disabled if the include paths for FS are causing aliasing
	  issues for 'app'.

config FILE_SYSTEM_MAX_TYPES
	int "Maximum number of distinct file system types allowed"
	default 2
	help
	  Zephyr provides several file system types including FatFS and
	  LittleFS, but it is possible to define additional ones and
	  register them.  A slot is required for each type.

config FILE_SYSTEM_MAX_FILE_NAME
       int "Optional override for maximum file name length"
       default -1
       help
         Specify the maximum file name allowed across all enabled file
         system types.  Zero or a negative value selects the maximum
         file name length for enabled in-tree file systems.  This
         default may be inappropriate when registering an out-of-tree
         file system.  Selecting a value less than the actual length
         supported by a file system may result in memory access
         violations.

config FILE_SYSTEM_SHELL
	bool "File system shell"
	depends on SHELL
	depends on HEAP_MEM_POOL_SIZE > 0
	help
	  This shell provides basic browsing of the contents of the
	  file system.

config FUSE_FS_ACCESS
	bool "FUSE based access to file system partitions"
	depends on ARCH_POSIX
	help
	  Expose file system partitions to the host system through FUSE.

rsource "Kconfig.fatfs"
rsource "Kconfig.littlefs"

endif # FILE_SYSTEM

rsource "fcb/Kconfig"
rsource "nvs/Kconfig"

endmenu
