From e5e0daa2ff46f32e8575726b0138f0632e43b3cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Mon, 25 Sep 2023 14:30:56 +0200 Subject: [PATCH 1/2] opencl-clang: unstable-2022-03-16 -> unstable-2023-06-12 --- .../libraries/opencl-clang/default.nix | 128 ++++++++++-------- 1 file changed, 70 insertions(+), 58 deletions(-) diff --git a/pkgs/development/libraries/opencl-clang/default.nix b/pkgs/development/libraries/opencl-clang/default.nix index 3732103d73a..70b80e3a84d 100644 --- a/pkgs/development/libraries/opencl-clang/default.nix +++ b/pkgs/development/libraries/opencl-clang/default.nix @@ -1,19 +1,16 @@ { lib , stdenv +, applyPatches , fetchFromGitHub , fetchpatch , cmake , git -, llvmPackages_11 +, llvmPackages_14 , spirv-llvm-translator , buildWithPatches ? true }: let - llvmPkgs = llvmPackages_11 // { - inherit spirv-llvm-translator; - }; - addPatches = component: pkg: pkg.overrideAttrs (oldAttrs: { postPatch = oldAttrs.postPatch or "" + '' for p in ${passthru.patchesOut}/${component}/*; do @@ -22,8 +19,13 @@ let ''; }); + llvmPkgs = llvmPackages_14; + inherit (llvmPkgs) llvm; + spirv-llvm-translator' = spirv-llvm-translator.override { inherit llvm; }; + libclang = if buildWithPatches then passthru.libclang else llvmPkgs.libclang; + passthru = rec { - spirv-llvm-translator = llvmPkgs.spirv-llvm-translator.override { llvm = llvmPackages_11.llvm; }; + spirv-llvm-translator = spirv-llvm-translator'; llvm = addPatches "llvm" llvmPkgs.llvm; libclang = addPatches "clang" llvmPkgs.libclang; @@ -34,7 +36,7 @@ let patchesOut = stdenv.mkDerivation { pname = "opencl-clang-patches"; - inherit (library) version src patches; + inherit version src; # Clang patches assume the root is the llvm root dir # but clang root in nixpkgs is the clang sub-directory postPatch = '' @@ -52,56 +54,66 @@ let }; }; - library = let - inherit (llvmPackages_11) llvm; - inherit (if buildWithPatches then passthru else llvmPkgs) libclang spirv-llvm-translator; - in - stdenv.mkDerivation { - pname = "opencl-clang"; - version = "unstable-2022-03-16"; - - - src = fetchFromGitHub { - owner = "intel"; - repo = "opencl-clang"; - rev = "bbdd1587f577397a105c900be114b56755d1f7dc"; - sha256 = "sha256-qEZoQ6h4XAvSnJ7/gLXBb1qrzeYa6Jp6nij9VFo8MwQ="; - }; - - patches = [ - # Build script tries to find Clang OpenCL headers under ${llvm} - # Work around it by specifying that directory manually. - ./opencl-headers-dir.patch - ]; - - # Uses linker flags that are not supported on Darwin. - postPatch = lib.optionalString stdenv.isDarwin '' - sed -i -e '/SET_LINUX_EXPORTS_FILE/d' CMakeLists.txt - substituteInPlace CMakeLists.txt \ - --replace '-Wl,--no-undefined' "" - ''; - - nativeBuildInputs = [ cmake git llvm.dev ]; - - buildInputs = [ libclang llvm spirv-llvm-translator ]; - - cmakeFlags = [ - "-DPREFERRED_LLVM_VERSION=${lib.getVersion llvm}" - "-DOPENCL_HEADERS_DIR=${libclang.lib}/lib/clang/${lib.getVersion libclang}/include/" - - "-DLLVMSPIRV_INCLUDED_IN_LLVM=OFF" - "-DSPIRV_TRANSLATOR_DIR=${spirv-llvm-translator}" - ]; - - inherit passthru; - - meta = with lib; { - homepage = "https://github.com/intel/opencl-clang/"; - description = "A clang wrapper library with an OpenCL-oriented API and the ability to compile OpenCL C kernels to SPIR-V modules"; - license = licenses.ncsa; - platforms = platforms.all; - maintainers = with maintainers; [ ]; - }; + version = "unstable-2023-06-12"; + src = applyPatches { + src = fetchFromGitHub { + owner = "intel"; + repo = "opencl-clang"; + # https://github.com/intel/opencl-clang/compare/ocl-open-140 + rev = "cf95b338d14685e4f3402ab1828bef31d48f1fd6"; + hash = "sha256-To1RlQX9IJ+1zAwEXaW7ua3VNfjK9mu7pgsRPsfa8g8="; }; + + patches = [ + # Build script tries to find Clang OpenCL headers under ${llvm} + # Work around it by specifying that directory manually. + ./opencl-headers-dir.patch + + # fix CMake throwing errors + (fetchpatch { + url = "https://github.com/intel/opencl-clang/commit/321e3b99c1a8d54c8475f5ae998452069cc5eb71.patch"; + hash = "sha256-cATbH+AMVtcabhl3EkzAH7w3wGreUV53hQYHVUUEP4g="; + }) + ]; + + postPatch = '' + # fix not be able to find clang from PATH + substituteInPlace cl_headers/CMakeLists.txt \ + --replace " NO_DEFAULT_PATH" "" + '' + lib.optionalString stdenv.isDarwin '' + # Uses linker flags that are not supported on Darwin. + sed -i -e '/SET_LINUX_EXPORTS_FILE/d' CMakeLists.txt + substituteInPlace CMakeLists.txt \ + --replace '-Wl,--no-undefined' "" + ''; + }; in - library + +stdenv.mkDerivation { + pname = "opencl-clang"; + inherit version src; + + nativeBuildInputs = [ cmake git llvm.dev ]; + + buildInputs = [ libclang llvm spirv-llvm-translator' ]; + + cmakeFlags = [ + "-DPREFERRED_LLVM_VERSION=${lib.getVersion llvm}" + "-DOPENCL_HEADERS_DIR=${libclang.lib}/lib/clang/${lib.getVersion libclang}/include/" + + "-DLLVMSPIRV_INCLUDED_IN_LLVM=OFF" + "-DSPIRV_TRANSLATOR_DIR=${spirv-llvm-translator'}" + ]; + + inherit passthru; + + meta = with lib; { + homepage = "https://github.com/intel/opencl-clang/"; + description = "A clang wrapper library with an OpenCL-oriented API and the ability to compile OpenCL C kernels to SPIR-V modules"; + license = licenses.ncsa; + maintainers = with maintainers; [ ]; + platforms = platforms.all; + # error: invalid value 'CL3.0' in '-cl-std=CL3.0' + broken = stdenv.isDarwin; + }; +} From eeb9587c6c0557425570fdb470e39fb15a0c2f66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Mon, 25 Sep 2023 14:30:36 +0200 Subject: [PATCH 2/2] intel-graphics-compiler: 1.0.12812.26 -> 1.0.14828.8 --- .../intel-graphics-compiler/default.nix | 42 ++++++------------- 1 file changed, 13 insertions(+), 29 deletions(-) diff --git a/pkgs/development/compilers/intel-graphics-compiler/default.nix b/pkgs/development/compilers/intel-graphics-compiler/default.nix index d2093ccb6c6..b2a5561dcf4 100644 --- a/pkgs/development/compilers/intel-graphics-compiler/default.nix +++ b/pkgs/development/compilers/intel-graphics-compiler/default.nix @@ -5,7 +5,7 @@ , runCommandLocal , bison , flex -, llvmPackages_11 +, llvmPackages_14 , opencl-clang , python3 , spirv-tools @@ -19,32 +19,29 @@ let vc_intrinsics_src = fetchFromGitHub { owner = "intel"; repo = "vc-intrinsics"; - rev = "v0.11.0"; - sha256 = "sha256-74JBW7qU8huSqwqgxNbvbGj1DlJJThgGhb3owBYmhvI="; + rev = "v0.13.0"; + hash = "sha256-A9G1PH0WGdxU2u/ODrou53qF9kvrmE0tJSl9cFIOus0="; }; - llvmPkgs = llvmPackages_11 // { - spirv-llvm-translator = spirv-llvm-translator.override { llvm = llvm; }; - } // lib.optionalAttrs buildWithPatches opencl-clang; - - inherit (llvmPackages_11) lld llvm; - inherit (llvmPkgs) clang libclang spirv-llvm-translator; + inherit (llvmPackages_14) lld llvm; + inherit (if buildWithPatches then opencl-clang else llvmPackages_14) clang libclang; + spirv-llvm-translator' = spirv-llvm-translator.override { inherit llvm; }; in stdenv.mkDerivation rec { pname = "intel-graphics-compiler"; - version = "1.0.12812.26"; + version = "1.0.14828.8"; src = fetchFromGitHub { owner = "intel"; repo = "intel-graphics-compiler"; rev = "igc-${version}"; - sha256 = "sha256-KpaDaDYVp40H7OscDGUpzEMgIOIk397ANi+8sDk4Wow="; + hash = "sha256-BGmZVBEw7XlgbQcWgRK+qbJS9U4Sm9G8g9m0GRUhmCI="; }; - nativeBuildInputs = [ cmake bison flex python3 ]; + nativeBuildInputs = [ bison cmake flex python3 ]; - buildInputs = [ spirv-headers spirv-tools spirv-llvm-translator llvm lld ]; + buildInputs = [ lld llvm spirv-headers spirv-llvm-translator' spirv-tools ]; strictDeps = true; @@ -52,15 +49,6 @@ stdenv.mkDerivation rec { doCheck = false; postPatch = '' - substituteInPlace external/SPIRV-Tools/CMakeLists.txt \ - --replace '$'''{SPIRV-Tools_DIR}../../..' \ - '${spirv-tools}' \ - --replace 'SPIRV-Headers_INCLUDE_DIR "/usr/include"' \ - 'SPIRV-Headers_INCLUDE_DIR "${spirv-headers}/include"' \ - --replace 'set_target_properties(SPIRV-Tools' \ - 'set_target_properties(SPIRV-Tools-shared' \ - --replace 'IGC_BUILD__PROJ__SPIRV-Tools SPIRV-Tools' \ - 'IGC_BUILD__PROJ__SPIRV-Tools SPIRV-Tools-shared' substituteInPlace IGC/AdaptorOCL/igc-opencl.pc.in \ --replace '/@CMAKE_INSTALL_INCLUDEDIR@' "/include" \ --replace '/@CMAKE_INSTALL_LIBDIR@' "/lib" @@ -71,24 +59,20 @@ stdenv.mkDerivation rec { prebuilds = runCommandLocal "igc-cclang-prebuilds" { } '' mkdir $out ln -s ${clang}/bin/clang $out/ - ln -s clang $out/clang-${lib.versions.major (lib.getVersion clang)} ln -s ${opencl-clang}/lib/* $out/ ln -s ${lib.getLib libclang}/lib/clang/${lib.getVersion clang}/include/opencl-c.h $out/ ln -s ${lib.getLib libclang}/lib/clang/${lib.getVersion clang}/include/opencl-c-base.h $out/ ''; cmakeFlags = [ - "-Wno-dev" "-DVC_INTRINSICS_SRC=${vc_intrinsics_src}" - "-DIGC_OPTION__SPIRV_TOOLS_MODE=Prebuilds" "-DCCLANG_BUILD_PREBUILDS=ON" "-DCCLANG_BUILD_PREBUILDS_DIR=${prebuilds}" - "-DIGC_PREFERRED_LLVM_VERSION=${lib.getVersion llvm}" + "-DIGC_OPTION__SPIRV_TOOLS_MODE=Prebuilds" + "-DIGC_OPTION__VC_INTRINSICS_MODE=Source" + "-Wno-dev" ]; - # causes redefinition of _FORTIFY_SOURCE - hardeningDisable = [ "fortify3" ]; - meta = with lib; { homepage = "https://github.com/intel/intel-graphics-compiler"; description = "LLVM-based compiler for OpenCL targeting Intel Gen graphics hardware";