gnu: Add python-pyshp.
[jackhill/guix/guix.git] / gnu / packages / graphics.scm
CommitLineData
f327b36e 1;;; GNU Guix --- Functional package management for GNU
79f912c7 2;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
e9f1fa39 3;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org>
04d52b1a 4;;; Copyright © 2016, 2019 Leo Famulari <leo@famulari.name>
df8ab774 5;;; Copyright © 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
3772f95d 6;;; Copyright © 2016, 2018, 2021 Efraim Flashner <efraim@flashner.co.il>
42bf3429 7;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
6bf11392 8;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
f63d6188 9;;; Copyright © 2017, 2018 Ben Woodcroft <donttrustben@gmail.com>
810c1853 10;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
17153d18 11;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
fc4f13bd 12;;; Copyright © 2018 Alex Kost <alezost@gmail.com>
340ee00b 13;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
d4c9e81c 14;;; Copyright © 2019, 2020 Mark H Weaver <mhw@netris.org>
13f30b54 15;;; Copyright © 2019 Carlo Zancanaro <carlo@zancanaro.id.au>
c3c0eda6 16;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
f36617cb 17;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
24f7bac0 18;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
8ae17933 19;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
1e8826bd 20;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
ce226e9d 21;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
e629d722 22;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
eef785d6 23;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
89c34f5e 24;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
1c21468c 25;;; Copyright © 2020 Gabriel Arazas <foo.dogsquared@gmail.com>
093bfc5d 26;;; Copyright © 2021 Antoine Côté <antoine.cote@posteo.net>
2fdc8ca7 27;;; Copyright © 2021 Andy Tai <atai@atai.org>
f53ec9d9 28;;; Copyright © 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
f327b36e
LC
29;;;
30;;; This file is part of GNU Guix.
31;;;
32;;; GNU Guix is free software; you can redistribute it and/or modify it
33;;; under the terms of the GNU General Public License as published by
34;;; the Free Software Foundation; either version 3 of the License, or (at
35;;; your option) any later version.
36;;;
37;;; GNU Guix is distributed in the hope that it will be useful, but
38;;; WITHOUT ANY WARRANTY; without even the implied warranty of
39;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
40;;; GNU General Public License for more details.
41;;;
42;;; You should have received a copy of the GNU General Public License
43;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
44
45(define-module (gnu packages graphics)
cab6a253 46 #:use-module (gnu packages)
0e2f2aeb
RW
47 #:use-module (gnu packages algebra)
48 #:use-module (gnu packages audio)
87bafa07 49 #:use-module (gnu packages autotools)
5ee8c141 50 #:use-module (gnu packages base)
87bafa07 51 #:use-module (gnu packages bash)
96d15e48 52 #:use-module (gnu packages bison)
87bafa07 53 #:use-module (gnu packages boost)
286716f8 54 #:use-module (gnu packages cdrom)
dd75a9a2 55 #:use-module (gnu packages check)
595d1bd5 56 #:use-module (gnu packages compression)
9ac2a4ee 57 #:use-module (gnu packages crypto)
d4c9e81c 58 #:use-module (gnu packages datastructures)
99828fa7 59 #:use-module (gnu packages documentation)
96d15e48 60 #:use-module (gnu packages flex)
dd75a9a2 61 #:use-module (gnu packages fonts)
87bafa07 62 #:use-module (gnu packages fontutils)
286716f8 63 #:use-module (gnu packages freedesktop)
5ee8c141 64 #:use-module (gnu packages gettext)
595d1bd5 65 #:use-module (gnu packages ghostscript)
a29bfc28 66 #:use-module (gnu packages gl)
96d15e48 67 #:use-module (gnu packages glib)
595d1bd5 68 #:use-module (gnu packages gnome)
9ac2a4ee 69 #:use-module (gnu packages gnunet)
96d15e48 70 #:use-module (gnu packages graphviz)
286716f8 71 #:use-module (gnu packages gstreamer)
96d15e48 72 #:use-module (gnu packages gtk)
dddbc90c 73 #:use-module (gnu packages haskell-xyz)
0e2f2aeb 74 #:use-module (gnu packages image)
cdbb0e55 75 #:use-module (gnu packages image-processing)
595d1bd5 76 #:use-module (gnu packages imagemagick)
0e2f2aeb 77 #:use-module (gnu packages jemalloc)
9ac2a4ee 78 #:use-module (gnu packages kde-frameworks)
2fdc8ca7 79 #:use-module (gnu packages libusb)
286716f8 80 #:use-module (gnu packages linux)
6bd347c9 81 #:use-module (gnu packages lua)
89c34f5e 82 #:use-module (gnu packages maths)
286716f8 83 #:use-module (gnu packages mp3)
595d1bd5
TGR
84 #:use-module (gnu packages multiprecision)
85 #:use-module (gnu packages pdf)
86 #:use-module (gnu packages perl)
0e2f2aeb 87 #:use-module (gnu packages photo)
595d1bd5 88 #:use-module (gnu packages pkg-config)
2f6d51ef 89 #:use-module (gnu packages plotutils)
e629d722 90 #:use-module (gnu packages pretty-print)
6bf11392 91 #:use-module (gnu packages pth)
595d1bd5 92 #:use-module (gnu packages pulseaudio) ; libsndfile, libsamplerate
0e2f2aeb 93 #:use-module (gnu packages python)
44d10b1f 94 #:use-module (gnu packages python-xyz)
87bafa07 95 #:use-module (gnu packages qt)
96d15e48 96 #:use-module (gnu packages readline)
87bafa07 97 #:use-module (gnu packages sdl)
e23d5aa9 98 #:use-module (gnu packages stb)
dd75a9a2 99 #:use-module (gnu packages swig)
7297ebb2 100 #:use-module (gnu packages tbb)
9ac2a4ee 101 #:use-module (gnu packages upnp)
0e2f2aeb 102 #:use-module (gnu packages video)
2fdc8ca7 103 #:use-module (gnu packages vulkan)
286716f8 104 #:use-module (gnu packages xiph)
96d15e48 105 #:use-module (gnu packages xml)
595d1bd5 106 #:use-module (gnu packages xorg)
286716f8 107 #:use-module (gnu packages xdisorg)
e7db21bd 108 #:use-module (guix build-system copy)
595d1bd5
TGR
109 #:use-module (guix build-system cmake)
110 #:use-module (guix build-system gnu)
6bd347c9 111 #:use-module (guix build-system meson)
595d1bd5 112 #:use-module (guix build-system python)
9ac2a4ee 113 #:use-module (guix build-system qt)
595d1bd5
TGR
114 #:use-module (guix download)
115 #:use-module (guix git-download)
24268ec4 116 #:use-module (guix hg-download)
595d1bd5
TGR
117 #:use-module ((guix licenses) #:prefix license:)
118 #:use-module (guix packages)
119 #:use-module (guix utils))
f327b36e 120
e7db21bd
RG
121(define-public eglexternalplatform
122 (package
123 (name "eglexternalplatform")
124 (version "1.1")
125 (source
126 (origin
127 (method git-fetch)
128 (uri
129 (git-reference
8ed4c468 130 (url "https://github.com/NVIDIA/eglexternalplatform")
e7db21bd
RG
131 (commit version)))
132 (file-name
133 (git-file-name name version))
134 (sha256
135 (base32 "0lr5s2xa1zn220ghmbsiwgmx77l156wk54c7hybia0xpr9yr2nhb"))))
136 (build-system copy-build-system)
137 (arguments
138 `(#:phases
139 (modify-phases %standard-phases
140 (add-after 'unpack 'patch-pkgconfig
141 (lambda* (#:key outputs #:allow-other-keys)
142 (substitute* "eglexternalplatform.pc"
143 (("/usr")
144 (assoc-ref outputs "out")))
145 #t))
146 (add-after 'install 'revise
147 (lambda* (#:key outputs #:allow-other-keys)
148 (let* ((out (assoc-ref outputs "out")))
149 (mkdir-p (string-append out "/include/EGL"))
150 (rename-file
151 (string-append out "/interface")
152 (string-append out "/include/EGL"))
153 (mkdir-p (string-append out "/share/pkgconfig"))
154 (rename-file
155 (string-append out "/eglexternalplatform.pc")
156 (string-append out "/share/pkgconfig/eglexternalplatform.pc"))
157 (for-each delete-file-recursively
158 (list
159 (string-append out "/samples")
160 (string-append out "/COPYING")
161 (string-append out "/README.md"))))
162 #t)))))
163 (synopsis "EGL External Platform interface")
164 (description "EGLExternalPlatform is an specification of the EGL External
165Platform interface for writing EGL platforms and their interactions with modern
166window systems on top of existing low-level EGL platform implementations. This
167keeps window system implementation specifics out of EGL drivers by using
168application-facing EGL functions.")
169 (home-page "https://github.com/NVIDIA/eglexternalplatform")
170 (license license:expat)))
171
8d82df13
RG
172(define-public egl-wayland
173 (package
174 (name "egl-wayland")
810c1853 175 (version "1.1.6")
8d82df13
RG
176 (source
177 (origin
178 (method git-fetch)
179 (uri
180 (git-reference
8ed4c468 181 (url "https://github.com/NVIDIA/egl-wayland")
8d82df13
RG
182 (commit version)))
183 (file-name
184 (git-file-name name version))
185 (sha256
810c1853 186 (base32 "1n9lg8hpjgxlf7dpddkjhbslsfd0symla2wk6jjmnl9n9jv2gmzk"))))
8d82df13
RG
187 (build-system meson-build-system)
188 (native-inputs
189 `(("pkg-config" ,pkg-config)))
190 (inputs
191 `(("mesa" ,mesa)
192 ("wayland" ,wayland)))
193 (propagated-inputs
194 `(("eglexternalplatform" ,eglexternalplatform)))
195 (synopsis "EGLStream-based Wayland external platform")
196 (description "EGL-Wayland is an implementation of a EGL External Platform
197library to add client-side Wayland support to EGL on top of EGLDevice and
198EGLStream families of extensions.")
199 (home-page "https://github.com/NVIDIA/egl-wayland")
200 (license license:expat)))
201
6bd347c9
RG
202(define-public mmm
203 (package
204 (name "mmm")
205 (version "0.1.1")
206 (source
207 (origin
208 (method git-fetch)
209 (uri
210 (git-reference
8ed4c468 211 (url "https://github.com/hodefoting/mmm")
6bd347c9
RG
212 (commit version)))
213 (file-name
214 (git-file-name name version))
215 (sha256
216 (base32 "1xmcv6rwinqsbr863rgl9005h2jlmd7k2qrwsc1h4fb8r61ykpjl"))))
217 (build-system meson-build-system)
218 (native-inputs
219 `(("luajit" ,luajit)
220 ("pkg-config" ,pkg-config)))
221 (inputs
222 `(("alsa" ,alsa-lib)
223 ("sdl" ,sdl)
224 ("sdl2" ,sdl2)))
225 (synopsis "Memory Mapped Machine")
226 (description "MMM is a shared memory protocol for virtualising access to
227framebuffer graphics, audio output and input event.")
228 (home-page "https://github.com/hodefoting/mrg")
229 (license license:isc)))
230
286716f8
RG
231(define-public directfb
232 (package
233 (name "directfb")
234 (version "1.7.7")
235 (source
236 (origin
237 (method git-fetch)
238 (uri
239 (git-reference
8ed4c468 240 (url "https://github.com/deniskropp/DirectFB")
286716f8
RG
241 (commit "DIRECTFB_1_7_7")))
242 (file-name (git-file-name name version))
243 (sha256
244 (base32 "0bs3yzb7hy3mgydrj8ycg7pllrd2b6j0gxj596inyr7ihssr3i0y"))))
245 (build-system gnu-build-system)
246 (arguments
247 `(#:phases
248 (modify-phases %standard-phases
249 (add-after 'unpack 'disable-configure-during-bootstrap
250 (lambda _
251 (substitute* "autogen.sh"
252 (("^.*\\$srcdir/configure.*") ""))
253 #t)))))
254 (native-inputs
255 `(("autoconf" ,autoconf)
256 ("automake" ,automake)
257 ("libtool" ,libtool)
258 ("perl" ,perl)
259 ("pkg-config" ,pkg-config)))
260 (inputs
261 `(("alsa" ,alsa-lib)
262 ("ffmpeg" ,ffmpeg)
263 ("freetype" ,freetype)
264 ("glu" ,glu)
265 ("gstreamer" ,gstreamer)
266 ("imlib2" ,imlib2)
267 ("jasper" ,jasper)
268 ("jpeg" ,libjpeg-turbo)
269 ("libcddb" ,libcddb)
270 ("libdrm" ,libdrm)
271 ("libtimidity" ,libtimidity)
272 ("linux-headers" ,linux-libre-headers)
273 ("mad" ,libmad)
274 ("mng" ,libmng)
275 ("mpeg2" ,libmpeg2)
276 ("mpeg3" ,libmpeg3)
277 ("opengl" ,mesa)
278 ("png" ,libpng)
279 ("sdl" ,sdl)
280 ("svg" ,librsvg)
281 ("tiff" ,libtiff)
282 ("tslib" ,tslib)
283 ("vdpau" ,libvdpau)
284 ("vorbisfile" ,libvorbis)
285 ("wayland" ,wayland)
286 ("webp" ,libwebp)
287 ("x11" ,libx11)
288 ("xcomposite" ,libxcomposite)
289 ("xext" ,libxext)
290 ("xproto" ,xorgproto)
291 ("zlib" ,zlib)))
292 (propagated-inputs
293 `(("flux" ,flux)))
294 (synopsis "DFB Graphics Library")
295 (description "DirectFB is a graphics library which was designed with embedded
296systems in mind. It offers maximum hardware accelerated performance at a
297minimum of resource usage and overhead.")
74783ba5 298 (home-page "https://github.com/deniskropp/DirectFB")
286716f8
RG
299 (license license:lgpl2.1+)))
300
d54fb33a
RG
301(define-public flux
302 (package
303 (name "flux")
304 (version "1.4.4")
305 (source
306 (origin
307 (method git-fetch)
308 (uri
309 (git-reference
8ed4c468 310 (url "https://github.com/deniskropp/flux")
d54fb33a
RG
311 (commit "e45758a")))
312 (file-name (git-file-name name version))
313 (sha256
314 (base32 "11f3ypg0sdq5kj69zgz6kih1yrzgm48r16spyvzwvlswng147410"))))
315 (build-system gnu-build-system)
316 (native-inputs
317 `(("autoconf" ,autoconf)
318 ("automake" ,automake)
319 ("libtool" ,libtool)
320 ("pkg-config" ,pkg-config)))
321 (synopsis "Interface description language")
322 (description "Flux is an interface description language used by DirectFB.
323Fluxcomp compiles .flux files to .cpp or .c files.")
9045bf80 324 (home-page "https://www.directfb.org/")
d54fb33a
RG
325 (license license:lgpl2.1+))) ; Same as DirectFB
326
eef785d6
RG
327(define-public fox
328 (package
329 (name "fox")
330 (version "1.6.57")
331 (source
332 (origin
333 (method url-fetch)
334 (uri
335 (string-append "https://fox-toolkit.org/ftp/fox-" version ".tar.gz"))
336 (sha256
337 (base32 "08w98m6wjadraw1pi13igzagly4b2nfa57kdqdnkjfhgkvg1bvv5"))))
338 (build-system gnu-build-system)
339 (arguments
340 `(#:phases
341 (modify-phases %standard-phases
342 (add-after 'unpack 'patch
343 (lambda _
344 (substitute* "configure"
345 (("-I/usr/include/freetype2")
346 (string-append "-I"
347 (string-append
348 (assoc-ref %build-inputs "freetype")
349 "/include/freetype2"))))
350 #t)))))
351 (native-inputs
352 `(("doxygen" ,doxygen)))
353 (inputs
354 `(("bzip2" ,lbzip2)
355 ("freetype" ,freetype)
356 ("gl" ,mesa)
357 ("glu" ,glu)
bdb90df7 358 ("jpeg" ,libjpeg-turbo)
eef785d6
RG
359 ("png" ,libpng)
360 ("tiff" ,libtiff)
361 ("x11" ,libx11)
362 ("xcursor" ,libxcursor)
363 ("xext" ,libxext)
364 ("xfixes" ,libxfixes)
365 ("xft" ,libxft)
366 ("xinput" ,libxi)
367 ("xrandr" ,libxrandr)
368 ("xrender" ,libxrender)
369 ("xshm" ,libxshmfence)
370 ("zlib" ,zlib)))
371 (synopsis "Widget Toolkit for building GUI")
372 (description"FOX (Free Objects for X) is a C++ based Toolkit for developing
373Graphical User Interfaces easily and effectively. It offers a wide, and
374growing, collection of Controls, and provides state of the art facilities such
375as drag and drop, selection, as well as OpenGL widgets for 3D graphical
376manipulation. FOX also implements icons, images, and user-convenience features
377such as status line help, and tooltips. Tooltips may even be used for 3D
378objects!")
379 (home-page "http://www.fox-toolkit.org")
380 (license license:lgpl2.1+)))
381
5ee8c141
MC
382(define-public autotrace
383 (let ((commit "travis-20190624.59")
384 (version-base "0.40.0"))
385 (package
386 (name "autotrace")
387 (version (string-append version-base "-"
388 (if (string-prefix? "travis-" commit)
389 (string-drop commit 7)
390 commit)))
391 (source (origin
392 (method git-fetch)
393 (uri (git-reference
b0e7b699 394 (url "https://github.com/autotrace/autotrace")
5ee8c141
MC
395 (commit commit)))
396 (file-name (git-file-name name version))
d4ffa963 397 (patches (search-patches "autotrace-glib-compat.patch"))
5ee8c141
MC
398 (sha256
399 (base32
400 "0mk4yavy42dj0pszr1ggnggpvmzs4ds46caa9wr55cqsypn7bq6s"))))
401 (build-system gnu-build-system)
402 (arguments
403 `(#:phases (modify-phases %standard-phases
404 ;; See: https://github.com/autotrace/autotrace/issues/27.
405 (add-after 'unpack 'include-spline.h-header
406 (lambda _
407 (substitute* "Makefile.am"
408 ((".*src/types.h.*" all)
409 (string-append all "\t\tsrc/spline.h \\\n")))
410 #t))
411 ;; See: https://github.com/autotrace/autotrace/issues/26.
412 (replace 'check
413 (lambda _
414 (invoke "sh" "tests/runtests.sh"))))))
415 (native-inputs
416 `(("which" ,which)
417 ("pkg-config" ,pkg-config)
418 ("autoconf" ,autoconf)
419 ("automake" ,automake)
420 ("intltool" ,intltool)
421 ("libtool" ,libtool)
422 ("gettext" ,gettext-minimal)))
423 (inputs
424 `(("glib" ,glib)
425 ("libjpeg" ,libjpeg-turbo)
426 ("libpng" ,libpng)
427 ("imagemagick" ,imagemagick)
428 ("pstoedit" ,pstoedit)))
429 (home-page "https://github.com/autotrace/autotrace")
430 (synopsis "Bitmap to vector graphics converter")
431 (description "AutoTrace is a utility for converting bitmap into vector
432graphics. It can trace outlines and midlines, effect color reduction or
433despeckling and has support for many input and output formats. It can be used
434with the @command{autotrace} utility or as a C library, @code{libautotrace}.")
435 (license (list license:gpl2+ ;for the utility itself
436 license:lgpl2.1+))))) ;for use as a library
437
c544cfb3
CLW
438(define-public embree
439 (package
440 (name "embree")
441 (version "3.12.1")
442 (source (origin
443 (method git-fetch)
444 (uri (git-reference
445 (url "https://github.com/embree/embree")
446 (commit (string-append "v" version))))
447 (file-name (git-file-name name version))
448 (sha256
449 (base32
450 "0aznd16n7h8g3f6jcahzfp1dq4r7wayqvn03wsaskiq2dvsi4srd"))))
451 (build-system cmake-build-system)
452 (arguments
453 `(#:tests? #f ; no tests (apparently)
454 #:configure-flags
455 (list
456 "-DEMBREE_ISPC_SUPPORT=OFF")))
457 (inputs
458 `(("tbb" ,tbb)
459 ("glfw" ,glfw)))
460 (home-page "https://www.embree.org/")
461 (synopsis "High performance ray tracing kernels")
462 (description
463 "Embree is a collection of high-performance ray tracing kernels.
464Embree is meant to increase performance of photo-realistic rendering
465applications.")
466 (license license:asl2.0)))
467
f53ec9d9
EZ
468(define-public openvdb
469 (package
470 (name "openvdb")
471 (version "8.0.1")
472 (source (origin
473 (method git-fetch)
474 (uri (git-reference
475 (url "https://github.com/AcademySoftwareFoundation/openvdb/")
476 (commit (string-append "v" version))
477 (recursive? #t)))
478 (file-name (git-file-name name version))
479 (sha256
480 (base32
481 "0qzx6l5c183k6j9zki31gg9aixf5s1j46wdi7wr1h3bz7k53syg9"))))
482 (build-system cmake-build-system)
483 (arguments
484 `(#:configure-flags
485 (list (string-append "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath="
486 (assoc-ref %outputs "out") "/lib"))))
487 (inputs
488 `(("boost" ,boost)
489 ("c-blosc" ,c-blosc)
490 ("ilmbase" ,ilmbase)
491 ("tbb" ,tbb)
492 ("zlib" ,zlib)))
493 (native-inputs
494 `(("pkg-config" ,pkg-config)))
495 (home-page "https://www.openvdb.org/")
496 (synopsis "Sparse volume data structure and tools")
497 (description "OpenVDB is a C++ library comprising a hierarchical data
498structure and a large suite of tools for the efficient storage and
499manipulation of sparse volumetric data discretized on three-dimensional grids.
500It was developed by DreamWorks Animation for use in volumetric applications
501typically encountered in feature film production.")
502 (license license:mpl2.0)))
503
0e2f2aeb
RW
504(define-public blender
505 (package
506 (name "blender")
9ffa81fe 507 (version "2.92.0")
0e2f2aeb 508 (source (origin
274ba54e
LF
509 (method url-fetch)
510 (uri (string-append "https://download.blender.org/source/"
7297ebb2 511 "blender-" version ".tar.xz"))
0e2f2aeb
RW
512 (sha256
513 (base32
9ffa81fe 514 "15a5vffn18a920286x0avbc2rap56k6y531wgibq68r90g2cz4g7"))))
0e2f2aeb
RW
515 (build-system cmake-build-system)
516 (arguments
bb9cd6de
LF
517 (let ((python-version (version-major+minor (package-version python))))
518 `(;; Test files are very large and not included in the release tarball.
519 #:tests? #f
520 #:configure-flags
521 (list "-DWITH_CODEC_FFMPEG=ON"
522 "-DWITH_CODEC_SNDFILE=ON"
523 "-DWITH_CYCLES=ON"
524 "-DWITH_DOC_MANPAGE=ON"
525 "-DWITH_FFTW3=ON"
bb9cd6de
LF
526 "-DWITH_IMAGE_OPENJPEG=ON"
527 "-DWITH_INPUT_NDOF=ON"
528 "-DWITH_INSTALL_PORTABLE=OFF"
529 "-DWITH_JACK=ON"
530 "-DWITH_MOD_OCEANSIM=ON"
82375264 531 "-DWITH_OPENVDB=ON"
588a0a33 532 "-DWITH_OPENSUBDIV=ON"
bb9cd6de 533 "-DWITH_PYTHON_INSTALL=OFF"
4889be6c 534 (string-append "-DPYTHON_LIBRARY=python" ,python-version)
bb9cd6de
LF
535 (string-append "-DPYTHON_LIBPATH=" (assoc-ref %build-inputs "python")
536 "/lib")
537 (string-append "-DPYTHON_INCLUDE_DIR=" (assoc-ref %build-inputs "python")
4889be6c 538 "/include/python" ,python-version)
fc51c28a 539 (string-append "-DPYTHON_VERSION=" ,python-version)
9ffa81fe 540 (string-append "-DPYTHON_NUMPY_INCLUDE_DIRS="
541 (assoc-ref %build-inputs "python-numpy")
542 "/lib/python" ,python-version "/site-packages/numpy/core/include/")
fc51c28a
LF
543 (string-append "-DPYTHON_NUMPY_PATH="
544 (assoc-ref %build-inputs "python-numpy")
545 "/lib/python" ,python-version "/site-packages/"))
bb9cd6de
LF
546 #:phases
547 (modify-phases %standard-phases
fc51c28a
LF
548 ;; XXX This file doesn't exist in the Git sources but will probably
549 ;; exist in the eventual 2.80 source tarball.
8db20f2d
TGR
550 (add-after 'unpack 'fix-broken-import
551 (lambda _
552 (substitute* "release/scripts/addons/io_scene_fbx/json2fbx.py"
553 (("import encode_bin") "from . import encode_bin"))
554 #t))
bb9cd6de
LF
555 (add-after 'set-paths 'add-ilmbase-include-path
556 (lambda* (#:key inputs #:allow-other-keys)
557 ;; OpenEXR propagates ilmbase, but its include files do not appear
558 ;; in the CPATH, so we need to add "$ilmbase/include/OpenEXR/" to
559 ;; the CPATH to satisfy the dependency on "half.h".
560 (setenv "CPATH"
561 (string-append (assoc-ref inputs "ilmbase")
562 "/include/OpenEXR"
563 ":" (or (getenv "CPATH") "")))
564 #t))))))
0e2f2aeb
RW
565 (inputs
566 `(("boost" ,boost)
567 ("jemalloc" ,jemalloc)
568 ("libx11" ,libx11)
7297ebb2
LF
569 ("libxi" ,libxi)
570 ("libxrender" ,libxrender)
cdbb0e55 571 ("opencolorio" ,opencolorio)
0e2f2aeb
RW
572 ("openimageio" ,openimageio)
573 ("openexr" ,openexr)
588a0a33 574 ("opensubdiv" ,opensubdiv)
0e2f2aeb 575 ("ilmbase" ,ilmbase)
fc51c28a 576 ("openjpeg" ,openjpeg)
4bd428a7 577 ("libjpeg" ,libjpeg-turbo)
0e2f2aeb
RW
578 ("libpng" ,libpng)
579 ("libtiff" ,libtiff)
5deb0c67 580 ("ffmpeg" ,ffmpeg)
0e2f2aeb
RW
581 ("fftw" ,fftw)
582 ("jack" ,jack-1)
583 ("libsndfile" ,libsndfile)
584 ("freetype" ,freetype)
585 ("glew" ,glew)
586 ("openal" ,openal)
e629d722 587 ("pugixml" ,pugixml)
bb9cd6de 588 ("python" ,python)
fc51c28a 589 ("python-numpy" ,python-numpy)
82375264 590 ("openvdb" ,openvdb)
7297ebb2 591 ("tbb" ,tbb)
2a333f25
CLW
592 ("zlib" ,zlib)
593 ("embree" ,embree)))
9a6f5bbc 594 (home-page "https://blender.org/")
0e2f2aeb
RW
595 (synopsis "3D graphics creation suite")
596 (description
597 "Blender is a 3D graphics creation suite. It supports the entirety of
598the 3D pipeline—modeling, rigging, animation, simulation, rendering,
599compositing and motion tracking, even video editing and game creation. The
6af4cb30 600application can be customized via its API for Python scripting.")
dd9c137b 601 (license license:gpl2+)))
0e2f2aeb 602
96a655a7
MW
603(define-public blender-2.79
604 (package
605 (name "blender")
606 (version "2.79b")
607 (source (origin
608 (method url-fetch)
609 (uri (string-append "https://download.blender.org/source/"
610 "blender-" version ".tar.gz"))
611 (sha256
612 (base32
613 "1g4kcdqmf67srzhi3hkdnr4z1ph4h9sza1pahz38mrj998q4r52c"))
614 (patches (search-patches "blender-2.79-newer-ffmpeg.patch"
615 "blender-2.79-oiio2.patch"
616 ;; The following patches may be
617 ;; needed when the default GCC is
618 ;; updated:
619 ;; "blender-2.79-gcc8.patch"
620 ;; "blender-2.79-gcc9.patch"
621 "blender-2.79-python-3.7-fix.patch"
622 "blender-2.79-python-3.8-fix.patch"))))
623 (build-system cmake-build-system)
624 (arguments
625 (let ((python-version (version-major+minor (package-version python))))
626 `(;; Test files are very large and not included in the release tarball.
627 #:tests? #f
628 #:configure-flags
629 (list "-DWITH_CODEC_FFMPEG=ON"
630 "-DWITH_CODEC_SNDFILE=ON"
631 "-DWITH_CYCLES=ON"
632 "-DWITH_DOC_MANPAGE=ON"
633 "-DWITH_FFTW3=ON"
634 "-DWITH_GAMEENGINE=ON"
635 "-DWITH_IMAGE_OPENJPEG=ON"
636 "-DWITH_INPUT_NDOF=ON"
637 "-DWITH_INSTALL_PORTABLE=OFF"
638 "-DWITH_JACK=ON"
639 "-DWITH_MOD_OCEANSIM=ON"
640 "-DWITH_PLAYER=ON"
641 "-DWITH_PYTHON_INSTALL=OFF"
642 "-DWITH_PYTHON_INSTALL=OFF"
643 "-DWITH_SYSTEM_OPENJPEG=ON"
644 (string-append "-DPYTHON_LIBRARY=python" ,python-version)
645 (string-append "-DPYTHON_LIBPATH=" (assoc-ref %build-inputs "python")
646 "/lib")
647 (string-append "-DPYTHON_INCLUDE_DIR=" (assoc-ref %build-inputs "python")
648 "/include/python" ,python-version)
649 (string-append "-DPYTHON_VERSION=" ,python-version))
650 #:phases
651 (modify-phases %standard-phases
652 (add-after 'unpack 'fix-broken-import
653 (lambda _
654 (substitute* "release/scripts/addons/io_scene_fbx/json2fbx.py"
655 (("import encode_bin") "from . import encode_bin"))
656 #t))
657 (add-after 'set-paths 'add-ilmbase-include-path
658 (lambda* (#:key inputs #:allow-other-keys)
659 ;; OpenEXR propagates ilmbase, but its include files do not appear
660 ;; in the CPATH, so we need to add "$ilmbase/include/OpenEXR/" to
661 ;; the CPATH to satisfy the dependency on "half.h".
662 (setenv "CPATH"
663 (string-append (assoc-ref inputs "ilmbase")
664 "/include/OpenEXR"
665 ":" (or (getenv "CPATH") "")))
666 #t))))))
667 (inputs
668 `(("boost" ,boost)
669 ("jemalloc" ,jemalloc)
670 ("libx11" ,libx11)
093bfc5d 671 ("opencolorio" ,opencolorio)
96a655a7
MW
672 ("openimageio" ,openimageio)
673 ("openexr" ,openexr)
674 ("ilmbase" ,ilmbase)
675 ("openjpeg" ,openjpeg)
676 ("libjpeg" ,libjpeg-turbo)
677 ("libpng" ,libpng)
678 ("libtiff" ,libtiff)
679 ("ffmpeg" ,ffmpeg)
680 ("fftw" ,fftw)
681 ("jack" ,jack-1)
682 ("libsndfile" ,libsndfile)
683 ("freetype" ,freetype)
684 ("glew" ,glew)
685 ("openal" ,openal)
a2a17c3f 686 ("pugixml" ,pugixml)
96a655a7
MW
687 ("python" ,python)
688 ("zlib" ,zlib)))
689 (home-page "https://blender.org/")
690 (synopsis "3D graphics creation suite")
691 (description
692 "Blender is a 3D graphics creation suite. It supports the entirety of
693the 3D pipeline—modeling, rigging, animation, simulation, rendering,
694compositing and motion tracking, even video editing and game creation. The
695application can be customized via its API for Python scripting.
696
697NOTE: This older version of Blender is the last release that does not require
698OpenGL 3. It is retained for use with older computers.")
699 (license license:gpl2+)))
700
1c21468c
GA
701(define-public goxel
702 (package
703 (name "goxel")
f6167cfb 704 (version "0.10.7")
1c21468c
GA
705 (source (origin
706 (method git-fetch)
707 (uri (git-reference
708 (url "https://github.com/guillaumechereau/goxel")
709 (commit (string-append "v" version))))
710 (file-name (git-file-name name version))
711 (sha256
712 (base32
f6167cfb 713 "1v6m6nhl1if8ik5bmblhq46bip6y2qz18a04s8a9awb4yh9ls039"))))
1c21468c
GA
714 (build-system gnu-build-system)
715 (arguments
716 '(#:tests? #f
717 #:phases (modify-phases %standard-phases (delete 'configure))
718 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
719 "release")))
720 (native-inputs
721 `(("pkg-config" ,pkg-config)))
722 (inputs
723 `(("gtk3" ,gtk+)
724 ("glfw" ,glfw)
725 ("scons" ,scons)))
726 (home-page "https://goxel.xyz/")
727 (synopsis "Voxel editor")
728 (description
729 "Goxel is a voxel editor that features unlimited scene size, unlimited
730history buffer, 24-bit RGB colors, layers, procedural rendering, ray tracing,
731and export to various formats including the format used by Magicavoxel.")
732 (license license:gpl3+)))
733
5a82f933
RW
734(define-public assimp
735 (package
736 (name "assimp")
2d4514e9 737 (version "4.1.0")
5a82f933 738 (source (origin
2d4514e9
EF
739 (method git-fetch)
740 (uri (git-reference
b0e7b699 741 (url "https://github.com/assimp/assimp")
2d4514e9
EF
742 (commit (string-append "v" version))))
743 (file-name (git-file-name name version))
5a82f933
RW
744 (sha256
745 (base32
2d4514e9 746 "1rhyqfhzifdj7yibyanph3rh13ykw3i98dnn8mz65j780472hw28"))))
5a82f933
RW
747 (build-system cmake-build-system)
748 (inputs
749 `(("zlib" ,zlib)))
2d4514e9 750 (home-page "http://www.assimp.org/")
5a82f933
RW
751 (synopsis "Asset import library")
752 (description
753 "The Open Asset Import Library loads more than 40 3D file formats into
754one unified data structure. Additionally, assimp features various mesh post
755processing tools: normals and tangent space generation, triangulation, vertex
756cache locality optimization, removal of degenerate primitives and duplicate
757vertices, sorting by primitive type, merging of redundant materials and many
758more.")
759 (license license:bsd-3)))
760
f327b36e
LC
761(define-public cgal
762 (package
763 (name "cgal")
f119612d 764 (version "5.2.1")
f327b36e
LC
765 (source (origin
766 (method url-fetch)
767 (uri (string-append
fc193b65
LLB
768 "https://github.com/CGAL/cgal/releases/download/v" version
769 "/CGAL-" version ".tar.xz"))
f327b36e
LC
770 (sha256
771 (base32
f119612d 772 "1rhrpjsp4081nn2q215h78kc4msrj0081zg65k1gfp5hl88bg03y"))))
f327b36e
LC
773 (build-system cmake-build-system)
774 (arguments
632c6f2e 775 '(#:tests? #f)) ; no test target
f327b36e
LC
776 (inputs
777 `(("mpfr" ,mpfr)
778 ("gmp" ,gmp)
779 ("boost" ,boost)))
9e25afcb 780 (home-page "https://www.cgal.org/")
f327b36e
LC
781 (synopsis "Computational geometry algorithms library")
782 (description
783 "CGAL provides easy access to efficient and reliable geometric algorithms
784in the form of a C++ library. CGAL is used in various areas needing geometric
785computation, such as: computer graphics, scientific visualization, computer
786aided design and modeling, geographic information systems, molecular biology,
787medical imaging, robotics and motion planning, mesh generation, numerical
788methods, etc. It provides data structures and algorithms such as
789triangulations, Voronoi diagrams, polygons, polyhedra, mesh generation, and
790many more.")
791
792 ;; The 'LICENSE' file explains that a subset is available under more
793 ;; permissive licenses.
794 (license license:gpl3+)))
cab6a253
LC
795
796(define-public ilmbase
797 (package
798 (name "ilmbase")
3772f95d 799 (version "2.5.5")
cab6a253 800 (source (origin
942c7889
MB
801 (method git-fetch)
802 (uri (git-reference
803 (url "https://github.com/openexr/openexr")
804 (commit (string-append "v" version))))
805 (file-name (git-file-name "ilmbase" version))
cab6a253
LC
806 (sha256
807 (base32
3772f95d 808 "0mjzb3fd8b9pcqmrgy5cdsmvqd70hmlvjnfypi66v59h3fhrmgd8"))
e0bb6391 809 (patches (search-patches "ilmbase-fix-tests.patch"))))
942c7889
MB
810 (build-system cmake-build-system)
811 (arguments
812 `(#:phases (modify-phases %standard-phases
813 (add-after 'unpack 'change-directory
814 (lambda _
815 (chdir "IlmBase")
816 #t)))))
25c4a04f 817 (home-page "https://www.openexr.com/")
cab6a253
LC
818 (synopsis "Utility C++ libraries for threads, maths, and exceptions")
819 (description
820 "IlmBase provides several utility libraries for C++. Half is a class
821that encapsulates ILM's 16-bit floating-point format. IlmThread is a thread
822abstraction. Imath implements 2D and 3D vectors, 3x3 and 4x4 matrices,
823quaternions and other useful 2D and 3D math functions. Iex is an
824exception-handling library.")
825 (license license:bsd-3)))
826
89c34f5e
MC
827(define-public lib2geom
828 ;; Use the latest master commit, as the 1.0 release suffer build problems.
aec8dfd3
BD
829 (let ((revision "4")
830 (commit "b29d60e49a58f4e8069544b44863b1a623e4ee59"))
89c34f5e
MC
831 (package
832 (name "lib2geom")
833 (version (git-version "1.0" revision commit))
834 (source (origin
835 (method git-fetch)
836 (uri (git-reference
837 (url "https://gitlab.com/inkscape/lib2geom.git")
838 (commit commit)))
839 (file-name (git-file-name name version))
840 (sha256
841 (base32
aec8dfd3 842 "0xd8f3cgfnipdav4w8j54r7hzy9f3m7xk42ppcfhdjz2hriggyk6"))
89c34f5e 843 (patches
d6fcc67d 844 ;; Patch submitted to upstream (see:
620796e6 845 ;; https://gitlab.com/inkscape/lib2geom/-/merge_requests/32).
d6fcc67d 846 (search-patches "lib2geom-fix-tests.patch"))
89c34f5e
MC
847 (modules '((guix build utils)))
848 (snippet
849 '(begin
850 ;; Fix py2geom module initialization (see:
851 ;; https://gitlab.com/inkscape/lib2geom/merge_requests/18).
852 (substitute* "src/py2geom/__init__.py"
853 (("_py2geom") "py2geom._py2geom"))
854 #t))))
855 (build-system cmake-build-system)
856 (arguments
857 `(#:imported-modules ((guix build python-build-system)
858 ,@%cmake-build-system-modules)
859 #:configure-flags '("-D2GEOM_BUILD_SHARED=ON"
860 "-D2GEOM_BOOST_PYTHON=ON"
861 ;; Compiling the Cython bindings fail (see:
862 ;; https://gitlab.com/inkscape/lib2geom/issues/21).
863 "-D2GEOM_CYTHON_BINDINGS=OFF")
864 #:phases
865 (modify-phases %standard-phases
866 (add-after 'unpack 'patch-python-lib-install-path
867 (lambda* (#:key inputs outputs #:allow-other-keys)
868 (let* ((python-version (@ (guix build python-build-system)
869 python-version))
870 (python-maj-min-version (python-version
871 (assoc-ref inputs "python")))
872 (site-package (string-append
873 (assoc-ref outputs "out")
874 "/lib/python" python-maj-min-version
875 "/site-packages")))
876 (substitute* '("src/cython/CMakeLists.txt"
877 "src/py2geom/CMakeLists.txt")
878 (("PYTHON_LIB_INSTALL \"[^\"]*\"")
879 (format #f "PYTHON_LIB_INSTALL ~s" site-package))))
880 #t)))))
881 (native-inputs `(("python" ,python-wrapper)
882 ("googletest" ,googletest)
883 ("pkg-config" ,pkg-config)))
884 (inputs `(("cairo" ,cairo)
885 ("pycairo" ,python-pycairo)
886 ("double-conversion" ,double-conversion)
887 ("glib" ,glib)
888 ("gsl" ,gsl)))
889 (propagated-inputs
890 `(("boost" ,boost))) ;referred to in 2geom/pathvector.h.
891 (home-page "https://gitlab.com/inkscape/lib2geom/")
892 (synopsis "C++ 2D graphics library")
893 (description "2geom is a C++ library of mathematics for paths, curves,
894and other geometric calculations. Designed for vector graphics, it tackles
895Bézier curves, conic sections, paths, intersections, transformations, and
896basic geometries.")
897 ;; Because the library is linked with the GNU Scientific Library
898 ;; (GPLv3+), the combined work must be licensed as GPLv3+ (see:
899 ;; https://gitlab.com/inkscape/inkscape/issues/784).
900 (license license:gpl3+))))
901
2f6d51ef
MC
902(define-public pstoedit
903 (package
904 (name "pstoedit")
905 (version "3.75")
906 (source (origin
907 (method url-fetch)
908 (uri (string-append "mirror://sourceforge/pstoedit/pstoedit/"
909 version "/pstoedit-" version ".tar.gz"))
910 (sha256
911 (base32
912 "1kv46g2wsvsvcngkavxl5gnw3l6g5xqnh4kmyx4b39a01d8xiddp"))))
913 (build-system gnu-build-system)
914 (native-inputs
915 `(("pkg-config" ,pkg-config)))
916 (inputs
917 `(("ghostscript" ,ghostscript)
918 ("imagemagick" ,imagemagick)
919 ("libplot" ,plotutils)
920 ("libjpeg" ,libjpeg-turbo)
921 ("zlib" ,zlib))) ;else libp2edrvmagick++.so fails to link
922 (home-page "http://www.pstoedit.net/")
923 (synopsis "Converter for PostScript and PDF graphics")
924 (description "The @code{pstoedit} utility allows translating graphics
925in the PostScript or PDF (Portable Document Format) formats to various
926other vector formats such as:
927@itemize
928@item Tgif (.obj)
929@item gnuplot
930@item xfig (.fig)
931@item Flattened PostScript
932@item DXF, a CAD (Computed-Aided Design) exchange format
933@item PIC (for troff/groff)
934@item MetaPost (for usage with TeX/LaTeX)
935@item LaTeX2e picture
936@item GNU Metafile (for use with plotutils/libplot)
937@item Any format supported by ImageMagick
938@end itemize")
939 (license license:gpl2+)))
940
e23d5aa9
TGR
941(define-public dear-imgui
942 (package
943 (name "dear-imgui")
944 (version "1.79")
945 (source
946 (origin
947 (method git-fetch)
948 (uri (git-reference
949 (url "https://github.com/ocornut/imgui")
950 (commit (string-append "v" version))))
951 (file-name (git-file-name name version))
952 (sha256
953 (base32 "0x26igynxp6rlpp2wfc5dr7x6yh583ajb7p23pgycn9vqikn318q"))))
954 (build-system gnu-build-system)
955 (arguments
956 `(#:make-flags
957 (list (string-append "CC=" ,(cc-for-target))
958 (string-append "PREFIX=" (assoc-ref %outputs "out"))
959 (string-append "VERSION=" ,version))
960 #:tests? #f ; no test suite
961 #:phases
962 (modify-phases %standard-phases
963 (add-after 'unpack 'unpack-debian-files
964 (lambda* (#:key inputs #:allow-other-keys)
965 (invoke "tar" "xvf" (assoc-ref inputs "debian-files"))
966 (apply invoke "patch" "-Np1" "-i"
967 (find-files "debian/patches" "\\.patch$"))
968 (substitute* "Makefile"
969 (("<stb/") "<") ; Guix doesn't use this subdirectory
970 ;; Don't build or install the static library.
971 (("^all: .*") "all: $(SHLIB) $(PCFILE)"))
972 (substitute* (list "imgui.pc.in"
973 "Makefile")
974 ;; Don't link against a non-existent library.
975 (("-lstb") ""))
976 #t))
977 (delete 'configure) ; no configure script
978 (replace 'install
979 ;; The default ‘install’ target installs the static library. Don't.
980 (lambda* (#:key make-flags #:allow-other-keys)
981 (apply invoke "make" "install-shared" "install-header"
982 make-flags))))))
983 (native-inputs
984 `(("debian-files"
985 ;; Upstream doesn't provide a build system. Use Debian's.
986 ,(origin
987 (method url-fetch)
988 (uri (string-append "mirror://debian/pool/main/i/imgui/imgui_"
989 version "+ds-1.debian.tar.xz"))
990 (sha256
991 (base32 "1xhk34pzpha6k5l2j150capq66y8czhmsi04ib09wvb34ahqxpby"))))
992 ("pkg-config" ,pkg-config)))
993 (inputs
994 `(("freetype" ,freetype)
995 ("stb-rect-pack" ,stb-rect-pack)
996 ("stb-truetype" ,stb-truetype)))
997 (home-page "https://github.com/ocornut/imgui")
998 (synopsis "Immediate-mode C++ GUI library with minimal dependencies")
999 (description
1000 "Dear ImGui is a @acronym{GUI, graphical user interface} library for C++.
1001It creates optimized vertex buffers that you can render anytime in your
10023D-pipeline-enabled application. It's portable, renderer-agnostic, and
1003self-contained, without external dependencies.
1004
1005Dear ImGui is aimed at content creation, visualization, and debugging tools as
1006opposed to average end-user interfaces. Hence it favors simplicity and
1007productivity but lacks certain features often found in higher-level libraries.
1008It is particularly suited to integration in game engine tooling, real-time 3D
1009applications, full-screen applications, and embedded platforms without standard
1010operating system features.")
1011 (license license:expat))) ; some examples/ use the zlib licence
1012
dd75a9a2
MR
1013(define-public ogre
1014 (package
1015 (name "ogre")
79bf16f6 1016 (version "1.12.9")
dd75a9a2
MR
1017 (source
1018 (origin
1aa662b3
EF
1019 (method git-fetch)
1020 (uri (git-reference
b0e7b699 1021 (url "https://github.com/OGRECave/ogre")
79bf16f6 1022 (commit (string-append "v" version))))
1aa662b3 1023 (file-name (git-file-name name version))
dd75a9a2 1024 (sha256
79bf16f6 1025 (base32 "0b0pwh31nykrfhka6jqwclfx1pxzhj11vkl91951d63kwr5bbzms"))))
dd75a9a2
MR
1026 (build-system cmake-build-system)
1027 (arguments
1028 '(#:phases
1029 (modify-phases %standard-phases
79bf16f6
TGR
1030 (add-before 'configure 'unpack-dear-imgui
1031 (lambda* (#:key inputs #:allow-other-keys)
1032 (copy-recursively (assoc-ref inputs "dear-imgui-source")
1033 "../dear-imgui-source")
1034 #t))
dd75a9a2 1035 (add-before 'configure 'pre-configure
79bf16f6 1036 ;; CMakeLists.txt forces a CMAKE_INSTALL_RPATH value. As
e3a617fe
NG
1037 ;; a consequence, we cannot suggest ours in configure flags. Fix
1038 ;; it.
1039 (lambda* (#:key inputs outputs #:allow-other-keys)
1040 (substitute* "CMakeLists.txt"
1041 (("set\\(CMAKE_INSTALL_RPATH .*") ""))
dd75a9a2
MR
1042 #t)))
1043 #:configure-flags
e3a617fe
NG
1044 (let* ((out (assoc-ref %outputs "out"))
1045 (runpath
1046 (string-join (list (string-append out "/lib")
1047 (string-append out "/lib/OGRE"))
1048 ";")))
1049 (list (string-append "-DCMAKE_INSTALL_RPATH=" runpath)
79bf16f6 1050 "-DIMGUI_DIR=../dear-imgui-source"
e3a617fe
NG
1051 "-DOGRE_BUILD_DEPENDENCIES=OFF"
1052 "-DOGRE_BUILD_TESTS=TRUE"
1053 "-DOGRE_INSTALL_DOCS=TRUE"
1054 "-DOGRE_INSTALL_SAMPLES=TRUE"
1055 "-DOGRE_INSTALL_SAMPLES_SOURCE=TRUE"))))
dd75a9a2
MR
1056 (native-inputs
1057 `(("boost" ,boost)
79bf16f6 1058 ("dear-imgui-source" ,(package-source dear-imgui))
dd75a9a2 1059 ("doxygen" ,doxygen)
e3a617fe 1060 ("googletest" ,googletest-1.8)
dd75a9a2
MR
1061 ("pkg-config" ,pkg-config)))
1062 (inputs
1063 `(("font-dejavu" ,font-dejavu)
1064 ("freeimage" ,freeimage)
1065 ("freetype" ,freetype)
1066 ("glu" ,glu)
dd75a9a2
MR
1067 ("libxaw" ,libxaw)
1068 ("libxrandr" ,libxrandr)
e3a617fe
NG
1069 ("pugixml" ,pugixml)
1070 ("sdl2" ,sdl2)
dd75a9a2
MR
1071 ("tinyxml" ,tinyxml)
1072 ("zziplib" ,zziplib)))
1073 (synopsis "Scene-oriented, flexible 3D engine written in C++")
1074 (description
1075 "OGRE (Object-Oriented Graphics Rendering Engine) is a scene-oriented,
1076flexible 3D engine written in C++ designed to make it easier and more intuitive
1077for developers to produce applications utilising hardware-accelerated 3D
1078graphics.")
05fe0f56 1079 (home-page "https://www.ogre3d.org/")
dd75a9a2
MR
1080 (license license:expat)))
1081
cab6a253
LC
1082(define-public openexr
1083 (package
1084 (name "openexr")
942c7889 1085 (version (package-version ilmbase))
cab6a253 1086 (source (origin
942c7889
MB
1087 (inherit (package-source ilmbase))
1088 (file-name (git-file-name "openexr" version))
cab6a253
LC
1089 (modules '((guix build utils)))
1090 (snippet
c2c36f5f 1091 '(begin
942c7889 1092 (substitute* (find-files "OpenEXR" "tmpDir\\.h")
c2c36f5f
LC
1093 (("\"/var/tmp/\"")
1094 "\"/tmp/\""))
fcde1d27 1095 #t))))
942c7889 1096 (build-system cmake-build-system)
bce6f7ce 1097 (arguments
ae5c63d7 1098 `(#:phases
bce6f7ce 1099 (modify-phases %standard-phases
942c7889
MB
1100 (add-after 'unpack 'change-directory
1101 (lambda _
1102 (chdir "OpenEXR")
1103 #t))
e0bb6391 1104 (add-after 'change-directory 'increase-test-timeout
bce6f7ce 1105 (lambda _
ae5c63d7
MB
1106 ;; On armhf-linux, we need to override the CTest default
1107 ;; timeout of 1500 seconds for the OpenEXR.IlmImf test.
e0bb6391
MB
1108 (substitute* "IlmImfTest/CMakeLists.txt"
1109 (("add_test\\(NAME OpenEXR\\.IlmImf.*" all)
1110 (string-append
1111 all
1112 "set_tests_properties(OpenEXR.IlmImf PROPERTIES TIMEOUT 2000)")))
ae5c63d7
MB
1113 #t))
1114 ,@(if (not (target-64bit?))
1115 `((add-after 'change-directory 'disable-broken-test
1116 ;; This test fails on i686. Upstream developers suggest that
1117 ;; this test is broken on i686 and can be safely disabled:
1118 ;; https://github.com/openexr/openexr/issues/67#issuecomment-21169748
1119 (lambda _
1120 (substitute* "IlmImfTest/main.cpp"
b8bb2f07 1121 ((".*testOptimizedInterleavePatterns.*") ""))
ae5c63d7
MB
1122 #t)))
1123 '()))))
cab6a253
LC
1124 (native-inputs
1125 `(("pkg-config" ,pkg-config)))
1126 (propagated-inputs
1127 `(("ilmbase" ,ilmbase) ;used in public headers
1128 ("zlib" ,zlib))) ;OpenEXR.pc reads "-lz"
25c4a04f 1129 (home-page "https://www.openexr.com/")
9f2840cb 1130 (synopsis "High-dynamic range file format library")
cab6a253
LC
1131 (description
1132 "OpenEXR is a high dynamic-range (HDR) image file format developed for
9f2840cb
LC
1133use in computer imaging applications. The IlmImf C++ libraries support
1134storage of the \"EXR\" file format for storing 16-bit floating-point images.")
cab6a253 1135 (license license:bsd-3)))
9d620590 1136
71299c12
RW
1137(define-public openimageio
1138 (package
1139 (name "openimageio")
e629d722 1140 (version "2.2.10.1")
71299c12 1141 (source (origin
1cd968e8
EF
1142 (method git-fetch)
1143 (uri (git-reference
b0e7b699 1144 (url "https://github.com/OpenImageIO/oiio")
1cd968e8
EF
1145 (commit (string-append "Release-" version))))
1146 (file-name (git-file-name name version))
71299c12
RW
1147 (sha256
1148 (base32
e629d722 1149 "0wzh5n527l7ia1754cf9xmbvv4ya6hj34dy6cbq9xk9372h8gd9q"))))
71299c12
RW
1150 (build-system cmake-build-system)
1151 ;; FIXME: To run all tests successfully, test image sets from multiple
1152 ;; third party sources have to be present. For details see
e629d722 1153 ;; <https://github.com/OpenImageIO/oiio/blob/master/INSTALL.md>
4b42b106 1154 (arguments
e629d722
NG
1155 `(#:tests? #f
1156 #:configure-flags (list "-DUSE_EXTERNAL_PUGIXML=1")))
71299c12
RW
1157 (native-inputs
1158 `(("pkg-config" ,pkg-config)))
1159 (inputs
1160 `(("boost" ,boost)
e629d722 1161 ("fmt" ,fmt)
71299c12 1162 ("libpng" ,libpng)
4bd428a7 1163 ("libjpeg" ,libjpeg-turbo)
71299c12
RW
1164 ("libtiff" ,libtiff)
1165 ("giflib" ,giflib)
1166 ("openexr" ,openexr)
1167 ("ilmbase" ,ilmbase)
e629d722 1168 ("pugixml" ,pugixml)
d4c9e81c
MW
1169 ("python" ,python-wrapper)
1170 ("pybind11" ,pybind11)
1171 ("robin-map" ,robin-map)
71299c12
RW
1172 ("zlib" ,zlib)))
1173 (synopsis "C++ library for reading and writing images")
1174 (description
1175 "OpenImageIO is a library for reading and writing images, and a bunch of
1176related classes, utilities, and applications. There is a particular emphasis
1177on formats and functionality used in professional, large-scale animation and
1178visual effects work for film.")
831d64cc 1179 (home-page "https://www.openimageio.org")
71299c12
RW
1180 (license license:bsd-3)))
1181
6bf11392
MR
1182(define-public openscenegraph
1183 (package
1184 (name "openscenegraph")
1788bb90 1185 (version "3.6.5")
6bf11392
MR
1186 (source
1187 (origin
fc4f13bd
AK
1188 (method git-fetch)
1189 (uri (git-reference
1190 (url "https://github.com/openscenegraph/OpenSceneGraph")
1191 (commit (string-append "OpenSceneGraph-" version))))
6bf11392 1192 (sha256
1788bb90 1193 (base32 "00i14h82qg3xzcyd8p02wrarnmby3aiwmz0z43l50byc9f8i05n1"))
3752b683 1194 (file-name (git-file-name name version))))
fc4f13bd
AK
1195 (properties
1196 `((upstream-name . "OpenSceneGraph")))
6bf11392
MR
1197 (build-system cmake-build-system)
1198 (arguments
1788bb90 1199 `(#:tests? #f ; no test target available
3def739d
TGR
1200 ;; Without this flag, 'rd' will be added to the name of the
1201 ;; library binaries and break linking with other programs.
1202 #:build-type "Release"
6bf11392
MR
1203 #:configure-flags
1204 (list (string-append "-DCMAKE_INSTALL_RPATH="
1205 (assoc-ref %outputs "out") "/lib:"
3def739d 1206 (assoc-ref %outputs "out") "/lib64"))))
6bf11392 1207 (native-inputs
fc4f13bd
AK
1208 `(("pkg-config" ,pkg-config)
1209 ("unzip" ,unzip)))
6bf11392 1210 (inputs
c695fb76 1211 `(("giflib" ,giflib)
ebb7cf9e 1212 ("libjpeg" ,libjpeg-turbo) ; required for the JPEG texture plugin.
c695fb76
TGR
1213 ("jasper" ,jasper)
1214 ("librsvg" ,librsvg)
fc4f13bd 1215 ("libxrandr" ,libxrandr)
c695fb76
TGR
1216 ("ffmpeg" ,ffmpeg)
1217 ("mesa" ,mesa)))
99ed3a1f 1218 (synopsis "High-performance real-time graphics toolkit")
6bf11392 1219 (description
99ed3a1f 1220 "The OpenSceneGraph is a high-performance 3D graphics toolkit
6bf11392 1221used by application developers in fields such as visual simulation, games,
d7c5aac1 1222virtual reality, scientific visualization and modeling.")
6bf11392
MR
1223 (home-page "http://www.openscenegraph.org")
1224 ;; The 'LICENSE' file explains that the source is licensed under
1225 ;; LGPL 2.1, but with 4 exceptions. This version is called OSGPL.
1226 (license license:lgpl2.1)))
1227
df8ab774
RW
1228;; We need this for simgear
1229(define-public openscenegraph-3.4
1230 (package (inherit openscenegraph)
1231 (name "openscenegraph")
1232 (version "3.4.1")
1233 (source
1234 (origin
1235 (method git-fetch)
1236 (uri (git-reference
1237 (url "https://github.com/openscenegraph/OpenSceneGraph")
1238 (commit (string-append "OpenSceneGraph-" version))))
1239 (file-name (git-file-name name version))
1240 (sha256
1241 (base32
1242 "1fbzg1ihjpxk6smlq80p3h3ggllbr16ihd2fxpfwzam8yr8yxip9"))))
1243 (arguments
1244 (substitute-keyword-arguments (package-arguments openscenegraph)
1245 ((#:configure-flags flags)
1246 `(cons
1247 ;; The jpeg plugin requires conversion between integers and booleans
1248 "-DCMAKE_CXX_FLAGS=-fpermissive"
1249 ,flags))))
1250 (inputs
4bd428a7 1251 `(("libjpeg" ,libjpeg-turbo)
df8ab774
RW
1252 ,@(package-inputs openscenegraph)))))
1253
84a0c6ff
MB
1254
1255(define-public openmw-openscenegraph
1256 ;; OpenMW prefers its own fork of openscenegraph:
1257 ;; https://wiki.openmw.org/index.php?title=Development_Environment_Setup#OpenSceneGraph.
1258 (let ((commit "36a962845a2c87a6671fd822157e0729d164e940"))
1259 (hidden-package
1260 (package
1261 (inherit openscenegraph)
1262 (version (git-version "3.6" "1" commit))
1263 (source
1264 (origin
1265 (method git-fetch)
1266 (uri (git-reference
1267 (url "https://github.com/OpenMW/osg/")
1268 (commit commit)))
1269 (file-name (git-file-name (package-name openscenegraph) version))
1270 (sha256
1271 (base32
1272 "05yhgq3qm5q277y32n5sf36vx5nv5qd3zlhz4csgd3a6190jrnia"))))
1273 (arguments
1274 (substitute-keyword-arguments (package-arguments openscenegraph)
1275 ((#:configure-flags flags)
1276 ;; As per the above wiki link, the following plugins are enough:
1277 `(append
1278 '("-DBUILD_OSG_PLUGINS_BY_DEFAULT=0"
1279 "-DBUILD_OSG_PLUGIN_OSG=1"
1280 "-DBUILD_OSG_PLUGIN_DDS=1"
1281 "-DBUILD_OSG_PLUGIN_TGA=1"
1282 "-DBUILD_OSG_PLUGIN_BMP=1"
1283 "-DBUILD_OSG_PLUGIN_JPEG=1"
1284 "-DBUILD_OSG_PLUGIN_PNG=1"
1285 "-DBUILD_OSG_DEPRECATED_SERIALIZERS=0"
1286 ;; The jpeg plugin requires conversion between integers and booleans
1287 "-DCMAKE_CXX_FLAGS=-fpermissive")
1288 ,flags))))))))
1289
340ee00b
KK
1290(define-public povray
1291 (package
1292 (name "povray")
1293 (version "3.7.0.8")
1294 (source (origin
1295 (method git-fetch)
1296 (uri (git-reference
1297 (url "https://github.com/POV-Ray/povray")
1298 (commit (string-append "v" version))))
1299 (file-name (git-file-name name version))
1300 (sha256
1301 (base32
1302 "1q114n4m3r7qy3yn954fq7p46rg7ypdax5fazxr9yj1jklf1lh6z"))
1303 (modules '((guix build utils)))
1304 (snippet
1305 '(begin
1306 ;; Delete bundled libraries.
1307 (delete-file-recursively "libraries")
1308 #t))))
1309 (build-system gnu-build-system)
1310 (native-inputs
1311 `(("autoconf" ,autoconf)
1312 ("automake" ,automake)
1313 ("pkg-config" ,pkg-config)))
1314 (inputs
1315 `(("boost" ,boost)
4bd428a7 1316 ("libjpeg" ,libjpeg-turbo)
340ee00b
KK
1317 ("libpng" ,libpng)
1318 ("libtiff" ,libtiff)
1319 ("openexr" ,openexr)
1320 ("sdl" ,sdl)
1321 ("zlib" ,zlib)))
1322 (arguments
1323 '(#:configure-flags
1324 (list "COMPILED_BY=Guix"
1325 (string-append "--with-boost-libdir="
1326 (assoc-ref %build-inputs "boost") "/lib")
340ee00b
KK
1327 "--disable-optimiz-arch")
1328 #:phases
1329 (modify-phases %standard-phases
1330 (add-after 'unpack 'run-prebuild
1331 (lambda _
1332 (setenv "HOME" (getcwd))
1333 (with-directory-excursion "unix"
1334 (substitute* "prebuild.sh"
1335 (("/bin/sh") (which "sh")))
1336 (invoke "sh" "prebuild.sh"))
1337 #t))
1338 ;; The bootstrap script is run by the prebuild script in the
1339 ;; "run-prebuild" phase.
1340 (delete 'bootstrap))))
1341 (synopsis "Tool for creating three-dimensional graphics")
1342 (description
1343 "@code{POV-Ray} is short for the Persistence of Vision Raytracer, a tool
1344for producing high-quality computer graphics. @code{POV-Ray} creates
1345three-dimensional, photo-realistic images using a rendering technique called
1346ray-tracing. It reads in a text file containing information describing the
1347objects and lighting in a scene and generates an image of that scene from the
1348view point of a camera also described in the text file. Ray-tracing is not a
1349fast process by any means, but it produces very high quality images with
1350realistic reflections, shading, perspective and other effects.")
1351 (home-page "http://www.povray.org/")
1352 (license license:agpl3+)))
1353
96d15e48
RW
1354(define-public rapicorn
1355 (package
1356 (name "rapicorn")
1357 (version "16.0.0")
1358 (source (origin
1359 (method url-fetch)
1360 (uri (string-append "https://testbit.eu/pub/dists/rapicorn/"
1361 "rapicorn-" version ".tar.xz"))
1362 (sha256
1363 (base32
42bf3429
AE
1364 "1y51yjrpsihas1jy905m9p3r8iiyhq6bwi2690c564i5dnix1f9d"))
1365 (patches (search-patches "rapicorn-isnan.patch"))))
96d15e48
RW
1366 (build-system gnu-build-system)
1367 (arguments
002528bc 1368 `(#:phases
96d15e48 1369 (modify-phases %standard-phases
002528bc
RW
1370 (add-after 'unpack 'fix-tests
1371 (lambda _
1372 ;; Our grep does not support perl regular expressions.
1373 (substitute* "taptool.sh"
1374 (("grep -P") "grep -E"))
1375 ;; Disable path tests because we cannot access /bin or /sbin.
1376 (substitute* "rcore/tests/multitest.cc"
1377 (("TCMP \\(Path::equals \\(\"/bin\"") "//"))
1378 #t))
1379 (add-before 'check 'pre-check
1380 (lambda _
1381 ;; The test suite requires a running X server (with DISPLAY
1382 ;; number 99 or higher).
1383 (system "Xvfb :99 &")
1384 (setenv "DISPLAY" ":99")
1385 #t))
1386 (add-after 'unpack 'replace-fhs-paths
96d15e48
RW
1387 (lambda _
1388 (substitute* (cons "Makefile.decl"
1389 (find-files "." "^Makefile\\.in$"))
002528bc
RW
1390 (("/bin/ls") (which "ls"))
1391 (("/usr/bin/env") (which "env")))
96d15e48
RW
1392 #t)))))
1393 ;; These libraries are listed in the "Required" section of the pkg-config
1394 ;; file.
1395 (propagated-inputs
1396 `(("librsvg" ,librsvg)
1397 ("cairo" ,cairo)
1398 ("pango" ,pango)
002528bc
RW
1399 ("libxml2" ,libxml2)
1400 ("python2-enum34" ,python2-enum34)))
96d15e48
RW
1401 (inputs
1402 `(("gdk-pixbuf" ,gdk-pixbuf)
1403 ("libpng" ,libpng-1.2)
1404 ("readline" ,readline)
1405 ("libcroco" ,libcroco)
1406 ("python" ,python-2)
1407 ("cython" ,python2-cython)))
1408 (native-inputs
c22c6de4 1409 `(("pandoc" ,pandoc)
96d15e48
RW
1410 ("bison" ,bison)
1411 ("flex" ,flex)
1412 ("doxygen" ,doxygen)
1413 ("graphviz" ,graphviz)
1414 ("intltool" ,intltool)
002528bc 1415 ("pkg-config" ,pkg-config)
ff337525 1416 ("xvfb" ,xorg-server-for-tests)))
36c5cf75 1417 (home-page "https://rapicorn.testbit.org/")
96d15e48
RW
1418 (synopsis "Toolkit for rapid development of user interfaces")
1419 (description
1420 "Rapicorn is a toolkit for rapid development of user interfaces in C++
1421and Python. The user interface is designed in a declarative markup language
1422and is connected to the programming logic using data bindings and commands.")
1423 (license license:mpl2.0)))
1424
9d620590
LC
1425(define-public ctl
1426 (package
1427 (name "ctl")
1428 (version "1.5.2")
1429 (source (origin
1430 (method url-fetch)
1431 (uri (string-append "https://github.com/ampas/CTL/archive/ctl-"
1432 version ".tar.gz"))
1433 (sha256
1434 (base32
1435 "1gg04pyvw0m398akn0s1l07g5b1haqv5na1wpi5dii1jjd1w3ynp"))))
1436 (build-system cmake-build-system)
1437 (arguments '(#:tests? #f)) ;no 'test' target
1438
1439 ;; Headers include OpenEXR and IlmBase headers.
1440 (propagated-inputs `(("openexr" ,openexr)))
1441
1442 (home-page "http://ampasctl.sourceforge.net")
1443 (synopsis "Color Transformation Language")
1444 (description
1445 "The Color Transformation Language, or CTL, is a small programming
1446language that was designed to serve as a building block for digital color
1447management systems. CTL allows users to describe color transforms in a
1448concise and unambiguous way by expressing them as programs. In order to apply
1449a given transform to an image, the color management system instructs a CTL
1450interpreter to load and run the CTL program that describes the transform. The
1451original and the transformed image constitute the CTL program's input and
1452output.")
1453
1454 ;; The web site says it's under a BSD-3 license, but the 'LICENSE' file
1455 ;; and headers use different wording.
166191b3 1456 (license (license:non-copyleft "file://LICENSE"))))
a29bfc28
LC
1457
1458(define-public brdf-explorer
9b91fb32
RW
1459 ;; There are no release tarballs, and not even tags in the repo,
1460 ;; so use the latest revision.
1461 (let ((commit "5b2cd46f38a06e47207fa7229b72d37beb945019")
1462 (revision "1"))
1463 (package
1464 (name "brdf-explorer")
1465 (version (string-append "1.0.0-" revision "." (string-take commit 9)))
1466 (source (origin
1467 (method git-fetch)
1468 (uri (git-reference
b0e7b699 1469 (url "https://github.com/wdas/brdf")
9b91fb32
RW
1470 (commit commit)))
1471 (sha256
1472 (base32
1473 "06vzbiajzbi2xl8jlff5d45bc9wd68i3jdndfab1f3jgfrd8bsgx"))
1474 (file-name (string-append name "-" version "-checkout"))))
1475 (build-system gnu-build-system)
1476 (arguments
1477 `(#:phases (modify-phases %standard-phases
1478 (replace 'configure
1479 (lambda* (#:key outputs #:allow-other-keys)
1480 (let ((out (assoc-ref outputs "out")))
cba8ba8b
RW
1481 (invoke "qmake"
1482 (string-append "prefix=" out)))))
9b91fb32
RW
1483 (add-after 'install 'wrap-program
1484 (lambda* (#:key outputs #:allow-other-keys)
1485 (let* ((out (assoc-ref outputs "out"))
1486 (bin (string-append out "/bin"))
1487 (data (string-append
1488 out "/share/brdf")))
1489 (with-directory-excursion bin
1490 (rename-file "brdf" ".brdf-real")
1491 (call-with-output-file "brdf"
1492 (lambda (port)
1493 (format port "#!/bin/sh
a29bfc28
LC
1494# Run the thing from its home, otherwise it just bails out.
1495cd \"~a\"
1496exec -a \"$0\" ~a/.brdf-real~%"
9b91fb32 1497 data bin)))
cba8ba8b
RW
1498 (chmod "brdf" #o555)))
1499 #t)))))
9b91fb32
RW
1500 (native-inputs
1501 `(("qttools" ,qttools))) ;for 'qmake'
1502 (inputs
ea0a5107 1503 `(("qtbase" ,qtbase-5)
9b91fb32
RW
1504 ("mesa" ,mesa)
1505 ("glew" ,glew)
1506 ("freeglut" ,freeglut)
1507 ("zlib" ,zlib)))
68e30b8d 1508 (home-page "https://www.disneyanimation.com/technology/brdf.html")
9b91fb32
RW
1509 (synopsis
1510 "Analyze bidirectional reflectance distribution functions (BRDFs)")
1511 (description
1512 "BRDF Explorer is an application that allows the development and analysis
a29bfc28
LC
1513of bidirectional reflectance distribution functions (BRDFs). It can load and
1514plot analytic BRDF functions (coded as functions in OpenGL's GLSL shader
1515language), measured material data from the MERL database, and anisotropic
1516measured material data from MIT CSAIL. Graphs and visualizations update in
1517real time as parameters are changed, making it a useful tool for evaluating
1518and understanding different BRDFs (and other component functions).")
9b91fb32 1519 (license license:ms-pl))))
87bafa07
1520
1521(define-public agg
1522 (package
1523 (name "agg")
1524 (version "2.5")
1525 (source (origin
1526 (method url-fetch)
7db0799d
LC
1527 (uri (list (string-append
1528 "ftp://ftp.fau.de/gentoo/distfiles/agg-"
1529 version ".tar.gz")
1530 (string-append
1531 "ftp://ftp.ula.ve/gentoo/distfiles/agg-"
1532 version ".tar.gz")
1533
1534 ;; Site was discontinued.
1535 (string-append "http://www.antigrain.com/agg-"
1536 version ".tar.gz")))
87bafa07
1537 (sha256
1538 (base32 "07wii4i824vy9qsvjsgqxppgqmfdxq0xa87i5yk53fijriadq7mb"))
fc1adab1 1539 (patches (search-patches "agg-am_c_prototype.patch"))))
87bafa07
1540 (build-system gnu-build-system)
1541 (arguments
1542 '(#:configure-flags
1543 (list (string-append "--x-includes=" (assoc-ref %build-inputs "libx11")
1544 "/include")
1545 (string-append "--x-libraries=" (assoc-ref %build-inputs "libx11")
31f45cf7
EF
1546 "/lib")
1547 "--disable-examples")
87bafa07 1548 #:phases
dc1d3cde 1549 (modify-phases %standard-phases
8d18edde 1550 (replace 'bootstrap
dc1d3cde
KK
1551 (lambda _
1552 ;; let's call configure from configure phase and not now
1553 (substitute* "autogen.sh" (("./configure") "# ./configure"))
8d18edde 1554 (invoke "sh" "autogen.sh"))))))
87bafa07
1555 (native-inputs
1556 `(("pkg-config" ,pkg-config)
1557 ("libtool" ,libtool)
1558 ("autoconf" ,autoconf)
8d18edde 1559 ("automake" ,automake)))
87bafa07
1560 (inputs
1561 `(("libx11" ,libx11)
1562 ("freetype" ,freetype)
1563 ("sdl" ,sdl)))
7db0799d
LC
1564
1565 ;; Antigrain.com was discontinued.
1566 (home-page "http://agg.sourceforge.net/antigrain.com/index.html")
87bafa07
1567 (synopsis "High-quality 2D graphics rendering engine for C++")
1568 (description
1569 "Anti-Grain Geometry is a high quality rendering engine written in C++.
1570It supports sub-pixel resolutions and anti-aliasing. It is also library for
1571rendering SVG graphics.")
1572 (license license:gpl2+)))
f76d56d2
BW
1573
1574(define-public python-pastel
1575 (package
1576 (name "python-pastel")
67c8b644 1577 (version "0.2.0")
f76d56d2
BW
1578 (source
1579 (origin
1580 (method url-fetch)
1581 (uri (pypi-uri "pastel" version))
1582 (sha256
1583 (base32
67c8b644 1584 "0dnaw44ss10i10z4ksy0xljknvjap7rb7g0b8p6yzm5x4g2my5a6"))))
f76d56d2 1585 (build-system python-build-system)
1e8826bd 1586 (arguments
1587 `(#:phases (modify-phases %standard-phases
1588 (replace 'check
1589 (lambda _ (invoke "pytest" "pastel" "tests/"))))))
f76d56d2
BW
1590 (native-inputs
1591 `(("python-pytest" ,python-pytest)))
1592 (home-page "https://github.com/sdispater/pastel")
1593 (synopsis "Library to colorize strings in your terminal")
1594 (description "Pastel is a simple library to help you colorize strings in
1e8826bd 1595your terminal.")
f76d56d2
BW
1596 (license license:expat)))
1597
1598(define-public python2-pastel
1599 (package-with-python2 python-pastel))
17153d18
MO
1600
1601(define-public fgallery
1602 (package
1603 (name "fgallery")
1604 (version "1.8.2")
1605 (source (origin
1606 (method url-fetch)
1607 (uri
1608 (string-append
1609 "http://www.thregr.org/~wavexx/software/fgallery/releases/"
1610 "fgallery-" version ".zip"))
1611 (sha256
1612 (base32
1613 "18wlvqbxcng8pawimbc8f2422s8fnk840hfr6946lzsxr0ijakvf"))))
1614 (build-system gnu-build-system)
1615 (arguments
1616 `(#:tests? #f ; no tests
1617 #:phases
1618 (modify-phases %standard-phases
1619 (delete 'configure)
1620 (delete 'build)
1621 (replace 'install
1622 (lambda* (#:key inputs outputs #:allow-other-keys)
1623 (let* ((out (assoc-ref outputs "out"))
1624 (bin (string-append out "/bin/"))
1625 (share (string-append out "/share/fgallery"))
1626 (man (string-append out "/share/man/man1"))
1627 (perl5lib (getenv "PERL5LIB"))
1628 (script (string-append share "/fgallery")))
1629 (define (bin-directory input-name)
1630 (string-append (assoc-ref inputs input-name) "/bin"))
1631
1632 (mkdir-p man)
1633 (copy-file "fgallery.1" (string-append man "/fgallery.1"))
1634
1635 (mkdir-p share)
1636 (copy-recursively "." share)
1637
1638 ;; fgallery copies files from store when it is run. The
1639 ;; read-only permissions from the store directories will cause
1640 ;; fgallery to fail. Do not preserve file attributes when
1641 ;; copying files to prevent it.
1642 (substitute* script
1643 (("'cp'")
1644 "'cp', '--no-preserve=all'"))
1645
1646 (mkdir-p bin)
1647 (symlink script (string-append out "/bin/fgallery"))
1648
1649 (wrap-program script
1650 `("PATH" ":" prefix
1651 ,(map bin-directory '("imagemagick"
1652 "lcms"
1653 "fbida"
1654 "libjpeg"
1655 "zip"
1656 "jpegoptim"
1657 "pngcrush"
1658 "p7zip")))
1659 `("PERL5LIB" ":" prefix (,perl5lib)))
1660 #t))))))
1661 (native-inputs
1662 `(("unzip" ,unzip)))
1663 ;; TODO: Add missing optional dependency: facedetect.
1664 (inputs
1665 `(("imagemagick" ,imagemagick)
1666 ("lcms" ,lcms)
1667 ("fbida" ,fbida)
4bd428a7 1668 ("libjpeg" ,libjpeg-turbo)
17153d18
MO
1669 ("zip" ,zip)
1670 ("perl" ,perl)
1671 ("perl-cpanel-json-xs" ,perl-cpanel-json-xs)
1672 ("perl-image-exiftool" ,perl-image-exiftool)
1673 ("jpegoptim" ,jpegoptim)
1674 ("pngcrush" ,pngcrush)
1675 ("p7zip" ,p7zip)))
1676 (home-page "http://www.thregr.org/~wavexx/software/fgallery/")
1677 (synopsis "Static photo gallery generator")
1678 (description
1679 "FGallery is a static, JavaScript photo gallery generator with minimalist
1680look. The result can be uploaded on any web server without additional
1681requirements.")
1682 (license license:gpl2+)))
13f30b54
CZ
1683
1684(define-public opensubdiv
1685 (package
1686 (name "opensubdiv")
a31b7457 1687 (version "3.4.0")
13f30b54
CZ
1688 (source (origin
1689 (method git-fetch)
1690 (uri (git-reference
a31b7457
MB
1691 (url "https://github.com/PixarAnimationStudios/OpenSubdiv")
1692 (commit (string-append "v" (string-join (string-split version #\.)
1693 "_")))))
13f30b54
CZ
1694 (file-name (git-file-name name version))
1695 (sha256
1696 (base32
1697 "0cippg6aqc5dlya1cmh3908pwssrg52fwgyylnvz5343yrxmgk12"))))
1698 (build-system cmake-build-system)
1699 (arguments
1700 `(#:phases (modify-phases %standard-phases
1701 (add-before 'configure 'set-glew-location
1702 (lambda* (#:key inputs #:allow-other-keys)
1703 (setenv "GLEW_LOCATION" (assoc-ref inputs "glew"))
1704 #t))
1705 (add-before 'check 'start-xorg-server
1706 (lambda* (#:key inputs #:allow-other-keys)
1707 ;; The test suite requires a running X server.
1708 (system (string-append (assoc-ref inputs "xorg-server")
1709 "/bin/Xvfb :1 &"))
1710 (setenv "DISPLAY" ":1")
1711 #t)))))
1712 (native-inputs
ff337525 1713 `(("xorg-server" ,xorg-server-for-tests)))
13f30b54 1714 (inputs
5edad6c7 1715 `(("glew" ,glew)
13f30b54
CZ
1716 ("libxrandr" ,libxrandr)
1717 ("libxcursor" ,libxcursor)
1718 ("libxinerama" ,libxinerama)
1719 ("libxi" ,libxi)
1720 ("zlib" ,zlib)
1721 ("glfw" ,glfw)))
5331dcd6 1722 (home-page "https://graphics.pixar.com/opensubdiv/")
13f30b54
CZ
1723 (synopsis "High performance subdivision surface evaluation")
1724 (description "OpenSubdiv is a set of libraries that implement high
1725performance subdivision surface (subdiv) evaluation on massively parallel CPU
1726and GPU architectures.")
1727 (license license:asl2.0)))
c3c0eda6
SS
1728
1729(define-public opencsg
1730 (let ((dot-to-dash (lambda (c) (if (char=? c #\.) #\- c))))
1731 (package
1732 (name "opencsg")
1733 (version "1.4.2")
1734 (source
1735 (origin
1736 (method git-fetch)
1737 (uri (git-reference
b0e7b699 1738 (url "https://github.com/floriankirsch/OpenCSG")
c3c0eda6
SS
1739 (commit (string-append "opencsg-"
1740 (string-map dot-to-dash version)
1741 "-release"))))
1742 (file-name (git-file-name name version))
1743 (sha256
1744 (base32
1745 "00m4vs6jn3scqczscc4591l1d6zg6anqp9v1ldf9ymf70rdyvm7m"))))
1746 (build-system gnu-build-system)
1747 (arguments
1748 `(#:phases
1749 (modify-phases %standard-phases
1750 (replace 'configure
1751 (lambda* (#:key outputs #:allow-other-keys)
1752 (substitute* "src/Makefile"
1753 (("/usr/local") (assoc-ref outputs "out")))
1754 #t))
1755 (add-before 'build 'skip-example
1756 (lambda _ (chdir "src") #t)))))
1757 (inputs
1758 `(("glew" ,glew)
1759 ("freeglut" ,freeglut)))
1760 (synopsis "Library for rendering Constructive Solid Geometry (CSG)")
1761 (description
1762 "OpenCSG is a library for rendering Constructive Solid Geometry (CSG) using
1763OpenGL. CSG is an approach for modeling complex 3D-shapes using simpler ones.
1764For example, two shapes can be combined by uniting them, by intersecting them,
1765or by subtracting one shape from the other.")
1766 (home-page "http://www.opencsg.org/")
1767 (license license:gpl2))))
f36617cb
JS
1768
1769(define-public coin3D
24268ec4
TGR
1770 ;; The ‘4.0.0’ zip archive isn't stable, nor in fact a release. See:
1771 ;; https://bitbucket.org/Coin3D/coin/issues/179/coin-400-srczip-has-been-modified
1772 (let ((revision 1)
1773 (changeset "ab8d0e47a4de3230a8137feb39c142d6ba45f97d"))
1774 (package
1775 (name "coin3D")
1776 (version
1777 (simple-format #f "3.1.3-~A-~A" revision (string-take changeset 7)))
1778 (source
1779 (origin
1780 (method hg-fetch)
1781 (uri (hg-reference
1782 (url "https://bitbucket.org/Coin3D/coin")
1783 (changeset changeset)))
1784 (file-name (git-file-name name version))
1785 (sha256
1786 (base32 "1ff44jz6lg4rylljvy69n1hcjh9y6achbv9jpn1cv2sf8cxn3r2j"))
1787 (modules '((guix build utils)))
1788 (snippet
1789 '(begin
1790 (for-each delete-file
1791 '("cfg/csubst.exe"
1792 "cfg/wrapmsvc.exe"))
1793 #t))))
1794 (build-system cmake-build-system)
1795 (native-inputs
1796 `(("doxygen" ,doxygen)
1797 ("graphviz" ,graphviz)))
1798 (inputs
1799 `(("boost" ,boost)
1800 ("freeglut" ,freeglut)
1801 ("glew" ,glew)))
1802 (arguments
1803 `(#:configure-flags
1804 (list
1805 "-DCOIN_BUILD_DOCUMENTATION_MAN=ON"
1806 (string-append "-DBOOST_ROOT="
1807 (assoc-ref %build-inputs "boost")))))
1808 (home-page "https://bitbucket.org/Coin3D/coin/wiki/Home")
1809 (synopsis
1810 "High-level 3D visualization library with Open Inventor 2.1 API")
1811 (description
1812 "Coin is a 3D graphics library with an Application Programming Interface
f36617cb
JS
1813based on the Open Inventor 2.1 API. For those who are not familiar with
1814Open Inventor, it is a scene-graph based retain-mode rendering and model
1815interaction library, written in C++, which has become the de facto
1816standard graphics library for 3D visualization and visual simulation
1817software in the scientific and engineering community.")
24268ec4 1818 (license license:bsd-3))))
ce226e9d 1819
708a610e
EZ
1820(define-public coin3D-4
1821 (package
1822 (name "coin3D")
1823 (version "4.0.0")
1824 (source
1825 (origin
1826 (method git-fetch)
1827 (uri (git-reference
1828 (url "https://github.com/coin3d/coin")
1829 (commit (string-append "Coin-" version))
1830 (recursive? #t)))
1831 (file-name (git-file-name name version))
1832 (sha256
1833 (base32 "1ayg0hl8wanhadahm5xbghghxw1qjwqbrs3dl3ngnff027hsyf8p"))
1834 (modules '((guix build utils)))
1835 (snippet
1836 '(begin
1837 ;; Delete binaries
1838 (for-each delete-file
1839 '("cfg/csubst.exe"
1840 "cfg/wrapmsvc.exe"))
1841 ;; Delete references to packaging tool cpack. Otherwise the build
1842 ;; fails with "add_subdirectory given source "cpack.d" which is not
1843 ;; an existing directory."
1844 (substitute* "CMakeLists.txt"
1845 ((".*cpack.d.*") ""))
1846 #t))))
1847 (build-system cmake-build-system)
1848 (native-inputs
1849 `(("doxygen" ,doxygen)
1850 ("graphviz" ,graphviz)))
1851 (inputs
1852 `(("boost" ,boost)
1853 ("freeglut" ,freeglut)
1854 ("glew" ,glew)))
1855 (arguments
1856 `(#:configure-flags
1857 (list
1858 "-DCOIN_BUILD_DOCUMENTATION_MAN=ON"
1859 (string-append "-DBOOST_ROOT="
1860 (assoc-ref %build-inputs "boost")))))
1861 (home-page "https://github.com/coin3d/coin")
1862 (synopsis
1863 "High-level 3D visualization library with Open Inventor 2.1 API")
1864 (description
1865 "Coin is a 3D graphics library with an Application Programming Interface
1866based on the Open Inventor 2.1 API. For those who are not familiar with Open
1867Inventor, it is a scene-graph based retain-mode rendering and model interaction
1868library, written in C++, which has become the de facto standard graphics
1869library for 3D visualization and visual simulation software in the scientific
1870and engineering community.")
1871 (license license:bsd-3)))
1872
ce226e9d
JK
1873(define-public superfamiconv
1874 (package
1875 (name "superfamiconv")
1876 (version "0.8.8")
1877 (source
1878 (origin
1879 (method git-fetch)
1880 (uri (git-reference
1881 (url "https://github.com/Optiroc/SuperFamiconv")
1882 (commit (string-append "v" version))))
1883 (file-name (git-file-name name version))
1884 (sha256
1885 (base32
1886 "0848szv6a2b8wdganh6mw5i8vn8cqvn1kbwzx7mb9wlrf5wzqn37"))))
1887 (build-system gnu-build-system)
1888 (arguments
1889 `(#:tests? #f ; no tests
1890 #:phases
1891 (modify-phases %standard-phases
1892 (delete 'configure)
1893 (replace 'install
1894 (lambda* (#:key outputs #:allow-other-keys)
1895 (let* ((outdir (assoc-ref outputs "out"))
1896 (bindir (string-append outdir "/bin")))
1897 (install-file "bin/superfamiconv" bindir)
1898 #t))))))
1899 (home-page "https://github.com/Optiroc/SuperFamiconv")
1900 (synopsis "Tile graphics converter supporting SNES, Game Boy Color
1901and PC Engine formats")
1902 (description "SuperFamiconv is a converter for tiled graphics, supporting
1903the graphics formats of the SNES, Game Boy Color and PC Engine game consoles.
1904Automated palette selection is supported.")
1905 (license license:expat)))
9ac2a4ee 1906
1907(define-public drawpile
7e662338
MR
1908 ;; This commit fix building with libmicrohttpd>=0.71.
1909 (let ((commit "ed1a75deb113da2d1df91a28f557509c4897130e")
1910 (revision "1"))
1911 (package
1912 (name "drawpile")
1913 (version (string-append "2.1.17-" revision "." (string-take commit 9)))
1914 (source (origin
1915 (method git-fetch)
1916 (uri (git-reference
1917 (url "https://github.com/drawpile/Drawpile")
1918 (commit commit)))
1919 (file-name (git-file-name name version))
1920 (sha256
1921 (base32
1922 "1y21h1hk9ipkjvhjgas0c5hkjyan92vsxbxrn60c906hzqln2fr1"))))
1923 (build-system qt-build-system)
1924 (arguments
1925 '(#:configure-flags
1926 (list "-DTESTS=ON" "-DTOOLS=ON" "-DKIS_TABLET=ON")))
1927 (native-inputs
1928 `(("extra-cmake-modules" ,extra-cmake-modules)
1929 ("pkg-config" ,pkg-config)))
1930 (inputs
1931 `(("giflib" ,giflib)
1932 ("karchive" ,karchive)
1933 ("kdnssd" ,kdnssd)
1934 ("libmicrohttpd" ,libmicrohttpd)
1935 ("libsodium" ,libsodium)
1936 ("libvpx" ,libvpx)
1937 ("libxi" ,libxi)
1938 ;; ("miniupnpc" ,miniupnpc) ;segfaults for some reason
ea0a5107 1939 ("qtbase" ,qtbase-5)
7e662338
MR
1940 ("qtkeychain" ,qtkeychain)
1941 ("qtmultimedia" ,qtmultimedia)
1942 ("qtsvg" ,qtsvg)
1943 ("qtx11extras" ,qtx11extras)))
1944 (home-page "https://drawpile.net")
1945 (synopsis "Collaborative drawing program")
1946 (description "Drawpile is a drawing program that allows share the canvas
9ac2a4ee 1947with other users in real time.
1948
1949Some feature highlights:
1950@itemize
1951@item Shared canvas using the built-in server or a dedicated server
1952@item Record, play back and export drawing sessions
1953@item Simple animation support
1954@item Layers and blending modes
1955@item Text layers
1956@item Supports pressure sensitive Wacom tablets
1957@item Built-in chat
1958@item Supports OpenRaster file format
1959@item Encrypted connections using SSL
1960@item Automatic port forwarding with UPnP
1961@end itemize\n")
7e662338 1962 (license license:gpl3+))))
2fdc8ca7
AT
1963
1964(define-public monado
1965 (package
1966 (name "monado")
1967 (version "21.0.0")
1968 (source (origin
1969 (method url-fetch)
1970 (uri (string-append "https://gitlab.freedesktop.org/" name "/"
1971 name "/-/archive/v" version "/"
1972 name "-v" version ".tar.bz2"))
1973 (sha256
1974 (base32
1975 "0n04k7a8b0i8ga0kbzh7qxmvni1ijawgk98s83519vxg4d0yyjbq"))))
1976 (build-system meson-build-system)
1977 (inputs
1978 `(("ffmpeg" ,ffmpeg)
1979 ("glslang" ,glslang)
1980 ("libudev" ,eudev)
1981 ("libusb" ,libusb)
1982 ("libxcb" ,libxcb)
1983 ("libxrandr" ,libxrandr)
1984 ("opengl" ,mesa)
1985 ("v4l" ,v4l-utils)
1986 ("vulkan-loader" ,vulkan-loader)))
1987 (native-inputs
1988 `(("eigen" ,eigen)
1989 ("pkg-config" ,pkg-config)
1990 ("vulkan-headers" ,vulkan-headers)))
1991 (arguments
1992 `(#:configure-flags
1993 (list "-Dinstall-active-runtime=false")))
1994 (home-page "https://monado.freedesktop.org/")
1995 (synopsis "OpenXR runtime")
1996 (description "Monado is an OpenXR runtime delivering immersive experiences
1997such as VR and AR on mobile, PC/desktop, and any other device. Monado aims to be
1998a complete and conforming implementation of the OpenXR API made by Khronos.")
1999 (license license:boost1.0)))