at 23.05-pre 100 lines 3.2 kB view raw
1{ lib 2, stdenv 3, fetchFromGitHub 4, cmake 5, runCommandLocal 6, bison 7, flex 8, llvmPackages_11 9, lld_11 10, opencl-clang 11, python3 12, spirv-tools 13, spirv-headers 14, spirv-llvm-translator 15 16, buildWithPatches ? true 17}: 18 19let 20 vc_intrinsics_src = fetchFromGitHub { 21 owner = "intel"; 22 repo = "vc-intrinsics"; 23 rev = "v0.3.0"; 24 sha256 = "sha256-1Rm4TCERTOcPGWJF+yNoKeB9x3jfqnh7Vlv+0Xpmjbk="; 25 }; 26 llvmPkgs = llvmPackages_11 // { 27 inherit spirv-llvm-translator; 28 }; 29 inherit (llvmPkgs) llvm; 30 inherit (if buildWithPatches then opencl-clang else llvmPkgs) clang libclang spirv-llvm-translator; 31 inherit (lib) getVersion optional optionals versionOlder versions; 32in 33 34stdenv.mkDerivation rec { 35 pname = "intel-graphics-compiler"; 36 version = "1.0.11061"; 37 38 src = fetchFromGitHub { 39 owner = "intel"; 40 repo = "intel-graphics-compiler"; 41 rev = "igc-${version}"; 42 sha256 = "sha256-qS/+GTqHtp3T6ggPKrCDsrTb7XvVOUaNbMzGU51jTu4="; 43 }; 44 45 nativeBuildInputs = [ clang cmake bison flex python3 ]; 46 47 buildInputs = [ spirv-headers spirv-tools clang opencl-clang spirv-llvm-translator llvm lld_11 ]; 48 49 strictDeps = true; 50 51 # checkInputs = [ lit pythonPackages.nose ]; 52 53 # FIXME: How do we run the test suite? 54 # https://github.com/intel/intel-graphics-compiler/issues/98 55 doCheck = false; 56 57 postPatch = '' 58 substituteInPlace ./external/SPIRV-Tools/CMakeLists.txt \ 59 --replace '$'''{SPIRV-Tools_DIR}../../..' \ 60 '${spirv-tools}' \ 61 --replace 'SPIRV-Headers_INCLUDE_DIR "/usr/include"' \ 62 'SPIRV-Headers_INCLUDE_DIR "${spirv-headers}/include"' \ 63 --replace 'set_target_properties(SPIRV-Tools' \ 64 'set_target_properties(SPIRV-Tools-shared' \ 65 --replace 'IGC_BUILD__PROJ__SPIRV-Tools SPIRV-Tools' \ 66 'IGC_BUILD__PROJ__SPIRV-Tools SPIRV-Tools-shared' 67 substituteInPlace ./IGC/AdaptorOCL/igc-opencl.pc.in \ 68 --replace '/@CMAKE_INSTALL_INCLUDEDIR@' "/include" \ 69 --replace '/@CMAKE_INSTALL_LIBDIR@' "/lib" 70 ''; 71 72 # Handholding the braindead build script 73 # cmake requires an absolute path 74 prebuilds = runCommandLocal "igc-cclang-prebuilds" { } '' 75 mkdir $out 76 ln -s ${clang}/bin/clang $out/ 77 ln -s clang $out/clang-${versions.major (getVersion clang)} 78 ln -s ${opencl-clang}/lib/* $out/ 79 ln -s ${lib.getLib libclang}/lib/clang/${getVersion clang}/include/opencl-c.h $out/ 80 ln -s ${lib.getLib libclang}/lib/clang/${getVersion clang}/include/opencl-c-base.h $out/ 81 ''; 82 83 cmakeFlags = [ 84 "-Wno-dev" 85 "-DVC_INTRINSICS_SRC=${vc_intrinsics_src}" 86 "-DIGC_OPTION__SPIRV_TOOLS_MODE=Prebuilds" 87 "-DCCLANG_BUILD_PREBUILDS=ON" 88 "-DCCLANG_BUILD_PREBUILDS_DIR=${prebuilds}" 89 "-DIGC_PREFERRED_LLVM_VERSION=${getVersion llvm}" 90 ]; 91 92 meta = with lib; { 93 homepage = "https://github.com/intel/intel-graphics-compiler"; 94 description = "LLVM-based compiler for OpenCL targeting Intel Gen graphics hardware"; 95 license = licenses.mit; 96 platforms = platforms.all; 97 maintainers = with maintainers; [ gloaming ]; 98 broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/intel-graphics-compiler.x86_64-darwin 99 }; 100}