From 4ff540c4c8121f00ba9a78a3620973d58cb3ec2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Fri, 13 Mar 2026 11:09:35 +0100 Subject: [PATCH] Wrap llvm-intel --- overlay.nix | 3 +- pkgs/llvm-intel/wrapped.nix | 64 +++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 pkgs/llvm-intel/wrapped.nix diff --git a/overlay.nix b/overlay.nix index 2e092251..862448e2 100644 --- a/overlay.nix +++ b/overlay.nix @@ -34,7 +34,8 @@ let linuxPackages_latest = prev.linuxPackages_latest.extend(_final: _prev: { amd-uprof-driver = _prev.callPackage ./pkgs/amd-uprof/driver.nix { }; }); - llvm-intel = callPackage ./pkgs/llvm-intel/default.nix { }; + llvm-intel-unwrapped = callPackage ./pkgs/llvm-intel/default.nix { }; + llvm-intel = callPackage ./pkgs/llvm-intel/wrapped.nix { }; lmbench = callPackage ./pkgs/lmbench/default.nix { }; # Broken and unmantained # mcxx = callPackage ./pkgs/mcxx/default.nix { }; diff --git a/pkgs/llvm-intel/wrapped.nix b/pkgs/llvm-intel/wrapped.nix new file mode 100644 index 00000000..026a8076 --- /dev/null +++ b/pkgs/llvm-intel/wrapped.nix @@ -0,0 +1,64 @@ +{ + stdenv, + wrapCCWith, + llvm-intel-unwrapped, + gcc, + libgcc, +}: + +let + wrapIntel = + cc: + let + targetConfig = stdenv.targetPlatform.config; + in + wrapCCWith { + inherit cc; + + nixSupport = { + cc-ldflags = [ + "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" + "-L${gcc.cc.lib}/lib" + "-L${libgcc.out}/lib" + "-L${gcc.libc}/lib" + "-L${cc}/lib" + ]; + cc-cflags = [ + "--gcc-toolchain=${gcc.cc}" + "-isystem ${cc}/lib/clang/${cc.llvmMajorVersion}/include" + "-isystem ${cc}/include" + "-isystem ${cc}/include/intel64" + "-isystem ${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}/include" + ]; + libcxx-cxxflags = [ + # "--gcc-toolchain=${gcc.cc}" + "-isystem ${gcc.cc}/include/c++/${gcc.version}" + "-isystem ${gcc.cc}/include/c++/${gcc.version}/${targetConfig}" + ]; + }; + + extraBuildCommands = '' + # FIXME: We should find a better way to modify the PATH instead of using + # this ugly hack. See https://jungle.bsc.es/git/rarias/bscpkgs/issues/9 + echo 'path_backup="${gcc.cc}/bin:$path_backup"' >>$out/nix-support/cc-wrapper-hook + + # Disable hardening by default + echo "" > $out/nix-support/add-hardening.sh + + pushd $ccPath + for i in $ {llvm,sycl}-* ; do + ln -s $ccPath/$i $out/bin/$i + done + popd + + # Use this to detect when a compiler subprocess is called + # from icpx (--fsycl-host-compiler) + echo 'export NIX_CC_WRAPPER_INTEL=1' >>$out/nix-support/cc-wrapper-hook + + # oneMath looks for sycl libraries in bin/../lib + ln -s ${cc}/lib $out/lib + ln -s ${cc}/include $out/include + ''; + }; +in +wrapIntel llvm-intel-unwrapped