|
|
|
@ -9,12 +9,14 @@
|
|
|
|
, ompss2rt ? null
|
|
|
|
, ompss2rt ? null
|
|
|
|
}:
|
|
|
|
}:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
with lib;
|
|
|
|
|
|
|
|
|
|
|
|
let
|
|
|
|
let
|
|
|
|
usingNodesAndOmpv = (openmp.pname == "openmp-v" && ompss2rt.pname == "nodes");
|
|
|
|
usingNodesAndOmpv = (openmp.pname == "openmp-v" && ompss2rt.pname == "nodes");
|
|
|
|
sameNosv = openmp.nosv == ompss2rt.nosv;
|
|
|
|
sameNosv = openmp.nosv == ompss2rt.nosv;
|
|
|
|
in
|
|
|
|
in
|
|
|
|
|
|
|
|
|
|
|
|
assert lib.assertMsg (usingNodesAndOmpv -> sameNosv) "OpenMP-V and NODES must share the same nOS-V";
|
|
|
|
assert assertMsg (usingNodesAndOmpv -> sameNosv) "OpenMP-V and NODES must share the same nOS-V";
|
|
|
|
|
|
|
|
|
|
|
|
let
|
|
|
|
let
|
|
|
|
homevar = if ompss2rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME";
|
|
|
|
homevar = if ompss2rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME";
|
|
|
|
@ -34,14 +36,15 @@ let
|
|
|
|
targetConfig = stdenv.targetPlatform.config;
|
|
|
|
targetConfig = stdenv.targetPlatform.config;
|
|
|
|
inherit gcc;
|
|
|
|
inherit gcc;
|
|
|
|
cc = clangOmpss2Unwrapped;
|
|
|
|
cc = clangOmpss2Unwrapped;
|
|
|
|
|
|
|
|
gccVersion = with versions; let v = gcc.version; in concatStringsSep "." [(major v) (minor v) (patch v)];
|
|
|
|
in wrapCCWith {
|
|
|
|
in wrapCCWith {
|
|
|
|
inherit cc bintools;
|
|
|
|
inherit cc bintools;
|
|
|
|
# extraPackages adds packages to depsTargetTargetPropagated
|
|
|
|
# extraPackages adds packages to depsTargetTargetPropagated
|
|
|
|
extraPackages = lib.optional (openmp != null) openmp;
|
|
|
|
extraPackages = optional (openmp != null) openmp;
|
|
|
|
extraBuildCommands = ''
|
|
|
|
extraBuildCommands = ''
|
|
|
|
echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags
|
|
|
|
echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags
|
|
|
|
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags
|
|
|
|
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-cflags
|
|
|
|
echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags
|
|
|
|
echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-ldflags
|
|
|
|
echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags
|
|
|
|
echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags
|
|
|
|
|
|
|
|
|
|
|
|
for dir in ${gcc.cc}/include/c++/*; do
|
|
|
|
for dir in ${gcc.cc}/include/c++/*; do
|
|
|
|
@ -55,12 +58,12 @@ in wrapCCWith {
|
|
|
|
|
|
|
|
|
|
|
|
wrap clang++ $wrapper $ccPath/clang++
|
|
|
|
wrap clang++ $wrapper $ccPath/clang++
|
|
|
|
|
|
|
|
|
|
|
|
'' + lib.optionalString (openmp != null) ''
|
|
|
|
'' + optionalString (openmp != null) ''
|
|
|
|
echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook
|
|
|
|
echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook
|
|
|
|
'' + lib.optionalString (ompss2rt != null) ''
|
|
|
|
'' + optionalString (ompss2rt != null) ''
|
|
|
|
echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook
|
|
|
|
echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook
|
|
|
|
echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook
|
|
|
|
echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook
|
|
|
|
'' + lib.optionalString (ompss2rt != null && ompss2rt.pname == "nodes") ''
|
|
|
|
'' + optionalString (ompss2rt != null && ompss2rt.pname == "nodes") ''
|
|
|
|
echo "export NOSV_HOME=${ompss2rt.nosv}" >> $out/nix-support/cc-wrapper-hook
|
|
|
|
echo "export NOSV_HOME=${ompss2rt.nosv}" >> $out/nix-support/cc-wrapper-hook
|
|
|
|
'';
|
|
|
|
'';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|