# SPDX-License-Identifier: GPL-2.0

menuconfig SAMPLES_RUST
	bool "Rust samples"
	depends on RUST
	help
	  You can build sample Rust kernel code here.

	  If unsure, say N.

if SAMPLES_RUST

config SAMPLE_RUST_CONFIGFS
	tristate "Configfs sample"
	depends on CONFIGFS_FS
	help
	  This option builds the Rust configfs sample.

	  To compile this as a module, choose M here:
	  the module will be called rust_configfs.

	  If unsure, say N.

config SAMPLE_RUST_MINIMAL
	tristate "Minimal"
	help
	  This option builds the Rust minimal module sample.

	  To compile this as a module, choose M here:
	  the module will be called rust_minimal.

	  If unsure, say N.

config SAMPLE_RUST_MISC_DEVICE
	tristate "Misc device"
	help
	  This option builds the Rust misc device.

	  To compile this as a module, choose M here:
	  the module will be called rust_misc_device.

	  If unsure, say N.

config SAMPLE_RUST_PRINT
	tristate "Printing macros"
	help
	  This option builds the Rust printing macros sample.

	  To compile this as a module, choose M here:
	  the module will be called rust_print.

	  If unsure, say N.

config SAMPLE_RUST_DMA
	tristate "DMA Test Driver"
	depends on PCI
	help
	  This option builds the Rust DMA Test driver sample.

	  To compile this as a module, choose M here:
	  the module will be called rust_dma.

	  If unsure, say N.

config SAMPLE_RUST_DEBUGFS
	tristate "DebugFS Test Module"
	depends on DEBUG_FS
	help
	  This option builds the Rust DebugFS Test module sample.

	  To compile this as a module, choose M here:
	  the module will be called rust_debugfs.

	  If unsure, say N.

config SAMPLE_RUST_DEBUGFS_SCOPED
	tristate "Scoped DebugFS Test Module"
	depends on DEBUG_FS
	help
	  This option builds the Rust Scoped DebugFS Test module sample.

	  To compile this as a module, choose M here:
	  the module will be called rust_debugfs_scoped.

	  If unsure, say N.

config SAMPLE_RUST_DRIVER_PCI
	tristate "PCI Driver"
	depends on PCI
	help
	  This option builds the Rust PCI driver sample.

	  To compile this as a module, choose M here:
	  the module will be called driver_pci.

	  If unsure, say N.

config SAMPLE_RUST_DRIVER_PLATFORM
	tristate "Platform Driver"
	help
	  This option builds the Rust Platform driver sample.

	  To compile this as a module, choose M here:
	  the module will be called rust_driver_platform.

	  If unsure, say N.

config SAMPLE_RUST_DRIVER_USB
	tristate "USB Driver"
	depends on USB = y && BROKEN
	help
	  This option builds the Rust USB driver sample.

	  To compile this as a module, choose M here:
	  the module will be called rust_driver_usb.

	  If unsure, say N.

config SAMPLE_RUST_DRIVER_FAUX
	tristate "Faux Driver"
	help
	  This option builds the Rust Faux driver sample.

	  To compile this as a module, choose M here:
	  the module will be called rust_driver_faux.

	  If unsure, say N.

config SAMPLE_RUST_DRIVER_AUXILIARY
	tristate "Auxiliary Driver"
	depends on PCI
	select AUXILIARY_BUS
	help
	  This option builds the Rust auxiliary driver sample.

	  To compile this as a module, choose M here:
	  the module will be called rust_driver_auxiliary.

	  If unsure, say N.

config SAMPLE_RUST_HOSTPROGS
	bool "Host programs"
	help
	  This option builds the Rust host program samples.

	  If unsure, say N.

endif # SAMPLES_RUST
