add_library(inputcommon DynamicInputTextureManager.cpp DynamicInputTextureManager.h GCAdapter.cpp GCAdapter.h ImageOperations.cpp ImageOperations.h InputConfig.cpp InputConfig.h InputProfile.cpp InputProfile.h ControllerEmu/ControllerEmu.cpp ControllerEmu/ControllerEmu.h ControllerEmu/StickGate.cpp ControllerEmu/StickGate.h ControllerEmu/Control/Control.cpp ControllerEmu/Control/Control.h ControllerEmu/Control/Input.cpp ControllerEmu/Control/Input.h ControllerEmu/Control/Output.cpp ControllerEmu/Control/Output.h ControllerEmu/ControlGroup/AnalogStick.cpp ControllerEmu/ControlGroup/AnalogStick.h ControllerEmu/ControlGroup/Attachments.cpp ControllerEmu/ControlGroup/Attachments.h ControllerEmu/ControlGroup/Buttons.cpp ControllerEmu/ControlGroup/Buttons.h ControllerEmu/ControlGroup/ControlGroup.cpp ControllerEmu/ControlGroup/ControlGroup.h ControllerEmu/ControlGroup/Cursor.cpp ControllerEmu/ControlGroup/Cursor.h ControllerEmu/ControlGroup/Force.cpp ControllerEmu/ControlGroup/Force.h ControllerEmu/ControlGroup/IMUAccelerometer.cpp ControllerEmu/ControlGroup/IMUAccelerometer.h ControllerEmu/ControlGroup/IMUCursor.cpp ControllerEmu/ControlGroup/IMUCursor.h ControllerEmu/ControlGroup/IMUGyroscope.cpp ControllerEmu/ControlGroup/IMUGyroscope.h ControllerEmu/ControlGroup/IRPassthrough.cpp ControllerEmu/ControlGroup/IRPassthrough.h ControllerEmu/ControlGroup/MixedTriggers.cpp ControllerEmu/ControlGroup/MixedTriggers.h ControllerEmu/ControlGroup/ModifySettingsButton.cpp ControllerEmu/ControlGroup/ModifySettingsButton.h ControllerEmu/ControlGroup/Slider.cpp ControllerEmu/ControlGroup/Slider.h ControllerEmu/ControlGroup/Tilt.cpp ControllerEmu/ControlGroup/Tilt.h ControllerEmu/ControlGroup/Triggers.cpp ControllerEmu/ControlGroup/Triggers.h ControllerEmu/Setting/NumericSetting.cpp ControllerEmu/Setting/NumericSetting.h ControllerInterface/DualShockUDPClient/DualShockUDPClient.cpp ControllerInterface/DualShockUDPClient/DualShockUDPClient.h ControllerInterface/DualShockUDPClient/DualShockUDPProto.h ControllerInterface/ControllerInterface.cpp ControllerInterface/ControllerInterface.h ControllerInterface/CoreDevice.cpp ControllerInterface/CoreDevice.h ControllerInterface/InputBackend.cpp ControllerInterface/InputBackend.h ControllerInterface/MappingCommon.cpp ControllerInterface/MappingCommon.h ControllerInterface/Wiimote/WiimoteController.cpp ControllerInterface/Wiimote/WiimoteController.h ControlReference/ControlReference.cpp ControlReference/ControlReference.h ControlReference/ExpressionParser.cpp ControlReference/ExpressionParser.h ControlReference/FunctionExpression.cpp ControlReference/FunctionExpression.h DynamicInputTextures/DITConfiguration.cpp DynamicInputTextures/DITConfiguration.h DynamicInputTextures/DITData.h DynamicInputTextures/DITSpecification.cpp DynamicInputTextures/DITSpecification.h ) target_link_libraries(inputcommon PUBLIC common PRIVATE fmt::fmt sfml-network spng::spng ) if(WIN32) target_sources(inputcommon PRIVATE ControllerInterface/DInput/DInput.cpp ControllerInterface/DInput/DInput.h ControllerInterface/DInput/DInput8.h ControllerInterface/DInput/DInputJoystick.cpp ControllerInterface/DInput/DInputJoystick.h ControllerInterface/DInput/DInputKeyboardMouse.cpp ControllerInterface/DInput/DInputKeyboardMouse.h ControllerInterface/DInput/NamedKeys.h ControllerInterface/DInput/XInputFilter.cpp ControllerInterface/DInput/XInputFilter.h ControllerInterface/Win32/Win32.cpp ControllerInterface/Win32/Win32.h ControllerInterface/WGInput/WGInput.cpp ControllerInterface/WGInput/WGInput.h ControllerInterface/XInput/XInput.cpp ControllerInterface/XInput/XInput.h ControllerInterface/ForceFeedback/ForceFeedbackDevice.cpp ControllerInterface/ForceFeedback/ForceFeedbackDevice.h ) elseif(APPLE) target_sources(inputcommon PRIVATE ControllerInterface/Quartz/Quartz.h ControllerInterface/Quartz/Quartz.mm ControllerInterface/Quartz/QuartzKeyboardAndMouse.h ControllerInterface/Quartz/QuartzKeyboardAndMouse.mm ) target_link_libraries(inputcommon PRIVATE ${COREFOUNDATION_LIBRARY} ${CARBON_LIBRARY} ${COCOA_LIBRARY} ${FORCEFEEDBACK_LIBRARY} ) target_compile_options(inputcommon PRIVATE -fobjc-arc ) elseif(X11_FOUND) target_include_directories(inputcommon PUBLIC ${X11_INPUT_INCLUDE_DIRS}) target_sources(inputcommon PRIVATE ControllerInterface/Xlib/XInput2.cpp ControllerInterface/Xlib/XInput2.h ) target_link_libraries(inputcommon PRIVATE PkgConfig::X11_INPUT) elseif(ANDROID) target_compile_definitions(inputcommon PRIVATE -DCIFACE_USE_ANDROID) target_sources(inputcommon PRIVATE ControllerInterface/Android/Android.cpp ControllerInterface/Android/Android.h ControllerInterface/Touch/InputOverrider.cpp ControllerInterface/Touch/InputOverrider.h ) target_link_libraries(inputcommon PRIVATE androidcommon ) endif() if(NOT ANDROID) target_link_libraries(inputcommon PUBLIC LibUSB::LibUSB) endif() if(LIBEVDEV_FOUND AND LIBUDEV_FOUND) target_sources(inputcommon PRIVATE ControllerInterface/evdev/evdev.cpp ControllerInterface/evdev/evdev.h ) target_include_directories(inputcommon PRIVATE ${LIBEVDEV_INCLUDE_DIR} ${LIBUDEV_INCLUDE_DIR} ) target_link_libraries(inputcommon PRIVATE ${LIBEVDEV_LIBRARY} ${LIBUDEV_LIBRARY} ) endif() if(UNIX) target_sources(inputcommon PRIVATE ControllerInterface/Pipes/Pipes.cpp ControllerInterface/Pipes/Pipes.h ) endif() if(ENABLE_SDL) target_sources(inputcommon PRIVATE ControllerInterface/SDL/SDL.cpp ControllerInterface/SDL/SDL.h ) target_link_libraries(inputcommon PRIVATE SDL2::SDL2) target_compile_definitions(inputcommon PUBLIC HAVE_SDL2=1) endif() if(MSVC) # Add precompiled header target_link_libraries(inputcommon PRIVATE use_pch) endif() if(TARGET Hidapi::Hidapi) target_sources(inputcommon PRIVATE ControllerInterface/SteamDeck/SteamDeck.cpp ControllerInterface/SteamDeck/SteamDeck.h ) target_link_libraries(inputcommon PUBLIC Hidapi::Hidapi) target_compile_definitions(inputcommon PRIVATE -DHAVE_HIDAPI=1) endif()