157 lines
3.8 KiB
Nix
157 lines
3.8 KiB
Nix
{
|
|
stdenv,
|
|
gcc,
|
|
writeShellApplication,
|
|
wrapCCWith,
|
|
src,
|
|
version,
|
|
cmake,
|
|
pkg-config,
|
|
python3,
|
|
perl,
|
|
libz,
|
|
libxml2,
|
|
ncurses,
|
|
hwloc,
|
|
level-zero,
|
|
unified-memory-framework,
|
|
emhash,
|
|
parallel-hashmap,
|
|
spirv-headers,
|
|
opencl-headers,
|
|
ocl-icd,
|
|
intel-compute-runtime,
|
|
pins,
|
|
}:
|
|
let
|
|
root = "/build/source";
|
|
cc = wrapCCWith {
|
|
cc = writeShellApplication {
|
|
name = "clang";
|
|
text = ''
|
|
exec ${root}/build/bin/clang-22 "$@"
|
|
'';
|
|
passthru.isClang = true;
|
|
};
|
|
|
|
extraBuildCommands = ''
|
|
echo "" > $out/nix-support/add-hardening.sh
|
|
'';
|
|
|
|
nixSupport = {
|
|
cc-cflags = [
|
|
"-isystem /build/source/build/include"
|
|
"-resource-dir=/build/source/build/lib/clang/22"
|
|
"--gcc-toolchain=${gcc.cc}"
|
|
];
|
|
|
|
cc-ldflags = [
|
|
"-L/build/source/build/lib"
|
|
"-L${gcc.cc}/lib/gcc/${stdenv.targetPlatform.config}/${gcc.version}"
|
|
"-L${gcc.cc.lib}/lib"
|
|
];
|
|
};
|
|
};
|
|
in
|
|
stdenv.mkDerivation {
|
|
inherit src version;
|
|
pname = "intel-llvm";
|
|
|
|
NIX_CFLAGS_COMPILE = [ "-Wno-unused-command-line-argument" ];
|
|
|
|
patches = [ ./gnu-install-dirs.patch ];
|
|
|
|
outputs = [
|
|
"out"
|
|
"lib"
|
|
"dev"
|
|
"rsrc"
|
|
"python"
|
|
];
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
pkg-config
|
|
python3
|
|
perl
|
|
];
|
|
|
|
buildInputs = [
|
|
libz
|
|
libxml2
|
|
ncurses
|
|
hwloc
|
|
unified-memory-framework
|
|
emhash
|
|
parallel-hashmap
|
|
level-zero
|
|
opencl-headers
|
|
ocl-icd
|
|
];
|
|
|
|
cmakeBuildType = "Release";
|
|
cmakeDir = "../llvm";
|
|
|
|
cmakeFlags = [
|
|
"-DCMAKE_BUILD_TYPE=Release"
|
|
"-DLLVM_TARGETS_TO_BUILD=Native"
|
|
"-DLLVM_INSTALL_UTILS=ON"
|
|
"-DLLVM_ENABLE_ZSTD=ON"
|
|
"-DLLVM_USE_STATIC_ZSTD=ON"
|
|
"-DLLVM_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/llvm"
|
|
"-DLLVM_INCLUDE_TESTS=OFF"
|
|
"-DLLVM_BUILD_TESTS=OFF"
|
|
"-DLLVM_ENABLE_ASSERTIONS=OFF"
|
|
"-DLLVM_ENABLE_DOXYGEN=OFF"
|
|
"-DLLVM_ENABLE_SPHINX=OFF"
|
|
"-DLLVM_EXTERNAL_PROJECTS=sycl;sycl-jit;llvm-spirv;opencl;xpti;xptifw;libdevice"
|
|
"-DLLVM_EXTERNAL_SYCL_SOURCE_DIR=/build/source/sycl"
|
|
"-DLLVM_EXTERNAL_SYCL_JIT_SOURCE_DIR=/build/source/sycl-jit"
|
|
"-DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR=/build/source/llvm-spirv"
|
|
"-DLLVM_EXTERNAL_XPTI_SOURCE_DIR=/build/source/xpti"
|
|
"-DLLVM_EXTERNAL_XPTIFW_SOURCE_DIR=/build/source/xptifw"
|
|
"-DLLVM_EXTERNAL_LIBDEVICE_SOURCE_DIR=/build/source/libdevice"
|
|
"-DLLVM_ENABLE_PROJECTS=clang;clang-tools-extra;sycl;sycl-jit;llvm-spirv;opencl;xpti;xptifw;libdevice"
|
|
"-DSYCL_ENABLE_XPTI_TRACING=ON"
|
|
"-DSYCL_COMPILER_VERSION=20260101"
|
|
"-DCLANG_RESOURCE_DIR=../lib/clang/22"
|
|
"-DFETCHCONTENT_SOURCE_DIR_VC-INTRINSICS=${pins.vc-intrinsics}"
|
|
"-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=${spirv-headers}"
|
|
"-DUR_USE_EXTERNAL_UMF=ON"
|
|
"-DL0_COMPUTE_RUNTIME_HEADERS=${intel-compute-runtime.src}/level_zero/include"
|
|
];
|
|
|
|
postPatch = ''
|
|
substituteInPlace libdevice/cmake/modules/SYCLLibdevice.cmake \
|
|
--replace-fail "\''${clang_exe}" "${cc}/bin/clang"
|
|
|
|
substituteInPlace unified-runtime/cmake/FetchOpenCL.cmake \
|
|
--replace-fail "NO_CMAKE_PACKAGE_REGISTRY" ""
|
|
'';
|
|
|
|
postInstall = ''
|
|
mkdir -p $python/share
|
|
mv $out/share/opt-viewer $python/share/opt-viewer
|
|
|
|
moveToOutput "bin/llvm-config*" "$dev"
|
|
|
|
substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-release.cmake" \
|
|
--replace-fail "$out/bin/llvm-config" "$dev/bin/llvm-config"
|
|
|
|
substituteInPlace "$dev/lib/cmake/llvm/LLVMExports.cmake" \
|
|
--replace-fail "\''${_IMPORT_PREFIX}/include" "$dev/include"
|
|
|
|
substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \
|
|
--replace-fail 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' "set(LLVM_BINARY_DIR \"$lib\")"
|
|
'';
|
|
|
|
postFixup = ''
|
|
mkdir -p $rsrc
|
|
mv $out/lib/clang/22/include $rsrc/include
|
|
rm -rf $out/lib/clang
|
|
'';
|
|
|
|
passthru.isLLVM = true;
|
|
passthru.isClang = true;
|
|
}
|