Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/4] package/sdl3: new package
@ 2026-07-14 11:52 Michael Fischer
  2026-07-14 11:52 ` [Buildroot] [PATCH 2/4] package/sdl3_gfx: " Michael Fischer
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Michael Fischer @ 2026-07-14 11:52 UTC (permalink / raw)
  To: buildroot; +Cc: Michael Fischer

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.

https://www.libsdl.org/
https://wiki.libsdl.org/SDL3/README-migration

Signed-off-by: Michael Fischer <mf@go-sys.de>
---
 DEVELOPERS             |  1 +
 package/Config.in      |  1 +
 package/sdl3/Config.in | 79 +++++++++++++++++++++++++++++++++++
 package/sdl3/sdl3.hash |  4 ++
 package/sdl3/sdl3.mk   | 95 ++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 180 insertions(+)
 create mode 100644 package/sdl3/Config.in
 create mode 100644 package/sdl3/sdl3.hash
 create mode 100644 package/sdl3/sdl3.mk

diff --git a/DEVELOPERS b/DEVELOPERS
index fdfab8b489..9f44548ea0 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2406,6 +2406,7 @@ F:	configs/arcturus_ucls1012a_defconfig
 N:	Michael Fischer <mf@go-sys.de>
 F:	package/gnuplot/
 F:	package/sdl2/
+F:	package/sdl3/
 
 N:	Michael Nosthoff <buildroot@heine.tech>
 F:	package/boost/
diff --git a/package/Config.in b/package/Config.in
index b6f23308af..91903361c5 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -363,6 +363,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..109bb5678e
--- /dev/null
+++ b/package/sdl3/Config.in
@@ -0,0 +1,79 @@
+config BR2_PACKAGE_SDL3
+	bool "sdl3"
+	depends on !BR2_STATIC_LIBS
+	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"
+	depends on BR2_STATIC_LIBS
diff --git a/package/sdl3/sdl3.hash b/package/sdl3/sdl3.hash
new file mode 100644
index 0000000000..27197ae594
--- /dev/null
+++ b/package/sdl3/sdl3.hash
@@ -0,0 +1,4 @@
+# Locally calculated after checking http://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..85defe10be
--- /dev/null
+++ b/package/sdl3/sdl3.mk
@@ -0,0 +1,95 @@
+################################################################################
+#
+# 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_RPATH=OFF \
+	-DSDL_DBUS=OFF \
+	-DSDL_PULSEAUDIO=OFF \
+	-DSDL_VIVANTE=OFF \
+	-DSDL_VULKAN=OFF \
+	-DSDL_DUMMYVIDEO=OFF \
+	-DSDL_OFFSCREEN=OFF \
+	-DSDL_HIDAPI=OFF \
+	-DSDL_IBUS=OFF \
+	-DSDL_JOYSTICK_MFI=OFF \
+	-DSDL_JOYSTICK_VIRTUAL=OFF \
+	-DSDL_RENDER_D3D=OFF \
+	-DSDL_UNIX_CONSOLE_BUILD=ON \
+	-DSDL_INSTALL_DOCS=OFF \
+	-DSDL_STATIC=ON
+
+# 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
+
+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))
-- 
2.43.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-07-14 12:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-14 11:52 [Buildroot] [PATCH 1/4] package/sdl3: new package Michael Fischer
2026-07-14 11:52 ` [Buildroot] [PATCH 2/4] package/sdl3_gfx: " Michael Fischer
2026-07-14 11:52 ` [Buildroot] [PATCH 3/4] package/sdl3_image: " Michael Fischer
2026-07-14 11:52 ` [Buildroot] [PATCH 4/4] package/sdl3_ttf: " Michael Fischer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox