summaryrefslogtreecommitdiff
path: root/gnu/packages/graphics.scm
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2023-02-02 14:27:13 -0500
committerDavid Thompson <dthompson2@worcester.edu>2023-02-03 08:09:15 -0500
commitb8dc4afcbcd2b5e40f570c4d92f79e8b1008e4bf (patch)
tree2b7dd39e2be93b819e806de79bff8515c8cd7763 /gnu/packages/graphics.scm
parent157b94ead7ea64c945b8dc11f8a8800350ef53a5 (diff)
gnu: Add minifb.
* gnu/packages/graphics.scm (minifb): New variable.
Diffstat (limited to 'gnu/packages/graphics.scm')
-rw-r--r--gnu/packages/graphics.scm47
1 files changed, 47 insertions, 0 deletions
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index ebf571d93e..a9162e53a6 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -34,6 +34,7 @@
;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
;;; Copyright © 2022 dan <i@dan.games>
;;; Copyright © 2023 Sharlatan Hellseher <sharlatanus@gmail.com>
+;;; Copyright © 2023 David Thompson <dthompson2@worcester.edu>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -234,6 +235,52 @@ minimum of resource usage and overhead.")
(home-page "https://github.com/deniskropp/DirectFB")
(license license:lgpl2.1+)))
+(define-public minifb
+ (let ((commit "43f8c1309341f4709a471b592d04434326042483")
+ (revision "1"))
+ (package
+ (name "minifb")
+ (version (git-version "0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/emoon/minifb")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1z0720azsgi83yg4ysmfvpvsg0566s2cq59xx52w8w5rpkla4cjh"))))
+ (build-system cmake-build-system)
+ (arguments
+ ;; Don't build examples.
+ '(#:configure-flags '("-DMINIFB_BUILD_EXAMPLES=0")
+ #:phases
+ ;; There is no install target, so we have to copy the static library
+ ;; and headers to the output directory ourselves.
+ (modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (includedir (string-append out "/include"))
+ (libdir (string-append out "/lib")))
+ (mkdir-p includedir)
+ (mkdir-p libdir)
+ (for-each (lambda (header)
+ (copy-file header
+ (string-append includedir "/"
+ (basename header))))
+ (find-files "../source/include" "\\.h$"))
+ (copy-file "libminifb.a" (string-append libdir "/libminifb.a"))))))
+ ;; No check target.
+ #:tests? #f))
+ ;; libminifb.a won't work without these libraries, so propagate them.
+ (propagated-inputs (list libx11 libxkbcommon mesa))
+ (synopsis "Small library for rendering pixels to a framebuffer")
+ (description "MiniFB (Mini FrameBuffer) is a small, cross-platform
+library that makes it easy to render (32-bit) pixels in a window.")
+ (home-page "https://github.com/emoon/minifb")
+ (license license:expat))))
+
(define-public flux
(package
(name "flux")