gnu: Add wl-clipboard.
[jackhill/guix/guix.git] / gnu / packages / vulkan.scm
index 1d83b6f..ff1088d 100644 (file)
@@ -1,5 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system gnu)
   #:use-module (guix build-system meson)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages wine)
   #:use-module (gnu packages xorg))
 
 (define-public spirv-headers
   ;; Keep updated in accordance with
   ;; https://github.com/google/shaderc/blob/known-good/known_good.json
-  (let ((commit "061097878467b8e040fbf153a837d844ef9f9f96")
-        (revision "2"))
+  (let ((commit "3ce3e49d73b8abbf2ffe33f829f941fb2a40f552")
+        (revision "3"))
     (package
       (name "spirv-headers")
       (version (string-append "0.0-" revision "." (string-take commit 9)))
@@ -48,7 +55,7 @@
                (commit commit)))
          (sha256
           (base32
-           "0bf9h6xc5fkncxnadwmqvpsjh7sdgns6is8prv1gvlfzrkvpjj17"))
+           "0yk4bzqifdqpmdxkhvrxbdqhf5ngkga0ig1yyz7khr7rklqfz7wp"))
          (file-name (string-append name "-" version "-checkout"))))
       (build-system cmake-build-system)
       (arguments
          #:phases (modify-phases %standard-phases
                     (replace 'install
                       (lambda* (#:key outputs #:allow-other-keys)
-                        (zero? (system* "cmake" "-E" "copy_directory"
+                        (invoke "cmake" "-E" "copy_directory"
                                         "../source/include/spirv"
                                         (string-append (assoc-ref outputs "out")
-                                                       "/include/spirv"))))))))
+                                                       "/include/spirv")))))))
       (home-page "https://github.com/KhronosGroup/SPIRV-Headers")
       (synopsis "Machine-readable files from the SPIR-V Registry")
       (description
@@ -78,8 +85,8 @@ and for the GLSL.std.450 extended instruction set.
 (define-public spirv-tools
   ;; Keep updated in accordance with
   ;; https://github.com/google/shaderc/blob/known-good/known_good.json
-  (let ((commit "90862fe4b1c6763b32ce683d2d32c2f281f577cf")
-        (revision "1"))
+  (let ((commit "fe2fbee294a8ad4434f828a8b4d99eafe9aac88c")
+        (revision "2"))
     (package
      (name "spirv-tools")
      (version (string-append "0.0-" revision "." (string-take commit 9)))
@@ -91,18 +98,16 @@ and for the GLSL.std.450 extended instruction set.
              (commit commit)))
        (sha256
         (base32
-         "1yq8ab6f52wcxm2azzmx70nqz8l35izd45830aikjkk1jfzmzabb"))
+         "03rq4ypwqnz34n8ip85n95a3b9rxb34j26azzm3b3invaqchv19x"))
        (file-name (string-append name "-" version "-checkout"))))
      (build-system cmake-build-system)
      (arguments
-      `(#:configure-flags (list (string-append "-DCMAKE_INSTALL_LIBDIR="
-                                               (assoc-ref %outputs "out")
-                                               "/lib")
-                                (string-append "-DSPIRV-Headers_SOURCE_DIR="
+      `(#:tests? #f ; FIXME: Tests fail.
+        #:configure-flags (list (string-append "-DSPIRV-Headers_SOURCE_DIR="
                                                (assoc-ref %build-inputs
                                                           "spirv-headers")))))
      (inputs `(("spirv-headers" ,spirv-headers)))
-     (native-inputs `(("pkg-config"pkg-config)
+     (native-inputs `(("pkg-config" ,pkg-config)
                       ("python" ,python)))
      (home-page "https://github.com/KhronosGroup/SPIRV-Tools")
      (synopsis "API and commands for processing SPIR-V modules")
@@ -115,8 +120,8 @@ disassembler, validator, and optimizer for SPIR-V.")
 (define-public glslang
   ;; Keep updated in accordance with
   ;; https://github.com/google/shaderc/blob/known-good/known_good.json
-  (let ((commit "b5b08462442239e6537315ea1405b6afcd53043e")
-        (revision "2"))
+  (let ((commit "32d3ec319909fcad0b2b308fe1635198773e8316")
+        (revision "3"))
     (package
       (name "glslang")
       (version (string-append "3.0-" revision "." (string-take commit 9)))
@@ -128,7 +133,7 @@ disassembler, validator, and optimizer for SPIR-V.")
                (commit commit)))
          (sha256
           (base32
-           "08imby3hciisshzacrkx8s56lx4fxm7dad06xxaxxcapinmqrvwk"))
+           "1kmgjv5kbrjy6azpgwnjcn3cj8vg5i8hnyk3m969sc0gq2j1rbjj"))
          (file-name (string-append name "-" version "-checkout"))))
       (build-system cmake-build-system)
       (arguments
@@ -155,19 +160,42 @@ interpretation of the specifications for these languages.")
                      ;; include/SPIRV/{bitutils,hex_float}.h are Apache 2.0.
                      license:asl2.0)))))
 
-(define-public vulkan-icd-loader
+(define-public vulkan-headers
+  (package
+    (name "vulkan-headers")
+    (version "1.1.85.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/KhronosGroup/Vulkan-Headers/"
+             "archive/sdk-" version ".tar.gz"))
+       (sha256
+        (base32
+         "166hqqb97kjg6h9vp8yxb1cq02i1kqaxvl693482gf8v21fl7ink"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f)) ; No tests.
+    (home-page
+     "https://github.com/KhronosGroup/Vulkan-Headers")
+    (synopsis "Vulkan Header files and API registry")
+    (description
+     "Vulkan-Headers contains header files and API registry for Vulkan.")
+    (license (list license:asl2.0)))) ;LICENSE.txt
+
+(define-public vulkan-loader
   (package
-    (name "vulkan-icd-loader")
-    (version "1.0.68.0")
+    (name "vulkan-loader")
+    (version (package-version vulkan-headers))
     (source
      (origin
        (method url-fetch)
        (uri (string-append
-             "https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/"
+             "https://github.com/KhronosGroup/Vulkan-Loader/"
              "archive/sdk-" version ".tar.gz"))
        (sha256
         (base32
-         "1n5gry5zxpwi7330fmi06snalra8hkbbw68gnwbp531kd5ycyinh"))))
+         "04d53ynlc0ww8r67hv4sxwg5sirjhpr1laaa9hc6j4niliw0166n"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ;FIXME: 23/39 tests fail.  Try "tests/run_all_tests.sh".
@@ -180,6 +208,7 @@ interpretation of the specifications for these languages.")
              #t)))
        #:configure-flags (list
                           "-DBUILD_LAYERS=OFF" ; FIXME: Fails to build.
+                          "-DBUILD_TESTS=OFF" ; FIXME: Needs 'googletest' submodule.
                           (string-append "-DCMAKE_INSTALL_LIBDIR="
                                               (assoc-ref %outputs "out") "/lib"))))
     (inputs `(("glslang" ,glslang)
@@ -188,11 +217,12 @@ interpretation of the specifications for these languages.")
               ("libxrandr" ,libxrandr)
               ("mesa" ,mesa)
               ("spirv-tools" ,spirv-tools)
+              ("vulkan-headers" ,vulkan-headers)
               ("wayland" ,wayland)))
-    (native-inputs `(("pkg-config"pkg-config)
+    (native-inputs `(("pkg-config" ,pkg-config)
                      ("python" ,python)))
     (home-page
-     "https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers")
+     "https://github.com/KhronosGroup/Vulkan-Loader")
     (synopsis "Khronos official ICD loader and validation layers for Vulkan")
     (description
      "Vulkan allows multiple @dfn{Installable Client Drivers} (ICDs) each
@@ -206,78 +236,151 @@ and the ICD.")
                    (license:x11-style "file://COPYRIGHT.txt")
                    license:bsd-3))))
 
