Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib 2, stdenv 3, fetchFromGitHub 4, cmake 5, runCommandLocal 6, bison 7, flex 8, llvmPackages_11 9, opencl-clang 10, python3 11, spirv-tools 12, spirv-headers 13, spirv-llvm-translator 14 15, buildWithPatches ? true 16}: 17 18let 19 vc_intrinsics_src = fetchFromGitHub { 20 owner = "intel"; 21 repo = "vc-intrinsics"; 22 rev = "v0.11.0"; 23 sha256 = "sha256-74JBW7qU8huSqwqgxNbvbGj1DlJJThgGhb3owBYmhvI="; 24 }; 25 26 llvmPkgs = llvmPackages_11 // { 27 spirv-llvm-translator = spirv-llvm-translator.override { llvm = llvm; }; 28 } // lib.optionalAttrs buildWithPatches opencl-clang; 29 30 inherit (llvmPackages_11) lld llvm; 31 inherit (llvmPkgs) clang libclang spirv-llvm-translator; 32in 33 34stdenv.mkDerivation rec { 35 pname = "intel-graphics-compiler"; 36 version = "1.0.12812.26"; 37 38 src = fetchFromGitHub { 39 owner = "intel"; 40 repo = "intel-graphics-compiler"; 41 rev = "igc-${version}"; 42 sha256 = "sha256-KpaDaDYVp40H7OscDGUpzEMgIOIk397ANi+8sDk4Wow="; 43 }; 44 45 nativeBuildInputs = [ cmake bison flex python3 ]; 46 47 buildInputs = [ spirv-headers spirv-tools spirv-llvm-translator llvm lld ]; 48 49 strictDeps = true; 50 51 # testing is done via intel-compute-runtime 52 doCheck = false; 53 54 postPatch = '' 55 substituteInPlace external/SPIRV-Tools/CMakeLists.txt \ 56 --replace '$'''{SPIRV-Tools_DIR}../../..' \ 57 '${spirv-tools}' \ 58 --replace 'SPIRV-Headers_INCLUDE_DIR "/usr/include"' \ 59 'SPIRV-Headers_INCLUDE_DIR "${spirv-headers}/include"' \ 60 --replace 'set_target_properties(SPIRV-Tools' \ 61 'set_target_properties(SPIRV-Tools-shared' \ 62 --replace 'IGC_BUILD__PROJ__SPIRV-Tools SPIRV-Tools' \ 63 'IGC_BUILD__PROJ__SPIRV-Tools SPIRV-Tools-shared' 64 substituteInPlace IGC/AdaptorOCL/igc-opencl.pc.in \ 65 --replace '/@CMAKE_INSTALL_INCLUDEDIR@' "/include" \ 66 --replace '/@CMAKE_INSTALL_LIBDIR@' "/lib" 67 ''; 68 69 # Handholding the braindead build script 70 # cmake requires an absolute path 71 prebuilds = runCommandLocal "igc-cclang-prebuilds" { } '' 72 mkdir $out 73 ln -s ${clang}/bin/clang $out/ 74 ln -s clang $out/clang-${lib.versions.major (lib.getVersion clang)} 75 ln -s ${opencl-clang}/lib/* $out/ 76 ln -s ${lib.getLib libclang}/lib/clang/${lib.getVersion clang}/include/opencl-c.h $out/ 77 ln -s ${lib.getLib libclang}/lib/clang/${lib.getVersion clang}/include/opencl-c-base.h $out/ 78 ''; 79 80 cmakeFlags = [ 81 "-Wno-dev" 82 "-DVC_INTRINSICS_SRC=${vc_intrinsics_src}" 83 "-DIGC_OPTION__SPIRV_TOOLS_MODE=Prebuilds" 84 "-DCCLANG_BUILD_PREBUILDS=ON" 85 "-DCCLANG_BUILD_PREBUILDS_DIR=${prebuilds}" 86 "-DIGC_PREFERRED_LLVM_VERSION=${lib.getVersion llvm}" 87 ]; 88 89 meta = with lib; { 90 homepage = "https://github.com/intel/intel-graphics-compiler"; 91 description = "LLVM-based compiler for OpenCL targeting Intel Gen graphics hardware"; 92 license = licenses.mit; 93 platforms = platforms.linux; 94 maintainers = with maintainers; [ SuperSandro2000 ]; 95 }; 96}