forked from rarias/jungle
Refactor intel-oneapi into deb and open subfolders
This commit is contained in:
71
pkgs/intel-oneapi/common/wrapper.nix
Normal file
71
pkgs/intel-oneapi/common/wrapper.nix
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
gcc,
|
||||
libgcc,
|
||||
wrapCCWith,
|
||||
}:
|
||||
|
||||
{
|
||||
cc,
|
||||
extraPath ? lib.makeBinPath (
|
||||
[ gcc.cc ] ++ (lib.optionals (cc.enableCuda or false) [ cc.cudaPackages.cudatoolkit ])
|
||||
),
|
||||
extraBuildCommands ? "",
|
||||
extraInstallCommands ? "",
|
||||
}:
|
||||
|
||||
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.original or cc}/lib/clang/${toString cc.llvmMajorVersion}/include"
|
||||
"-isystem ${cc}/include"
|
||||
"-isystem ${cc}/include/intel64"
|
||||
"-isystem ${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}/include"
|
||||
];
|
||||
libcxx-cxxflags = [
|
||||
"-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="${extraPath}:$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
|
||||
''
|
||||
+ extraBuildCommands;
|
||||
}).overrideAttrs
|
||||
(old: {
|
||||
installPhase = old.installPhase + extraInstallCommands;
|
||||
})
|
||||
Reference in New Issue
Block a user