set(SRCS	ControllerEmu.cpp
			InputConfig.cpp
			ControllerInterface/ControllerInterface.cpp
			ControllerInterface/Device.cpp
			ControllerInterface/ExpressionParser.cpp)
set(LIBS	common)

if(WIN32)
	set(SRCS	${SRCS}
				ControllerInterface/DInput/DInput.cpp
				ControllerInterface/DInput/DInputJoystick.cpp
				ControllerInterface/DInput/DInputKeyboardMouse.cpp
				ControllerInterface/DInput/XInputFilter.cpp
				ControllerInterface/XInput/XInput.cpp
				ControllerInterface/ForceFeedback/ForceFeedbackDevice.cpp)
elseif(APPLE)
	find_library(COREFOUNDATION_LIBRARY CoreFoundation)
	find_library(CARBON_LIBRARY Carbon)
	find_library(COCOA_LIBRARY Cocoa)
	set(SRCS	${SRCS}
				ControllerInterface/OSX/OSX.mm
				ControllerInterface/OSX/OSXKeyboard.mm
				ControllerInterface/OSX/OSXJoystick.mm
				ControllerInterface/Quartz/Quartz.mm
				ControllerInterface/Quartz/QuartzKeyboardAndMouse.mm
				ControllerInterface/ForceFeedback/ForceFeedbackDevice.cpp)
	set(LIBS ${LIBS} ${COREFOUNDATION_LIBRARY} ${CARBON_LIBRARY} ${COCOA_LIBRARY})
elseif(X11_FOUND)
	set(SRCS	${SRCS}
				ControllerInterface/Xlib/XInput2.cpp)
	set(LIBS ${LIBS} ${X11_LIBRARIES} ${X11_INPUT_LIBRARIES})
elseif(ANDROID)
	add_definitions(-DCIFACE_USE_ANDROID)
	set(SRCS ${SRCS}
	         ControllerInterface/Android/Android.cpp)
endif()

if(ANDROID)
        set(SRCS        ${SRCS} GCAdapter_Android.cpp)
else()
        set(SRCS        ${SRCS} GCAdapter.cpp)
        set(LIBS ${LIBS} ${LIBUSB_LIBRARIES})
endif()

if(LIBEVDEV_FOUND AND LIBUDEV_FOUND)
	set(SRCS ${SRCS} ControllerInterface/evdev/evdev.cpp)
	set(LIBS ${LIBS} ${LIBEVDEV_LIBRARY} ${LIBUDEV_LIBRARY})
endif()

if(UNIX)
	set(SRCS ${SRCS} ControllerInterface/Pipes/Pipes.cpp)
endif()

find_package(SDL2)
if(SDL2_FOUND)
	message(STATUS "Using shared SDL2")
	set(SDL_TARGET SDL2::SDL2)
else()
	# SDL2 not found, try SDL
	find_package(SDL)
	if(SDL_FOUND)
		message(STATUS "Using shared SDL")
		add_library(System_SDL INTERFACE)
		target_include_directories(System_SDL INTERFACE ${SDL_INCLUDE_DIR})
		target_link_libraries(System_SDL INTERFACE ${SDL_LIBRARY})
		set(SDL_TARGET System_SDL)
	endif()
endif()
if(SDL_TARGET AND TARGET ${SDL_TARGET})
	set(SRCS ${SRCS} ControllerInterface/SDL/SDL.cpp)
	set(LIBS ${LIBS} ${SDL_TARGET})
	add_definitions(-DHAVE_SDL=1)
else()
  message(STATUS "SDL NOT found, disabling SDL input")
endif()

add_dolphin_library(inputcommon "${SRCS}" "${LIBS}")
