forked from rarias/jungle
201 lines
5.0 KiB
Nix
201 lines
5.0 KiB
Nix
{
|
|
stdenv,
|
|
lib,
|
|
ninja,
|
|
addDriverRunpath,
|
|
cmake,
|
|
emhash,
|
|
fetchFromGitHub,
|
|
khronos-ocl-icd-loader,
|
|
libbacktrace,
|
|
opencl-headers,
|
|
parallel-hashmap,
|
|
perl,
|
|
pkg-config,
|
|
python3,
|
|
spirv-headers,
|
|
spirv-tools,
|
|
symlinkJoin,
|
|
zlib,
|
|
|
|
cudaPackages,
|
|
enableCuda ? true,
|
|
}:
|
|
|
|
let
|
|
version = "6.2.1";
|
|
src = fetchFromGitHub {
|
|
owner = "intel";
|
|
repo = "llvm";
|
|
tag = "v${version}";
|
|
sha256 = "sha256-j8+DmGKO0qDF5JjH+DlkLKs1kBz6dS7ukwySd/Crqv0=";
|
|
};
|
|
|
|
pinned = {
|
|
inherit parallel-hashmap;
|
|
|
|
vc-intrinsics.src = fetchFromGitHub {
|
|
owner = "intel";
|
|
repo = "vc-intrinsics";
|
|
rev = "4e51b2467104a257c22788e343dafbdde72e28bb";
|
|
sha256 = "sha256-AHXeKbih4bzmcuu+tx2TeS7Ixmk54uS1vKFVxI6ZP8g=";
|
|
};
|
|
|
|
unified-memory-framework.src = fetchFromGitHub {
|
|
owner = "oneapi-src";
|
|
repo = "unified-memory-framework";
|
|
tag = "v0.11.0";
|
|
sha256 = "sha256-k8QdP2u1QOoeCZ6ps4sM8+1iZq/H3q0lqCfVk8mz9KI=";
|
|
};
|
|
|
|
ocl-headers = opencl-headers.overrideAttrs {
|
|
version = "2024.10.24";
|
|
src = fetchFromGitHub {
|
|
owner = "KhronosGroup";
|
|
repo = "OpenCL-Headers";
|
|
tag = "v2024.10.24";
|
|
sha256 = "sha256-KDlruE0IG8d+lAChxYyc6dg5XOvqCMrMyO69sdAzejA=";
|
|
};
|
|
};
|
|
|
|
ocl-icd = khronos-ocl-icd-loader;
|
|
|
|
spirv-headers = spirv-headers.overrideAttrs {
|
|
version = "1.4.309.0";
|
|
src = fetchFromGitHub {
|
|
owner = "KhronosGroup";
|
|
repo = "SPIRV-Headers";
|
|
tag = "vulkan-sdk-1.4.309.0";
|
|
sha256 = "sha256-Q1i6i5XimULuGufP6mimwDW674anAETUiIEvDQwvg5Y=";
|
|
};
|
|
};
|
|
};
|
|
|
|
fetchcontent_cmakeFlags = lib.mapAttrsToList (
|
|
name: value: (lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_${lib.toUpper name}" (toString value.src))
|
|
) pinned;
|
|
|
|
# Hack to fix #include <emhash/...>
|
|
emhash' = symlinkJoin {
|
|
name = "emhash";
|
|
paths = [ emhash ];
|
|
postBuild = ''
|
|
pushd $out/include
|
|
ln -s . emhash
|
|
popd
|
|
'';
|
|
};
|
|
|
|
in
|
|
stdenv.mkDerivation {
|
|
pname = "intel-llvm";
|
|
inherit src version;
|
|
|
|
enableParallelBuilding = true;
|
|
strictDeps = true;
|
|
|
|
nativeBuildInputs = [
|
|
perl
|
|
cmake
|
|
ninja
|
|
pkg-config
|
|
python3
|
|
spirv-tools
|
|
addDriverRunpath
|
|
]
|
|
++ lib.optionals enableCuda [
|
|
cudaPackages.cuda_nvcc
|
|
];
|
|
|
|
buildInputs = [
|
|
emhash'
|
|
libbacktrace
|
|
zlib
|
|
|
|
pinned.ocl-icd
|
|
pinned.ocl-headers
|
|
pinned.spirv-headers
|
|
]
|
|
++ lib.optionals enableCuda [
|
|
cudaPackages.cudatoolkit
|
|
];
|
|
|
|
patches = [ ./fix-ur.patch ]; # Has been fixed in next release
|
|
|
|
preBuild = ''
|
|
chmod -R u+w /build/source
|
|
'';
|
|
|
|
cmakeDir = "../llvm";
|
|
|
|
cmakeFlags =
|
|
let
|
|
cmakeList = name: l: lib.cmakeOptionType "list" name (builtins.concatStringsSep ";" l);
|
|
|
|
LLVM_EXTERNAL_PROJECTS = [
|
|
"sycl"
|
|
"llvm-spirv"
|
|
"opencl"
|
|
"xpti"
|
|
"xptifw"
|
|
"compiler-rt"
|
|
"sycl-jit"
|
|
]
|
|
++ lib.optionals enableCuda [
|
|
"libclc"
|
|
];
|
|
in
|
|
[
|
|
(lib.cmakeBool "LLVM_ENABLE_ASSERTIONS" true)
|
|
|
|
(cmakeList "LLVM_TARGETS_TO_BUILD" (
|
|
[
|
|
"host"
|
|
"SPIRV"
|
|
]
|
|
++ lib.optionals enableCuda [ "NVPTX" ]
|
|
))
|
|
(cmakeList "LLVM_EXTERNAL_PROJECTS" LLVM_EXTERNAL_PROJECTS)
|
|
(cmakeList "LLVM_ENABLE_PROJECTS" ([ "clang" ] ++ LLVM_EXTERNAL_PROJECTS))
|
|
|
|
(lib.cmakeBool "UR_USE_EXTERNAL_UMF" false)
|
|
(lib.cmakeOptionType "path" "UR_OPENCL_INCLUDE_DIR" (toString pinned.ocl-headers))
|
|
(lib.cmakeOptionType "path" "UR_OPENCL_ICD_LOADER_LIBRARY" (toString pinned.ocl-icd))
|
|
(lib.cmakeFeature "UR_OPENCL_ICD_LOADER_LIBRARY" (toString pinned.ocl-icd))
|
|
|
|
(lib.cmakeBool "BUILD_SHARED_LIBS" false)
|
|
(lib.cmakeBool "LLVM_BUILD_TOOLS" true)
|
|
(lib.cmakeBool "LLVM_ENABLE_ZSTD" true)
|
|
(lib.cmakeBool "LLVM_USE_STATIC_ZSTD" true)
|
|
(lib.cmakeBool "LLVM_ENABLE_DOXYGEN" false)
|
|
(lib.cmakeBool "LLVM_ENABLE_LLD" false)
|
|
(lib.cmakeBool "LLVM_ENABLE_SPHINX" false)
|
|
(lib.cmakeBool "LLVM_SPIRV_ENABLE_LIBSPIRV_DIS" false)
|
|
(lib.cmakeBool "SYCL_ENABLE_WERROR" false)
|
|
(lib.cmakeBool "SYCL_INCLUDE_TESTS" false)
|
|
(lib.cmakeBool "SYCL_ENABLE_EXTENSION_JIT" true)
|
|
(lib.cmakeBool "SYCL_ENABLE_MAJOR_RELEASE_PREVIEW_LIB" false)
|
|
(lib.cmakeBool "SYCL_ENABLE_XPTI_TRACING" true)
|
|
(lib.cmakeBool "XPTI_ENABLE_WERROR" false)
|
|
|
|
(cmakeList "SYCL_ENABLE_BACKENDS" ([ "opencl" ] ++ lib.optionals enableCuda [ "cuda" ]))
|
|
]
|
|
++ fetchcontent_cmakeFlags
|
|
++ lib.optionals enableCuda [
|
|
(lib.cmakeOptionType "list" "LIBCLC_TARGETS_TO_BUILD" "nvptx64--nvidiacl")
|
|
(lib.cmakeBool "LIBCLC_GENERATE_REMANGLED_VARIANTS" true)
|
|
(lib.cmakeBool "LIBCLC_NATIVECPU_HOST_TARGET" false)
|
|
];
|
|
|
|
meta = {
|
|
homepage = "https://github.com/intel/llvm";
|
|
description = "Intel staging area for llvm.org contribution";
|
|
maintainers = with lib.maintainers.bsc; [ abonerib ];
|
|
platforms = lib.platforms.linux;
|
|
license = [
|
|
lib.licenses.asl20
|
|
lib.licenses.llvm-exception
|
|
];
|
|
};
|
|
}
|