Simple Directmedia Layer
Go to file
Misa 3bf7994fe2 Add and use `SDL_FALLTHROUGH` for fallthroughs
Case fallthrough warnings can be suppressed using the __fallthrough__
compiler attribute. Unfortunately, not all compilers have this
attribute, or even have __has_attribute to check if they have the
__fallthrough__ attribute. [[fallthrough]] is also available in C++17
and the next C2x, but not everyone uses C++17 or C2x.

So define the SDL_FALLTHROUGH macro to deal with those problems - if we
are using C++17 or C2x, it expands to [[fallthrough]]; else if the
compiler has __has_attribute and has the __fallthrough__ attribute, then
it expands to __attribute__((__fallthrough__)); else it expands to an
empty statement, with a /* fallthrough */ comment (it's a do {} while
(0) statement, because users of this macro need to use a semicolon,
because [[fallthrough]] and __attribute__((__fallthrough__)) require a
semicolon).

Clang before Clang 10 and GCC before GCC 7 have problems with using
__attribute__ as a sole statement and warn about a "declaration not
declaring anything", so fall back to using the /* fallthrough */ comment
if we are using those older compiler versions.

Applications using SDL are also free to use this macro (because it is
defined in begin_code.h).

All existing /* fallthrough */ comments have been replaced with this
macro. Some of them were unnecessary because they were the last case in
a switch; using SDL_FALLTHROUGH in those cases would result in a compile
error on compilers that support __fallthrough__, for having a
__attribute__((__fallthrough__)) statement that didn't immediately
precede a case label.
2021-11-12 07:26:14 +03:00
.github CI: disable fail-fast to avoid aborting build when one platform fails 2021-11-08 20:14:08 -06:00
VisualC Build hidapi code into SDL as a new public API 2021-11-07 23:00:59 -08:00
VisualC-WinRT Build hidapi code into SDL as a new public API 2021-11-07 23:00:59 -08:00
Xcode We're no longer building a separate shared library for hidapi 2021-11-09 05:40:57 -08:00
Xcode-iOS Added documentation that the UIApplicationSupportsIndirectInputEvents key must be set to true 2021-11-09 20:32:16 -08:00
acinclude acinclude/libtool.m4: Apply macos11 patch from libtool bug #44605 2021-01-09 00:11:20 +03:00
android-project The hidapi code is now built into SDL, we don't need to load a shared library for it 2021-11-11 19:29:42 -08:00
android-project-ant Added the old ant Android build project structure 2017-10-28 12:11:25 -07:00
build-scripts fnsince.pl: Report unreleased APIs as part of the next release version. 2021-11-10 15:40:27 -05:00
cmake Separated the HIDAPI subsystem from HIDAPI joysticks 2021-11-11 09:16:44 -08:00
debian Updated to version 2.0.17 for development 2021-08-10 15:02:36 -07:00
docs minor update to os/2 readme. 2021-11-11 23:40:24 +03:00
include Add and use `SDL_FALLTHROUGH` for fallthroughs 2021-11-12 07:26:14 +03:00
src Add and use `SDL_FALLTHROUGH` for fallthroughs 2021-11-12 07:26:14 +03:00
test Add and use `SDL_FALLTHROUGH` for fallthroughs 2021-11-12 07:26:14 +03:00
visualtest fix permissions of a few files 2021-02-22 15:44:32 +03:00
wayland-protocols wayland: Add support for text-input-unstable-v3 2021-07-29 14:43:46 -07:00
.gitignore testsurround: Add surround sound channel tester 2021-10-30 21:26:03 -07:00
Android.mk Build hidapi code into SDL as a new public API 2021-11-07 23:00:59 -08:00
BUGS.txt Cleaned up a few more Bugzilla mentions. 2021-02-12 14:46:49 -05:00
CMakeLists.txt Separated the HIDAPI subsystem from HIDAPI joysticks 2021-11-11 09:16:44 -08:00
CREDITS.txt Fixed crash if initialization of EGL failed but was tried again later. 2015-06-21 17:33:46 +02:00
INSTALL.txt development list has moved to forum 2021-06-01 16:49:13 -07:00
LICENSE.txt license: Fixing the license file to be correctly scooped up by Github automation 2021-02-17 13:08:13 -05:00
Makefile.in Install SDL_hidapi.h 2021-11-08 20:35:56 -08:00
Makefile.minimal added src/hidapi/*.c to sources in standalone makefiles 2021-11-09 10:00:24 +03:00
Makefile.os2 os2: remove SDL_hidapi duplications in makefile, disable it in config. 2021-11-08 17:00:28 +03:00
Makefile.pandora added src/hidapi/*.c to sources in standalone makefiles 2021-11-09 10:00:24 +03:00
Makefile.psp added src/hidapi/*.c to sources in standalone makefiles 2021-11-09 10:00:24 +03:00
Makefile.wiz added src/hidapi/*.c to sources in standalone makefiles 2021-11-09 10:00:24 +03:00
README-SDL.txt More HTTPS changes in the documentation. 2017-02-16 16:52:03 -05:00
README.md Update and rename README.txt to README.md 2021-03-20 18:46:37 -04:00
SDL2.spec.in license: Fixed references to COPYING.txt that are now LICENSE.txt. 2021-02-18 11:07:26 -05:00
SDL2Config.cmake Fix Debug-only builds with CMake 2021-10-05 18:45:53 -07:00
TODO.txt Fixed up legacy MoinMoin URLs at wiki.libsdl.org 2021-04-01 12:20:33 -04:00
WhatsNew.txt Added support for /dev/input/js* on Linux 2021-11-10 20:02:25 -08:00
autogen.sh bump minimum required autoconf version and revise autogen.sh 2021-04-14 23:20:40 +03:00
cmake_uninstall.cmake.in Fixed bug 3867 - Can't find install_manifest.txt when running 'uninstall' target 2017-10-12 08:44:45 -07:00
configure Separated the HIDAPI subsystem from HIDAPI joysticks 2021-11-11 09:16:44 -08:00
configure.ac Separated the HIDAPI subsystem from HIDAPI joysticks 2021-11-11 09:16:44 -08:00
sdl2-config-version.cmake.in cmake: Forgot to add this file to revision control. 2020-02-25 14:52:03 -05:00
sdl2-config.cmake.in sdl2-config.cmake.in: Make SDL2::SDL2 work with MinGW, fixes #3665 2021-07-08 14:55:33 -07:00
sdl2-config.in build: Don't duplicate Libs in Libs.private in pkg-config file 2020-04-12 13:24:36 +01:00
sdl2.m4 acinclude & sdl2.m4 updates: 2020-12-22 17:00:28 +03:00
sdl2.pc.in rename PKG_CONFIG_LIBS_PRIV to PKGCONFIG_LIBS_PRIV 2021-04-14 21:40:50 +03:00

README.md

Simple DirectMedia Layer (SDL) Version 2.0

https://www.libsdl.org/

Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. It is used by video playback software, emulators, and popular games including Valve's award winning catalog and many Humble Bundle games.

More extensive documentation is available in the docs directory, starting with README.md

Enjoy!

Sam Lantinga (slouken@libsdl.org)