[Buildroot] [git commit] package/sdl3: new package
Julien Olivain via buildroot <[email protected]>
| Newsgroups | net.busybox.buildroot |
|---|---|
| Message-ID | <[email protected]> |
commit: https://gitlab.com/buildroot.org/buildroot/-/commit/2dd13e328f118363165b47258429604a5ffd3b41 branch: https://gitlab.com/buildroot.org/buildroot/-/tree/master Simple DirectMedia Layer 3 is a library that allows programs portable low level access to a video framebuffer, audio output, mouse, and keyboard. It is not compatible with SDL2. Compared to SDL2, SDL3 now requires <wchar.h> unconditionally. See: https://github.com/libsdl-org/SDL/blob/release-3.4.12/include/SDL3/SDL_stdinc.h#L53 Compared to SDL2, SDL3 now always requires threads: https://github.com/libsdl-org/SDL/blob/release-3.4.12/CMakeLists.txt#L3660 https://www.libsdl.org/ https://wiki.libsdl.org/SDL3/README-migration Signed-off-by: Michael Fischer <[email protected]> [Julien: - sort SDL3_CONF_OPTS alphabetically - add "depends on BR2_USE_WCHAR" in Config.in - add "depends on BR2_TOOLCHAIN_HAS_THREADS" in Config.in - disable Arm Neon with uClibc ] Signed-off-by: Julien Olivain <[email protected]> --- DEVELOPERS | 1 + package/Config.in | 1 + package/sdl3/Config.in | 81 ++++++++++++++++++++++++++++++++++++++ package/sdl3/sdl3.hash | 5 +++ package/sdl3/sdl3.mk | 103 +++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 191 insertions(+) diff --git a/DEVELOPERS b/DEVELOPERS index c462d41d75..128ce22799 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2426,6 +2426,7 @@ F: configs/arcturus_ucls1012a_defconfig N: Michael Fischer <[email protected]> F: package/gnuplot/ F: package/sdl2/ +F: package/sdl3/ N: Michael Nosthoff <[email protected]> F: package/boost/ diff --git a/package/Config.in b/package/Config.in index 2e845f98db..084a17b7d7 100644 --- a/package/Config.in +++ b/package/Config.in @@ -364,6 +364,7 @@ comment "Graphic libraries" source "package/sdl2_mixer/Config.in" source "package/sdl2_net/Config.in" source "package/sdl2_ttf/Config.in" + source "package/sdl3/Config.in" source "package/spirv-headers/Config.in" source "package/tk/Config.in" source "package/virglrenderer/Config.in" diff --git a/package/sdl3/Config.in b/package/sdl3/Config.in new file mode 100644 index 0000000000..7bce4ceaba --- /dev/null +++ b/package/sdl3/Config.in @@ -0,0 +1,81 @@ +config BR2_PACKAGE_SDL3 + bool "sdl3" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Simple DirectMedia Layer 3 - SDL3 is a library that allows + programs portable low level access to a video framebuffer, + audio output, mouse, and keyboard. It is not compatible with + SDL2. + + http://www.libsdl.org/ + +if BR2_PACKAGE_SDL3 + +config BR2_PACKAGE_SDL3_X11 + bool "X11 video driver" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + +comment "X11 video driver needs X.org" + depends on !BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU + +config BR2_PACKAGE_SDL3_KMSDRM + bool "KMS/DRM video driver" + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm + depends on BR2_PACKAGE_HAS_LIBGBM + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_SDL3_OPENGL || BR2_PACKAGE_SDL3_OPENGLES + select BR2_PACKAGE_LIBDRM + +comment "KMS/DRM video driver needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +comment "KMS/DRM video driver needs a GBM provider, and OpenGL or OpenGLES+EGL" + depends on !BR2_PACKAGE_HAS_LIBGBM || \ + !BR2_PACKAGE_HAS_LIBEGL || \ + !(BR2_PACKAGE_SDL3_OPENGL || BR2_PACKAGE_SDL3_OPENGLES) + +config BR2_PACKAGE_SDL3_WAYLAND + bool "Wayland video driver" + depends on BR2_TOOLCHAIN_HAS_THREADS # wayland + depends on BR2_PACKAGE_WAYLAND + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_SDL3_OPENGLES + select BR2_PACKAGE_LIBXKBCOMMON + select BR2_PACKAGE_WAYLAND_PROTOCOLS + +comment "Wayland video driver needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +comment "Wayland video driver needs wayland with an OpenGLES+EGL backend" + depends on !BR2_PACKAGE_WAYLAND || \ + !BR2_PACKAGE_HAS_LIBEGL || \ + !BR2_PACKAGE_SDL3_OPENGLES + +config BR2_PACKAGE_SDL3_OPENGL + bool "OpenGL (GLX)" + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # X11 video driver + select BR2_PACKAGE_SDL3_X11 + +comment "OpenGL support needs X11 and an OpenGL provider" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_SDL3_OPENGLES + bool "OpenGL ES" + depends on BR2_PACKAGE_HAS_LIBGLES + +comment "OpenGL ES support needs an OpenGL ES provider" + depends on !BR2_PACKAGE_HAS_LIBGLES + +endif + +comment "sdl3 needs a toolchain w/ dynamic library, threads, wchar" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/package/sdl3/sdl3.hash b/package/sdl3/sdl3.hash new file mode 100644 index 0000000000..7340628dc7 --- /dev/null +++ b/package/sdl3/sdl3.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking +# https://www.libsdl.org/release/SDL3-3.4.12.tar.gz.sig +sha256 f07b958a9ac5020fb7a44cadb957f658b2149c3c8abb4f63145fac9303249db7 SDL3-3.4.12.tar.gz +# Locally calculated +sha256 1c040b8271b37e5076359f8fd54240e371114112924d2df81ef87c7d6a1dfdfd LICENSE.txt diff --git a/package/sdl3/sdl3.mk b/package/sdl3/sdl3.mk new file mode 100644 index 0000000000..ecbcbf4bc2 --- /dev/null +++ b/package/sdl3/sdl3.mk @@ -0,0 +1,103 @@ +################################################################################ +# +# sdl3 +# +################################################################################ + +SDL3_VERSION = 3.4.12 +SDL3_SOURCE = SDL3-$(SDL3_VERSION).tar.gz +SDL3_SITE = http://www.libsdl.org/release +SDL3_LICENSE = Zlib +SDL3_LICENSE_FILES = LICENSE.txt +SDL3_CPE_ID_VENDOR = libsdl +SDL3_CPE_ID_PRODUCT = simple_directmedia_layer +SDL3_INSTALL_STAGING = YES + +SDL3_CONF_OPTS = \ + -DSDL_DBUS=OFF \ + -DSDL_DUMMYVIDEO=OFF \ + -DSDL_HIDAPI=OFF \ + -DSDL_IBUS=OFF \ + -DSDL_INSTALL_DOCS=OFF \ + -DSDL_JOYSTICK_MFI=OFF \ + -DSDL_JOYSTICK_VIRTUAL=OFF \ + -DSDL_OFFSCREEN=OFF \ + -DSDL_PULSEAUDIO=OFF \ + -DSDL_RENDER_D3D=OFF \ + -DSDL_RPATH=OFF \ + -DSDL_STATIC=ON \ + -DSDL_UNIX_CONSOLE_BUILD=ON \ + -DSDL_VIVANTE=OFF \ + -DSDL_VULKAN=OFF + +# SDL3 fails to build in Thumb mode on some ARM architectures +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +SDL3_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -marm" +endif + +# SDL3 needs <fenv.h> when Arm Neon is enabled. +# https://github.com/libsdl-org/SDL/blob/release-3.4.12/src/audio/SDL_audiotypecvt.c#L26 +# The <fenv.h> header is not available by default in uClibc, so we +# disable Neon in that specific case. +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC)$(BR2_ARM_CPU_HAS_NEON),yy) +SDL3_CONF_OPTS += -DSDL_ARMNEON=OFF +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +SDL3_DEPENDENCIES += udev +SDL3_CONF_OPTS += -DSDL_LIBUDEV=ON +else +SDL3_CONF_OPTS += -DSDL_LIBUDEV=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +SDL3_CONF_OPTS += -DSDL_SSE=ON +else +SDL3_CONF_OPTS += -DSDL_SSE=OFF +endif + +ifeq ($(BR2_PACKAGE_SDL3_X11),y) +SDL3_DEPENDENCIES += xlib_libX11 xlib_libXext +SDL3_CONF_OPTS += -DSDL_X11=ON +else +SDL3_CONF_OPTS += -DSDL_X11=OFF +endif + +ifeq ($(BR2_PACKAGE_SDL3_WAYLAND),y) +SDL3_DEPENDENCIES += libegl libxkbcommon wayland wayland-protocols +SDL3_CONF_OPTS += -DSDL_WAYLAND=ON +else +SDL3_CONF_OPTS += -DSDL_WAYLAND=OFF +endif + +ifeq ($(BR2_PACKAGE_SDL3_OPENGL),y) +SDL3_DEPENDENCIES += libgl +SDL3_CONF_OPTS += -DSDL_OPENGL=ON +else +SDL3_CONF_OPTS += -DSDL_OPENGL=OFF +endif + +ifeq ($(BR2_PACKAGE_SDL3_OPENGLES),y) +SDL3_DEPENDENCIES += libgles libegl +SDL3_CONF_OPTS += -DSDL_OPENGLES=ON +else +SDL3_CONF_OPTS += -DSDL_OPENGLES=OFF +endif + +# The explicit dependencies make sure libdrm/gbm/egl are built before +# sdl3, otherwise the kmsdrm video driver is silently disabled at +# configure time. +ifeq ($(BR2_PACKAGE_SDL3_KMSDRM),y) +SDL3_DEPENDENCIES += libdrm libgbm libegl +SDL3_CONF_OPTS += -DSDL_KMSDRM=ON +else +SDL3_CONF_OPTS += -DSDL_KMSDRM=OFF +endif + +# SDL3 installs a copy of its license on the target, drop it +define SDL3_REMOVE_LICENSES + rm -rf $(TARGET_DIR)/usr/share/licenses/SDL3 +endef +SDL3_POST_INSTALL_TARGET_HOOKS += SDL3_REMOVE_LICENSES + +$(eval $(cmake-package)) _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot