gnu: Add shaderc.

* gnu/packages/vulkan.scm (shaderc): New variable.
This commit is contained in:
Rutger Helling 2018-01-31 15:26:18 +01:00
parent 288b8fd5e9
commit 5b69baf0ad
No known key found for this signature in database
GPG key ID: F3A727DB44FCCA36

View file

@ -22,8 +22,10 @@ (define-module (gnu packages vulkan)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system meson)
#:use-module (gnu packages)
#:use-module (gnu packages bison)
#:use-module (gnu packages cmake)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gl)
#:use-module (gnu packages pkg-config)
@ -194,3 +196,79 @@ (define-public vulkan-icd-loader
(license (list license:asl2.0 ;LICENSE.txt
(license:x11-style "file://COPYRIGHT.txt")
license:bsd-3))))
(define-public shaderc
(let ((commit "773ec22d49f40b7161820f29d953be4a7e40190d")
(revision "1"))
(package
(name "shaderc")
(version (string-append "0.0-" revision "." (string-take commit 9)))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/google/shaderc")
(commit commit)))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0b41inb1czxv3mciip0lfdxv19ccx2ys31fivfywjn2q8va1gd1f"))))
(build-system meson-build-system)
(arguments
`(#:tests? #f ;; Tests don't work yet.
#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
;; Remove various lines and touch build-version.inc or
;; configuring won't work.
(invoke "touch" "glslc/src/build-version.inc")
(substitute* "CMakeLists.txt" (("..PYTHON_EXE..*") ""))
(substitute* "CMakeLists.txt"
((".*update_build_version.py..*") ""))
(substitute* "CMakeLists.txt"
((".*add_custom_target.build-version.*") ""))
(substitute* "CMakeLists.txt"
((".*spirv-tools_SOURCE_DIR.*glslang_SOURCE_DIR.*")
""))
(substitute* "CMakeLists.txt"
((".*Update build-version.inc.*") ""))
(substitute* "CMakeLists.txt" ((".*--check.*") ""))
(substitute* "glslc/src/main.cc" ((".*build-version.inc.*")
"\"1\""))
(invoke "cmake" "-GNinja" "-DCMAKE_BUILD_TYPE=Release"
"-DSHADERC_SKIP_TESTS=ON"
"-DCMAKE_INSTALL_LIBDIR=lib"
(string-append "-DCMAKE_INSTALL_PREFIX="
out)))))
(add-after 'unpack 'unpack-sources
(lambda* (#:key inputs #:allow-other-keys)
(let ((spirv-tools-source (assoc-ref %build-inputs
"spirv-tools-source"))
(spirv-headers-source (assoc-ref %build-inputs
"spirv-headers-source"))
(glslang-source (assoc-ref %build-inputs
"glslang-source")))
(mkdir-p "third-party/spirv-tools")
(copy-recursively spirv-tools-source
"third_party/spirv-tools")
(mkdir-p "third-party/spirv-tools/external/spirv-headers")
(copy-recursively spirv-headers-source
(string-append "third_party/spirv-tools"
"/external/spirv-headers"))
(mkdir-p "third-party/glslang")
(copy-recursively glslang-source
"third_party/glslang")
#t))))))
(inputs `(("python" ,python)))
(native-inputs `(("cmake" ,cmake)
("glslang-source", (package-source glslang))
("pkg-config", pkg-config)
("spirv-headers-source", (package-source spirv-headers))
("spirv-tools-source", (package-source spirv-tools))))
(home-page "https://github.com/google/shaderc")
(synopsis "Tools for shader compilation")
(description "Shaderc is a collection of tools, libraries and tests for
shader compilation.")
(license license:asl2.0))))