# SPDX-License-Identifier: GPL-2.0
#
# Rust bindings shim — shared C shim code linked into vmlinux
#
# Minimal set for the touchscreen example:
#   - device_shim.o : device model
#   - err_shim.o    : error-pointer helpers (IS_ERR / PTR_ERR / ERR_PTR)
#   - input_shim.o  : input subsystem
#   - spi_shim.o    : SPI subsystem
#
# To add a subsystem:
#   1. Add include/wrapper_<subsystem>.h
#   2. Add src/<subsystem>_shim.c implementing wrapper_* symbols
#   3. Append the .o to rust_shim-y below
#   4. Add prototypes to include/linux/rust_shim.h (for modpost)
#   5. Update ALL_SUBSYSTEMS in generate_bindings.sh

# Shim sources include wrapper_*.h from this directory.
# $(srctree)/$(src) keeps paths correct for O=... builds.
ccflags-y += -I$(srctree)/$(src)/include

obj-$(CONFIG_RUST_DRIVERS) += rust_shim.o

rust_shim-y := \
	src/acpi_shim.o \
	src/amba_shim.o \
	src/arch_timer_shim.o \
	src/barrier_shim.o \
	src/bitops_shim.o \
	src/capability_shim.o \
	src/clk_shim.o \
	src/crc8_shim.o \
	src/cros_ec_shim.o \
	src/debugfs_shim.o \
	src/device_shim.o \
	src/dmi_shim.o \
	src/err_shim.o \
	src/firmware_shim.o \
	src/fs_shim.o \
	src/firmware_shim.o \
	src/gpio_shim.o \
	src/hid_shim.o \
	src/hrtimer_shim.o \
	src/hwmon_shim.o \
	src/debugfs_shim.o \
	src/machine_t_shim.o \
	src/hid_shim.o \
	src/iio_shim.o \
	src/kthread_shim.o \
	src/i2c_shim.o \
	src/idr_shim.o \
	src/input_shim.o \
	src/io_shim.o \
	src/irq_shim.o \
	src/kref_shim.o \
	src/leds_shim.o \
	src/list_shim.o \
	src/matrix_keypad_shim.o \
	src/memory_shim.o \
	src/mfd_shim.o \
	src/module_shim.o \
	src/net_shim.o \
	src/nls_shim.o \
	src/notifier_shim.o \
	src/of_shim.o \
	src/pci_shim.o \
	src/platform_shim.o \
	src/power_shim.o \
	src/reboot_shim.o \
	src/regmap_shim.o \
	src/reset_shim.o \
	src/refcount_shim.o \
	src/series_shim.o \
	src/spi_shim.o \
	src/sync_shim.o \
	src/sysfs_shim.o \
	src/timer_shim.o \
	src/uaccess_shim.o \
	src/usb_shim.o \
	src/watchdog_shim.o \
	src/workqueue_shim.o \
	src/macros_shim.o \
	src/regulator_shim.o \
	src/xhci_shim.o

# Block (blk-mq) shim only compiled when CONFIG_BLOCK is enabled
rust_shim-$(CONFIG_BLOCK) += src/block_shim.o
