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" ];
|
|
|
|
}
|