# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the input core drivers.
#

# Each configuration option enables a list of files.

obj-$(CONFIG_JOYSTICK_A3D)		+= a3d.o
obj-$(CONFIG_JOYSTICK_ADC)		+= adc-joystick.o
obj-$(CONFIG_JOYSTICK_ADI)		+= adi.o
obj-$(CONFIG_JOYSTICK_AMIGA)		+= amijoy.o
obj-$(CONFIG_JOYSTICK_AS5011)		+= as5011.o
obj-$(CONFIG_JOYSTICK_ANALOG)		+= analog.o
obj-$(CONFIG_JOYSTICK_COBRA)		+= cobra.o
obj-$(CONFIG_JOYSTICK_DB9)		+= db9.o
obj-$(CONFIG_JOYSTICK_FSIA6B)		+= fsia6b.o
obj-$(CONFIG_JOYSTICK_GAMECON)		+= gamecon.o
obj-$(CONFIG_JOYSTICK_GF2K)		+= gf2k.o
obj-$(CONFIG_JOYSTICK_GRIP)		+= grip.o
obj-$(CONFIG_JOYSTICK_GRIP_MP)		+= grip_mp.o
obj-$(CONFIG_JOYSTICK_GUILLEMOT)	+= guillemot.o
obj-$(CONFIG_JOYSTICK_IFORCE)		+= iforce/
obj-$(CONFIG_JOYSTICK_INTERACT)		+= interact.o
obj-$(CONFIG_JOYSTICK_JOYDUMP)		+= joydump.o
obj-$(CONFIG_JOYSTICK_MAGELLAN)		+= magellan.o
obj-$(CONFIG_JOYSTICK_MAPLE)		+= maplecontrol.o
obj-$(CONFIG_JOYSTICK_N64)		+= n64joy.o
obj-$(CONFIG_JOYSTICK_PSXPAD_SPI)	+= psxpad-spi.o
obj-$(CONFIG_JOYSTICK_PXRC)		+= pxrc.o
obj-$(CONFIG_JOYSTICK_QWIIC)		+= qwiic-joystick.o
obj-$(CONFIG_JOYSTICK_SENSEHAT)	+= sensehat-joystick.o
obj-$(CONFIG_JOYSTICK_SIDEWINDER)	+= sidewinder.o
obj-$(CONFIG_JOYSTICK_SPACEBALL)	+= spaceball.o
obj-$(CONFIG_JOYSTICK_SPACEORB)		+= spaceorb.o
obj-$(CONFIG_JOYSTICK_STINGER)		+= stinger.o
obj-$(CONFIG_JOYSTICK_TMDC)		+= tmdc.o
obj-$(CONFIG_JOYSTICK_TURBOGRAFX)	+= turbografx.o
obj-$(CONFIG_JOYSTICK_TWIDJOY)		+= twidjoy.o
obj-$(CONFIG_JOYSTICK_WARRIOR)		+= warrior.o
obj-$(CONFIG_JOYSTICK_WALKERA0701)	+= walkera0701.o
obj-$(CONFIG_JOYSTICK_XPAD)		+= xpad.o
obj-$(CONFIG_JOYSTICK_ZHENHUA)		+= zhenhua.o
