(define-module (vfx packages base)
#:use-module (gnu packages gcc)
#:use-module (gnu packages boost)
#:use-module (gnu packages compression)
#:use-module (gnu packages graphics)
#:use-module (gnu packages tbb)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages gl)
#:use-module (guix)
#:use-module (guix packages)
#:use-module (guix build-system cmake)
#:use-module ((guix licenses) #:prefix license:))
(define-public plugixml
(package
(name "plugixml")
(version "1.13.0")
(source (origin
(method url-fetch)
(uri
(string-append "https://github.com/zeux/pugixml"
"/releases/download/v" (version-major+minor version) "/"
"pugixml-" (version-major+minor version) ".tar.gz"))
(sha256
(base32 "1gmb29m1hy7npv0r3ns1dc14cr0ky5dyamzs81b4hcf19s8v7h20"))))
(build-system cmake-build-system)
(home-page "https://pugixml.org")
(synopsis "Light-weight C++ XML processing library")
(description "DOM-like interface with rich traversal/modification
capabilities, an extremely fast XML parser which constructs the DOM tree
from an XML file/buffer, and an XPath 1.0 implementation for complex
data-driven tree queries.")
(license license:expat)))
(define-public openvdb-10.0
(package
(name "openvdb")
(version "10.0.1")
(source (origin
(method url-fetch)
(uri
(string-append "https://github.com/AcademySoftwareFoundation/openvdb"
"/archive/refs/tags/v" version ".tar.gz"))
(sha256
(base32 "0bv27i9gbplmscva16j7zkjjcgdknhxgpx0lg73j0syrzf8k6yl8"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags
(list "-DOPENVDB_BUILD_VDB_LOD=ON"
"-DOPENVDB_BUILD_VDB_RENDER=ON"
"-DOPENVDB_BUILD_VDB_VIEW=ON"
"-DOPENVDB_BUILD_NANOVDB=ON"
"-DNANOVDB_BUILD_TOOLS=ON"
(string-append "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath="
(assoc-ref %outputs "out") "/lib"))))
(native-inputs
(list
pkg-config
gcc-12))
(inputs
(list
;; for the library
jemalloc
boost
c-blosc
ilmbase
tbb
zlib
;; for the binaries
mesa
glfw
glu))
(home-page "https://www.openvdb.org/")
(synopsis "Sparse volume data structure and tools")
(description "OpenVDB is a C++ library comprising a hierarchical data
structure and a large suite of tools for the efficient storage and
manipulation of sparse volumetric data discretized on three-dimensional grids.
It was developed by DreamWorks Animation for use in volumetric applications
typically encountered in feature film production.")
(license license:mpl2.0)))