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()

if(ENABLE_SDL)
	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()
endif()

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