Subject: [bug#78502] [PATCH 3/3] gnu: Add ring-racers.

From: Andrew Wong <[email-masked]>
Date: Mon, 19 May 2025 20:45:11 -0400

* gnu/packages/games.scm (ring-racers): New variable.

Change-Id: Ib52dca1ad41d8f778db14857ad681d566c145952
---
 gnu/packages/games.scm | 62 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index d38cff05d6..c1f7bc2277 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -4939,6 +4939,68 @@ (define ring-racers-data
      (description "This package contains data files for Ring Racers.")
      (license license:gpl2+))))
 
+(define-public ring-racers
+  (package
+    (name "ring-racers")
+    (version "2.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://git.do.srb2.org/KartKrew/RingRacers")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "05lf799imbk0x3i2adaj0r84ck5yyrvzjvhs4k9dj7l4jg0x4sjz"))
+       (modules '((guix build utils)))
+       (snippet '(begin (with-directory-excursion "thirdparty"
+                          (delete-file-recursively "glm")
+                          (substitute* "CMakeLists.txt"
+                            (("add_subdirectory\\(glm\\)")
+                             "find_package(glm REQUIRED)")))
+                        (with-directory-excursion "src"
+                          (substitute* "CMakeLists.txt"
+                            (("glm::glm") "glm")))))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:tests? #f
+      #:configure-flags
+      #~(list "-DCMAKE_C_FLAGS_RELWITHDEBINFO='-O3 -g -DNDEBUG'"
+              "-DCMAKE_CXX_FLAGS_RELWITHDEBINFO='-O3 -g -DNDEBUG'"
+              "-DSRB2_CONFIG_DEV_BUILD=OFF"
+              "-DCMAKE_BUILD_TYPE=RelWithDebInfo")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'move-and-wrap-binary
+            ;; Install executable to $out/bin.
+            (lambda* (#:key inputs #:allow-other-keys)
+              (with-directory-excursion #$output
+                (mkdir "bin")
+                (rename-file "ringracers" "bin/ringracers")
+                (wrap-program "bin/ringracers"
+                  `("RINGRACERSWADDIR" =
+                    (,(assoc-ref inputs "ring-racers-data"))))))))))
+    (inputs (list glm
+                  libogg
+                  libpng
+                  libvorbis
+                  libvpx
+                  libyuv
+                  ring-racers-data
+                  sdl2
+                  zlib
+                  curl))
+    (home-page "https://kartkrew.org")
+    (synopsis "Technical kart racing game")
+    (description
+     "Dr. Robotnik’s Ring Racers is a technical kart racing game drawing
+inspiration from ``anti-grav'' racers, fighting games, and traditional-style
+kart racing.  Designed to minimize randomness and emphasize player expression,
+Ring Racers about more than precise handling—you’ll need to master tense
+combat, resource management, and taking risks under pressure.")
+    (license license:gpl2+)))
+
 (define-public unknown-horizons
   (package
     (name "unknown-horizons")
-- 
2.49.0