mirror of
https://github.com/libretro/RetroArch.git
synced 2026-11-07 08:36:02 -10:00
libShake was used by one driver, sdl_dingux, for its vibration motor, and linked on webOS for nothing. What it did there is a few evdev calls: find the node that plays a periodic sine, upload a sine per motor, play and stop it, set the gain. input/common/linux_ff.h does those with no allocation (libShake scanned /dev/input with scandir and malloc'd a node per entry) and none of its bugs (an open that failed was taken as success). The uploads and plays now go out from the shared output writer, as udev's and XInput's rumble do, so a motor's driver never holds the frame; the frontend's thread notes the strengths, both in one word, and returns. A core asking the same strength each frame costs no call at all. On MIPS (-O2, mips32) that path is 15 to 19 instructions with no stack frame, where it was about 32 with a frame and four spills. Every SDL Dingux target gets the motor now, not only the three that built libShake; one without a motor finds none and has no rumble, as before. The output writer makes no syscall for a wake while one is still on its way, which every driver on it gains from. xinput_rumble_test says a call did not wait by the write not being done yet, not by a time a loaded runner can overrun. samples/input/dingux_rumble runs the real driver against a stand-in /dev/input and SDL, with threads and without.
273 lines
13 KiB
Bash
273 lines
13 KiB
Bash
# Install paths
|
|
HAVE_LIBRETRO= # Libretro library used
|
|
HAVE_ASSETS_DIR= # Assets install directory
|
|
HAVE_FILTERS_DIR= # Audio/video filters directory
|
|
HAVE_CORE_INFO_DIR= # Core info directory
|
|
|
|
# Build
|
|
HAVE_DEBUG=no # Debug build
|
|
HAVE_DYNAMIC=yes # Dynamic loading of libretro library
|
|
HAVE_DYLIB=auto # Dynamic loading support
|
|
HAVE_PRESERVE_DYLIB=no # Enable dlclose() for Valgrind support
|
|
HAVE_THREADS=auto # Threading support
|
|
HAVE_THREAD_STORAGE=auto # Thread Local Storage support
|
|
HAVE_MMAP=auto # MMAP support
|
|
HAVE_MEMFD_CREATE=auto # memfd_create support
|
|
HAVE_NEON=no # ARM NEON optimizations
|
|
HAVE_SSE=no # x86 SSE optimizations (SSE, SSE2)
|
|
HAVE_FLOATHARD=no # Force hard float ABI (for ARM)
|
|
HAVE_FLOATSOFTFP=no # Force soft float ABI (for ARM)
|
|
HAVE_DRMINGW=no # DrMingw exception handler
|
|
HAVE_CHECK=no # check support for unit tests
|
|
HAVE_STEAM=no # Steam build
|
|
HAVE_MIST=no # Steam build with mist
|
|
|
|
# Frontend features
|
|
HAVE_CONFIGFILE=yes # Config file support
|
|
HAVE_CORE_INFO_CACHE=yes # Core info cache support
|
|
HAVE_LIBRETRODB=yes # Libretrodb support
|
|
HAVE_PATCH=yes # Softpatching support (BPS/IPS/UPS)
|
|
HAVE_XDELTA=auto # .xdelta (VCDIFF) softpatching support (requires softpatching)
|
|
HAVE_CHEATS=yes # Cheat support
|
|
HAVE_REWIND=yes # Rewind support
|
|
HAVE_RUNAHEAD=yes # Runahead support
|
|
HAVE_BSV_MOVIE=yes # BSV movie support
|
|
HAVE_SCREENSHOTS=yes # Screenshot support
|
|
HAVE_OVERLAY=yes # Overlay support
|
|
HAVE_VIDEO_FILTER=yes # Video filter support
|
|
HAVE_DSP_FILTER=yes # DSP filter support
|
|
HAVE_AUDIOMIXER=yes # Audio Mixer
|
|
HAVE_MICROPHONE=yes # Microphone support
|
|
HAVE_LANGEXTRA=yes # Multi-language support
|
|
HAVE_IMAGEVIEWER=no # Built-in image viewer support
|
|
HAVE_VIDEOPROCESSOR=auto # Enable video processor core
|
|
HAVE_WEBMPLAYER=no # Built-in WebM/MP4 movie player
|
|
HAVE_CDROM=auto # CD-ROM support
|
|
HAVE_BLUETOOTH=no # Bluetooth support
|
|
HAVE_WIFI=no # wifi driver support
|
|
HAVE_GAME_AI=no
|
|
HAVE_ACCESSIBILITY=yes # Accessibility Integration
|
|
HAVE_TRANSLATE=yes # OCR and Translation Server Integration
|
|
HAVE_NVDA=yes # NVDA support
|
|
HAVE_SAPI=no # SAPI support
|
|
|
|
# Menu and companion UI
|
|
HAVE_MENU=yes # Enable menu drivers
|
|
HAVE_GFX_WIDGETS=yes # Enable graphics widgets
|
|
HAVE_RGUI=auto # RGUI menu
|
|
HAVE_MATERIALUI=auto # MaterialUI menu
|
|
HAVE_XMB=auto # XMB menu
|
|
HAVE_OZONE=auto # Ozone menu
|
|
HAVE_SHADERPIPELINE=yes # Additional shader-based pipelines
|
|
C89_SHADERPIPELINE=yes
|
|
HAVE_QT=auto # Qt companion support
|
|
C89_QT=no
|
|
HAVE_COCOA=auto # Cocoa support (Darwin/Apple)
|
|
HAVE_RETROARCH_PLAYLIST_MANAGER=auto # iOS/tvOS + macOS 10.11+ playlist helper (see qb/config.libs.sh)
|
|
|
|
# Networking and online services
|
|
HAVE_NETWORKING=auto # Networking features (recommended)
|
|
HAVE_IFINFO=yes
|
|
HAVE_NETPLAYDISCOVERY=yes # Add netplay discovery (room creation, etc.)
|
|
HAVE_NETWORKGAMEPAD=auto # Networked game pad (plus baked-in core)
|
|
C89_NETWORKGAMEPAD=no
|
|
HAVE_COMMAND=no # Network command interface, to remote control RA
|
|
HAVE_MCP=yes # MCP server for AI assistants (needs networking and the command interface; off unless enabled in settings)
|
|
HAVE_ONLINE_UPDATER=yes # Online updater
|
|
HAVE_UPDATE_CORES=yes # Downloading cores with the online updater
|
|
HAVE_UPDATE_CORE_INFO=yes # Downloading core info files with the online updater
|
|
HAVE_UPDATE_ASSETS=yes # Downloading assets with the online updater
|
|
HAVE_CHEEVOS=yes # Retro Achievements
|
|
HAVE_CHEEVOS_RVZ=yes # Retro Achievements hashing for Wii/GC RVZ files, depends on RZSTD
|
|
HAVE_LUA=no # Lua support (for Retro Achievements)
|
|
HAVE_DISCORD=yes # Discord Integration
|
|
C89_DISCORD=no
|
|
|
|
# Crypto, TLS and network filesystems
|
|
HAVE_CRYPTO=yes # Cleanroom crypto library (libretro-common/crypto)
|
|
HAVE_KEYCHAIN=yes # Encrypt credentials in retroarch-keychain.cfg (needs HAVE_CRYPTO)
|
|
HAVE_SSL=auto # SSL support
|
|
C89_SSL=no
|
|
HAVE_RETROSSL=auto # Use built-in TLS client on libretro-common/crypto (needs HAVE_CRYPTO)
|
|
HAVE_MBEDTLS=no # Use a system mbedTLS for TLS in place of the built-in client
|
|
HAVE_BEARSSL=no # Use a system BearSSL for TLS in place of the built-in client
|
|
HAVE_RETRONFS=auto # Built-in NFSv3 client and nfs:// support (needs networking)
|
|
HAVE_SMBCLIENT=auto # SMB client support
|
|
HAVE_RETROSMB=auto # Built-in SMB2/3 client (needs HAVE_CRYPTO), used unless a libsmb2 is asked for
|
|
HAVE_LIBSMB=no # Use a system libsmb2 for SMB in place of the built-in client
|
|
|
|
# Video drivers
|
|
HAVE_OPENGL=auto # OpenGL 2.0 support
|
|
HAVE_OPENGL_CORE=yes # Modern OpenGL driver support (GLES3+/GL3.2 core+), requires OpenGL.
|
|
C89_OPENGL_CORE=no
|
|
HAVE_OPENGL1=yes # OpenGL 1.1 support
|
|
HAVE_OPENGLES=no # Use GLESv2 instead of desktop GL
|
|
HAVE_OPENGLES3=no # OpenGLES3 support
|
|
HAVE_OPENGLES3_1=no # OpenGLES3.1 support
|
|
HAVE_OPENGLES3_2=no # OpenGLES3.2 support
|
|
HAVE_OPENGLES_LIBS= # Link flags for custom GLES library
|
|
HAVE_OPENGLES_CFLAGS= # C-flags for custom GLES library
|
|
HAVE_ANGLE=no # ANGLE support (OpenGL wrapper)
|
|
HAVE_VULKAN=auto # Vulkan support
|
|
C89_VULKAN=no
|
|
HAVE_VULKAN_DISPLAY=yes # Vulkan KHR display backend support
|
|
HAVE_OPENXR=no # OpenXR headset output (Vulkan, or desktop GL on Linux; the vendored Khronos loader is built in-tree)
|
|
C89_OPENXR=no
|
|
HAVE_VIDEO_WINDOWS=no # Separate windows for a core's secondary screens (Android builds it in)
|
|
HAVE_METAL=no # Metal support (macOS-only)
|
|
C89_METAL=no
|
|
HAVE_D3D8=no # Direct3D 8 support
|
|
HAVE_D3D9=auto # Direct3D 9 support
|
|
C89_D3D9=no
|
|
HAVE_D3D10=yes # Direct3D 10 support
|
|
C89_D3D10=no
|
|
HAVE_D3D11=yes # Direct3D 11 support
|
|
C89_D3D11=no
|
|
HAVE_D3D12=yes # Direct3D 12 support
|
|
C89_D3D12=no
|
|
HAVE_GDI=yes # GDI support (Win32-only)
|
|
HAVE_XVIDEO=no # XVideo support
|
|
HAVE_XSHM=no # XShm video driver support
|
|
HAVE_VG=auto # OpenVG support
|
|
HAVE_OMAP=no # OMAP video support
|
|
HAVE_EXYNOS=no # Exynos video support
|
|
HAVE_DISPMANX=no # Dispmanx video support
|
|
HAVE_SUNXI=no # Sunxi video support
|
|
HAVE_VIDEOCORE=auto # Broadcom Videocore 4 support
|
|
HAVE_PLAIN_DRM=no # Plain DRM video support
|
|
HAVE_CACA=no # Libcaca support
|
|
HAVE_SIXEL=auto # Libsixel support
|
|
HAVE_HUB75=no # Raspberry Pi HUB75 RGB LED matrix video driver
|
|
C89_HUB75=no
|
|
HAVE_NETWORK_VIDEO=no
|
|
HAVE_ODROIDGO2=no # ODROID-GO Advance rotation support (requires librga)
|
|
HAVE_OSMESA=no # Off-screen Mesa rendering
|
|
HAVE_MODELINE=yes # Video modeline engine (CRT mode switching); no dependencies
|
|
HAVE_CRTSWITCHRES=yes # One-cycle alias for HAVE_MODELINE
|
|
|
|
# Windowing and display contexts
|
|
HAVE_X11=auto # X11 support
|
|
HAVE_XRANDR=auto # Xrandr support
|
|
HAVE_XINERAMA=auto # Xinerama support
|
|
HAVE_XSCRNSAVER=auto # Xss support
|
|
HAVE_GLX=auto # GLX support (set this to 'off' for vendor-neutral OpenGL impl)
|
|
HAVE_EGL=auto # EGL context support
|
|
HAVE_DYNAMIC_EGL=no # Dynamic library EGL support
|
|
HAVE_WAYLAND=auto # Wayland support
|
|
C89_WAYLAND=no
|
|
CXX_WAYLAND=no
|
|
HAVE_LIBDECOR=auto # libdecor support
|
|
HAVE_KMS=auto # KMS context support
|
|
C89_KMS=no
|
|
HAVE_MALI_FBDEV=no # Mali fbdev context support
|
|
HAVE_VIVANTE_FBDEV=no # Vivante fbdev context support
|
|
HAVE_OPENDINGUX_FBDEV=no # Opendingux fbdev context support
|
|
HAVE_SDL_DINGUX=no # Opendingux SDL input/gfx driver support
|
|
|
|
# Shaders
|
|
HAVE_GLSL=yes # GLSL shaders support
|
|
HAVE_CG=auto # Cg shader support
|
|
HAVE_HLSL=no # HLSL9 shader support (for Direct3D9)
|
|
HAVE_SLANG=auto # slang support
|
|
C89_SLANG=no
|
|
HAVE_GLSLANG=no # the system's glslang, next to rslc (requires C++11 and SPIRV-Cross)
|
|
C89_GLSLANG=no
|
|
HAVE_SPIRV_CROSS=no # the system's SPIRV-Cross, next to rslc (requires C++11 and glslang)
|
|
C89_SPIRV_CROSS=no
|
|
HAVE_RSLC=yes # rslc clean-room slang compiler (C89, libretro-common)
|
|
|
|
# Audio drivers and resamplers
|
|
HAVE_ALSA=auto # ALSA support
|
|
C89_ALSA=no
|
|
HAVE_TINYALSA=auto # TinyALSA support
|
|
HAVE_PULSE=auto # PulseAudio support
|
|
C89_PULSE=no
|
|
HAVE_PIPEWIRE=auto # PipeWire support
|
|
HAVE_JACK=auto # JACK support
|
|
HAVE_OSS=auto # OSS support
|
|
HAVE_AUDIOIO=auto # AudioIO support
|
|
HAVE_RSOUND=auto # RSound support
|
|
HAVE_ROAR=auto # RoarAudio support
|
|
HAVE_AL=no # OpenAL support
|
|
HAVE_COREAUDIO=auto # CoreAudio support
|
|
HAVE_DSOUND=auto # DirectSound support
|
|
HAVE_XAUDIO=auto # XAudio support
|
|
HAVE_WASAPI=auto # WASAPI support
|
|
HAVE_ASIO=auto # ASIO support (Windows only, requires ASIO-compatible driver)
|
|
HAVE_WDMKS=auto # WDM-KS support (Windows 2000 and up, kernel streaming)
|
|
HAVE_WINMM=auto # WinMM support
|
|
HAVE_NEAREST_RESAMPLER=yes # Nearest resampler
|
|
HAVE_CC_RESAMPLER=yes # CC Resampler
|
|
|
|
# Input drivers and HID
|
|
HAVE_UDEV=auto # Udev/Evdev gamepad support
|
|
HAVE_XI2=auto # XInput2 for X11
|
|
HAVE_WINRAWINPUT=yes # Windows Raw Input support (XP and higher)
|
|
HAVE_DINPUT=auto # Dinput support
|
|
HAVE_MFI=auto # GameController.framework joypad support (Apple)
|
|
HAVE_PARPORT=auto # Parallel port joypad support
|
|
HAVE_HID=no # Low-level HID (Human Interface Device) support
|
|
HAVE_HIDRAW=auto # Linux hidraw HID support
|
|
HAVE_WINUSB=auto # Windows WinUSB HID support
|
|
HAVE_WGI=auto # Windows.Gaming.Input for Xbox pads on the HID driver
|
|
HAVE_LIBUSB=auto # Libusb HID support
|
|
C89_LIBUSB=no
|
|
HAVE_BLISSBOX=auto # Blissbox support
|
|
HAVE_RPILED=auto # RPI led support
|
|
HAVE_TEST_DRIVERS=yes # Test input driver
|
|
|
|
# SDL (video, audio and input)
|
|
HAVE_SDL=auto # SDL support
|
|
C89_SDL=no
|
|
HAVE_SDL2=auto # SDL2 support (disables SDL 1.x)
|
|
C89_SDL2=no
|
|
HAVE_SDL3=auto # SDL3 support (disables SDL 1.x and SDL 2.x)
|
|
|
|
# Camera, location and recording
|
|
HAVE_V4L2=auto # Video4linux2 support
|
|
HAVE_AVF=auto # AVFoundation camera + recording drivers (Apple, macOS 10.7+ / iOS)
|
|
HAVE_CORELOCATION=auto # CoreLocation location driver (Apple, macOS 10.7+ / iOS)
|
|
HAVE_FFMPEG=auto # FFmpeg support
|
|
C89_FFMPEG=no
|
|
HAVE_SSA=auto # SSA/ASS for FFmpeg subtitle support
|
|
HAVE_MPV=no # MPV support
|
|
|
|
# System integration
|
|
HAVE_DBUS=no # dbus support
|
|
HAVE_SYSTEMD=auto # Systemd support
|
|
HAVE_GAMEMODE=yes # Feral GameMode support (Linux)
|
|
C89_GAMEMODE=no
|
|
|
|
# Image, audio and video codecs
|
|
HAVE_FREETYPE=auto # FreeType support
|
|
HAVE_STB_IMAGE=yes # stb image loading support
|
|
HAVE_RPNG=yes # RPNG support
|
|
HAVE_RBMP=yes # RBMP support
|
|
HAVE_RJPEG=yes # RJPEG support
|
|
HAVE_RTGA=yes # RTGA support
|
|
HAVE_RDDS=yes # DDS (DXT/BCn) support
|
|
HAVE_RWEBP=yes # RWEBP support
|
|
HAVE_RWAV=yes # WAV support
|
|
HAVE_RVORBIS=yes # rvorbis Ogg Vorbis audio support
|
|
HAVE_ROPUS=yes # ropus Opus audio support
|
|
HAVE_RAAC=yes # raac AAC audio support
|
|
HAVE_RMP3=yes # rmp3 MP3 audio support
|
|
HAVE_RFLAC=yes # rflac FLAC audio support
|
|
HAVE_FLAC=no # Link against libFLAC (unused by default; FLAC decode is provided by rflac)
|
|
HAVE_RMODTRACKER=yes # rmodtracker MOD/S3M/XM support
|
|
HAVE_RWEBM=yes # RWEBM (WebM/Matroska demuxer) support
|
|
HAVE_RMP4=yes # RMP4 (MP4/ISO-BMFF demuxer) support
|
|
HAVE_RAV1=yes # AV1 hardware decoding support
|
|
HAVE_RVP9=yes # RVP9 (VP9 video decoder) support
|
|
HAVE_RMPEG1=yes # RMPEG1 (MPEG-1 program stream / video) support
|
|
|
|
# Archives and disc images
|
|
HAVE_ZLIB=no # zlib support (uses the built-in DEFLATE codec when disabled)
|
|
HAVE_7ZIP=yes # 7z archive support
|
|
HAVE_RRAR=yes # RAR archive support
|
|
HAVE_RZSTD=yes # Built-in Zstandard codec
|
|
HAVE_RBZIP2=yes # Built-in bzip2 decoder (.bz2, bzip2 zip members)
|
|
HAVE_CHD=yes # CHD disc image support
|
|
HAVE_RCHD=yes # Read CHD images with the built-in reader instead of libchdr
|
|
CXX_CHD=no
|