@@ -44,7 +44,9 @@ (define-module (gnu packages vulkan)
#:use-module (gnu packages llvm)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages version-control)
#:use-module (gnu packages wine)
+ #:use-module (gnu packages xml)
#:use-module (gnu packages xorg))
(define-public spirv-headers
@@ -615,3 +617,68 @@ (define-public vulkan-utility-libraries
(synopsis "Utility libraries for Vulkan developers")
(description "Utility libraries for Vulkan developers.")
(license license:asl2.0)))
+
+;; directx-shader-compiler depends on an old version of directx-headers.
+(define directx-headers-for-dxc
+ (let ((commit "980971e835876dc0cde415e8f9bc646e64667bf7")
+ (revision "115"))
+ (origin
+ (method git-fetch)
+ (uri (git-reference (url
+ "https://github.com/microsoft/DirectX-Headers")
+ (commit commit)))
+ (file-name (git-file-name "directx-headers-for-dxc"
+ (git-version "0" revision commit)))
+ (sha256 (base32 "0c7l2xdsbr132ga2nyqjhz9xa42dxvhh9idjxnl673mz5kab1j6h")))))
+
+(define-public directx-shader-compiler
+ (package
+ (name "directx-shader-compiler")
+ (version "1.8.2403.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/microsoft/DirectXShaderCompiler")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "14nd4ys0x14z17l5fkaysc9a1gfw3fmdj8gvxw1a013yg6fla7g3"))
+ (modules '((guix build utils)))
+ (snippet '(substitute* "CMakeLists.txt"
+ (("add_subdirectory\\(external\\)")
+ "find_package(SPIRV-Tools REQUIRED)
+find_package(SPIRV-Tools-opt CONFIG REQUIRED)")))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:configure-flags #~(list "-G"
+ "Unix Makefiles"
+ "-C"
+ "../source/cmake/caches/PredefinedParams.cmake"
+ (string-append "-DSPIRV_HEADER_INCLUDE_DIR="
+ #$(this-package-input
+ "spirv-headers") "/include")
+ (string-append "-DSPIRV_TOOLS_INCLUDE_DIR="
+ #$(this-package-input
+ "spirv-tools") "/include")
+ (string-append "-DDIRECTX_HEADER_INCLUDE_DIR="
+ #$directx-headers-for-dxc
+ "/include"))
+ #:phases #~(modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key make-flags outputs #:allow-other-keys)
+ (apply invoke "make" "install-distribution"
+ make-flags))))))
+ (inputs (list libxml2 spirv-headers spirv-tools))
+ (native-inputs (list git python))
+ (home-page "https://github.com/microsoft/DirectXShaderCompiler")
+ (synopsis
+ "Compiler and related tools used to compile High-Level Shader Language (HLSL)")
+ (description
+ "The DirectX Shader Compiler project includes a compiler and related
+tools used to compile High-Level Shader Language (HLSL) programs into DirectX
+Intermediate Language (DXIL) representation. Applications that make use of
+DirectX for graphics, games, and computation can use it to generate shader
+programs.")
+ (license license:ncsa)))