Subject: [bug#77910] [PATCH 2/2] gnu: Add sdl2-compat.

From: [email-masked]
Date: Sat, 19 Apr 2025 07:45:49 +0800

From: 宋文武 <[email-masked]>

* gnu/packages/sdl.scm (sdl2-compat): New variable.

Change-Id: I57eae86fc14224f08c42f079b9e271509e855166
---
 gnu/packages/sdl.scm | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index c23614745c..75fe524b3a 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -201,6 +201,46 @@ (define-public sdl3
            vulkan-loader
            wayland-protocols))))
 
+(define-public sdl2-compat
+  (package
+    (name "sdl2-compat")
+    (version "2.32.54")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/libsdl-org/sdl2-compat")
+                    (commit (string-append "release-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0ijpx62b9syypxxnwvggz4l5fmrgln95ka180am9g2hgyqkqlj5n"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'configure 'qualify-libsdl3
+                 (lambda _
+                   (substitute* "src/sdl2_compat.c"
+                     (("libSDL3[.]so[.]0")
+                      (string-append #$(this-package-input "sdl3")
+                                     "/lib/libSDL3.so.0")))))
+               (add-after 'install 'install-sdl2.pc
+                 (lambda _
+                   (let ((pcdir (string-append #$output
+                                               "/lib/pkgconfig")))
+                     (symlink (string-append pcdir "/sdl2-compat.pc")
+                              (string-append pcdir "/sdl2.pc"))))))))
+    (inputs (list sdl3))
+    (propagated-inputs (list libx11))   ;required by SDL_syswm.h
+    (synopsis "Cross platform game development library")
+    (description "Simple DirectMedia Layer is a cross-platform development library
+designed to provide low level access to audio, keyboard, mouse, joystick, and
+graphics hardware.  This package is a compatibility layer; it provides a binary and
+source compatible API for programs written against SDL2, but it uses SDL3 behind the
+scenes.")
+    (home-page "https://libsdl.org/")
+    (license license:zlib)))
+
 (define-public sdl12-compat
   (package
     (name "sdl12-compat")
-- 
2.49.0