nixos/local/pkgs/vasp/hdf5-aocc/default.nix

47 lines
1.2 KiB
Nix
Raw Normal View History

2024-03-14 11:12:50 +08:00
{
buildFHSEnv, writeScript, stdenvNoCC,
src,
2024-03-15 19:25:27 +08:00
aocc, cmake, openmpi, zlib, gcc, glibc, binutils, pkg-config
2024-03-14 11:12:50 +08:00
}:
let
buildEnv = buildFHSEnv
{
name = "buildEnv";
2024-03-15 19:25:27 +08:00
targetPkgs = _: [ zlib aocc gcc.cc.lib.lib glibc.dev binutils.bintools openmpi pkg-config ];
2024-03-14 11:12:50 +08:00
extraBwrapArgs = [ "--bind" "$out" "$out" ];
};
buildScript = writeScript "build"
''
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$out -DHDF5_INSTALL_CMAKE_DIR=$out/lib/cmake \
2024-03-15 19:25:27 +08:00
-DHDF5_BUILD_FORTRAN=ON -DHDF5_ENABLE_PARALLEL=ON ..
2024-03-14 11:12:50 +08:00
make -j$NIX_BUILD_CORES
make install
'';
in stdenvNoCC.mkDerivation
{
name = "hdf5-aocc";
inherit src;
dontConfigure = true;
enableParallelBuilding = true;
nativeBuildInputs = [ cmake ];
CC = "clang";
CXX = "clang++";
FC = "flang";
OMPI_CC = "clang";
OMPI_CXX = "clang++";
OMPI_FC = "flang";
2024-03-15 19:25:27 +08:00
CFLAGS = "-march=${stdenvNoCC.hostPlatform.gcc.arch} -O2";
CXXFLAGS = "-march=${stdenvNoCC.hostPlatform.gcc.arch} -O2";
FCFLAGS = "-march=${stdenvNoCC.hostPlatform.gcc.arch} -O2";
2024-03-14 11:12:50 +08:00
buildPhase =
''
mkdir -p $out
${buildEnv}/bin/buildEnv ${buildScript}
'';
dontInstall = true;
dontFixup = true;
requiredSystemFeatures = [ "gccarch-exact-${stdenvNoCC.hostPlatform.gcc.arch}" "big-parallel" ];
}