+(define-public vulkan-icd-loader
+  (deprecated-package "vulkan-icd-loader" vulkan-loader))
+
+(define-public vulkan-tools
+  (package
+    (name "vulkan-tools")
+    (version (package-version vulkan-headers))
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/KhronosGroup/Vulkan-Tools/"
+             "archive/sdk-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0r26px9rh09giddajlmafv21rx1la1y3bbnjgnpai8aw98wvq9mm"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("glslang" ,glslang)
+       ("libxrandr" ,libxrandr)
+       ("mesa" ,mesa)
+       ("vulkan-headers" ,vulkan-headers)
+       ("vulkan-loader" ,vulkan-loader)
+       ("wayland" ,wayland)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python" ,python)))
+    (arguments
+     `(#:tests? #f)) ; No tests.
+    (home-page
+     "https://github.com/KhronosGroup/Vulkan-Tools")
+    (synopsis "Tools and utilities for Vulkan")
+    (description
+     "Vulkan-Tools provides tools and utilities that can assist development by
+enabling developers to verify their applications correct use of the Vulkan
+API.")
+    (license (list license:asl2.0)))) ;LICENSE.txt
+
 (define-public shaderc
-  (let ((commit "773ec22d49f40b7161820f29d953be4a7e40190d")
-        (revision "1"))
+  (let ((commit "be8e0879750303a1de09385465d6b20ecb8b380d")
+        (revision "2"))
     (package
-     (name "shaderc")
-     (version (string-append "0.0-" revision "." (string-take commit 9)))
+      (name "shaderc")
+      (version (git-version "0.0.0" revision commit))
+      (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
+           "16p25ry2i4zrj00zihfpf210f8xd7g398ffbw25igvi9mbn4nbfd"))))
+      (build-system meson-build-system)
+      (arguments
+       `(#:tests? #f ; FIXME: Tests fail.
+         #: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 inputs "spirv-tools-source"))
+                     (spirv-headers-source (assoc-ref inputs "spirv-headers-source"))
+                     (glslang-source (assoc-ref inputs "glslang-source")))
+                 (copy-recursively spirv-tools-source "third_party/spirv-tools")
+                 (copy-recursively spirv-headers-source
+                                   (string-append "third_party/spirv-tools"
+                                                  "/external/spirv-headers"))
+                 (copy-recursively glslang-source "third_party/glslang")
+                 #t))))))
+      (inputs
+       `(("googletest" ,googletest)
+         ("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))))
+
+(define-public vkd3d
+  (let ((commit "ecda316ef54d70bf1b3e860755241bb75873e53f")) ; Release 1.1.
+    (package
+     (name "vkd3d")
+     (version "1.1")
      (source
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/google/shaderc")
+             (url "https://source.winehq.org/git/vkd3d.git")
              (commit commit)))
-       (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0b41inb1czxv3mciip0lfdxv19ccx2ys31fivfywjn2q8va1gd1f"))))
-     (build-system meson-build-system)
+         "05a28kspy8gzng181w28zjqdb3pj2ss83b0lwnppxbcdzsz7rvrf"))
+       (file-name (string-append name "-" version "-checkout"))))
+     (build-system gnu-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))))
+      `(#:configure-flags '("--with-spirv-tools")))
+     (native-inputs
+      `(("autoconf" ,autoconf)
+        ("automake" ,automake)
+        ("gettext" ,gnu-gettext)
+        ("libtool" ,libtool)
+        ("pkg-config" ,pkg-config)))
+     (inputs
+      `(("libx11" ,libx11)
+        ("libxcb" ,libxcb)
+        ("spirv-headers" ,spirv-headers)
+        ("spirv-tools" ,spirv-tools)
+        ("vulkan-headers" ,vulkan-headers)
+        ("vulkan-loader" ,vulkan-loader)
+        ("wine" ,wine) ; Needed for 'widl'.
+        ("xcb-util" ,xcb-util)
+        ("xcb-util-keysyms" ,xcb-util-keysyms)
+        ("xcb-util-wm" ,xcb-util-wm)))
+     (home-page "https://source.winehq.org/git/vkd3d.git/")
+     (synopsis "Direct3D 12 to Vulkan translation library")
+     (description "vkd3d is a library for translating Direct3D 12 to Vulkan.")
+     (license license:lgpl2.1))))