# 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_I2C
	tristate "I2C Driver"
	depends on I2C=y
	help
	  This option builds the Rust I2C driver sample.

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

	  If unsure, say N.

config SAMPLE_RUST_I2C_CLIENT
	tristate "I2C Client Registration"
	depends on I2C=y
	help
	  This option builds the Rust I2C client manual creation
	  sample.

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

	  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 rust_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
	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
