From fc198f842e197fcfbf0f0817113dc0a275fdf43c Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Tue, 6 Jan 2026 13:24:48 +0100 Subject: [PATCH] spirv-tools: split outputs Signed-off-by: Marcin Serwin --- ...g-config-modules-with-absolute-insta.patch | 55 +++++++++++++++++++ pkgs/by-name/sp/spirv-tools/package.nix | 29 ++++------ 2 files changed, 67 insertions(+), 17 deletions(-) create mode 100644 pkgs/by-name/sp/spirv-tools/0001-Fix-generated-pkg-config-modules-with-absolute-insta.patch diff --git a/pkgs/by-name/sp/spirv-tools/0001-Fix-generated-pkg-config-modules-with-absolute-insta.patch b/pkgs/by-name/sp/spirv-tools/0001-Fix-generated-pkg-config-modules-with-absolute-insta.patch new file mode 100644 index 000000000000..403570fc29ea --- /dev/null +++ b/pkgs/by-name/sp/spirv-tools/0001-Fix-generated-pkg-config-modules-with-absolute-insta.patch @@ -0,0 +1,55 @@ +From 2c8680324480bc0c20a026eb7ff9ffae1fe5fb13 Mon Sep 17 00:00:00 2001 +From: Marcin Serwin +Date: Tue, 6 Jan 2026 13:22:42 +0100 +Subject: [PATCH] Fix generated pkg-config modules with absolute installdirs + +Fixes: https://github.com/KhronosGroup/SPIRV-Tools/issues/3905 +Signed-off-by: Marcin Serwin +--- + cmake/SPIRV-Tools-shared.pc.in | 4 ++-- + cmake/SPIRV-Tools.pc.in | 4 ++-- + cmake/write_pkg_config.cmake | 2 ++ + 3 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/cmake/SPIRV-Tools-shared.pc.in b/cmake/SPIRV-Tools-shared.pc.in +index 0dcaa276..f6a282bd 100644 +--- a/cmake/SPIRV-Tools-shared.pc.in ++++ b/cmake/SPIRV-Tools-shared.pc.in +@@ -1,7 +1,7 @@ + prefix=@CMAKE_INSTALL_PREFIX@ + exec_prefix=${prefix} +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=@PKG_CONFIG_LIBDIR@ ++includedir=@PKG_CONFIG_INCLUDEDIR@ + + Name: SPIRV-Tools + Description: Tools for SPIR-V +diff --git a/cmake/SPIRV-Tools.pc.in b/cmake/SPIRV-Tools.pc.in +index 2984dc57..62902e58 100644 +--- a/cmake/SPIRV-Tools.pc.in ++++ b/cmake/SPIRV-Tools.pc.in +@@ -1,7 +1,7 @@ + prefix=@CMAKE_INSTALL_PREFIX@ + exec_prefix=${prefix} +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=@PKG_CONFIG_LIBDIR@ ++includedir=@PKG_CONFIG_INCLUDEDIR@ + + Name: SPIRV-Tools + Description: Tools for SPIR-V +diff --git a/cmake/write_pkg_config.cmake b/cmake/write_pkg_config.cmake +index d367ce3e..ed932271 100644 +--- a/cmake/write_pkg_config.cmake ++++ b/cmake/write_pkg_config.cmake +@@ -28,4 +28,6 @@ REGEX + # CMake support "-dev" in the version. + # If it's not a "-dev" version then ensure it ends with ".1" + string(REGEX REPLACE "-dev.1" ".0" CURRENT_VERSION "${CURRENT_VERSION}.1") ++cmake_path(APPEND PKG_CONFIG_LIBDIR "\${exec_prefix}" "${CMAKE_INSTALL_LIBDIR}") ++cmake_path(APPEND PKG_CONFIG_INCLUDEDIR "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") + configure_file(${TEMPLATE_FILE} ${OUT_FILE} @ONLY) +-- +2.51.2 + diff --git a/pkgs/by-name/sp/spirv-tools/package.nix b/pkgs/by-name/sp/spirv-tools/package.nix index 9cb82cd659f5..602f311daded 100644 --- a/pkgs/by-name/sp/spirv-tools/package.nix +++ b/pkgs/by-name/sp/spirv-tools/package.nix @@ -18,10 +18,20 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-H+t7ZH4SB+XgWTLj9XaJWZwAWk8M2QeC98Zi5ay8PBc="; }; + patches = [ + # https://github.com/KhronosGroup/SPIRV-Tools/pull/6483 + ./0001-Fix-generated-pkg-config-modules-with-absolute-insta.patch + ] # The cmake options are sufficient for turning on static building, but not # for disabling shared building, just trim the shared lib from the CMake # description - patches = lib.optional stdenv.hostPlatform.isStatic ./no-shared-libs.patch; + ++ lib.optional stdenv.hostPlatform.isStatic ./no-shared-libs.patch; + + outputs = [ + "out" + "lib" + "dev" + ]; nativeBuildInputs = [ cmake @@ -29,27 +39,12 @@ stdenv.mkDerivation (finalAttrs: { ]; cmakeFlags = [ - "-DSPIRV-Headers_SOURCE_DIR=${spirv-headers.src}" + "-DSPIRV-Headers_SOURCE_DIR=${spirv-headers}" # Avoid blanket -Werror to evade build failures on less # tested compilers. "-DSPIRV_WERROR=OFF" ]; - # https://github.com/KhronosGroup/SPIRV-Tools/issues/3905 - postPatch = '' - substituteInPlace CMakeLists.txt \ - --replace-fail '-P ''${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake' \ - '-DCMAKE_INSTALL_FULL_LIBDIR=''${CMAKE_INSTALL_FULL_LIBDIR} - -DCMAKE_INSTALL_FULL_INCLUDEDIR=''${CMAKE_INSTALL_FULL_INCLUDEDIR} - -P ''${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake' - substituteInPlace cmake/SPIRV-Tools.pc.in \ - --replace-fail '$'{prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@ \ - --replace-fail '$'{prefix}/@CMAKE_INSTALL_INCLUDEDIR@ @CMAKE_INSTALL_FULL_INCLUDEDIR@ - substituteInPlace cmake/SPIRV-Tools-shared.pc.in \ - --replace-fail '$'{prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@ \ - --replace-fail '$'{prefix}/@CMAKE_INSTALL_INCLUDEDIR@ @CMAKE_INSTALL_FULL_INCLUDEDIR@ - ''; - meta = { description = "SPIR-V Tools project provides an API and commands for processing SPIR-V modules"; homepage = "https://github.com/KhronosGroup/SPIRV-Tools";