mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-01 10:34:16 +00:00
1d35ac84ee
Co-authored-by: Sandro <sandro.jaeckel@gmail.com> Kim Lindberger <kim.lindberger@gmail.com>
101 lines
2.6 KiB
Nix
101 lines
2.6 KiB
Nix
{ stdenv
|
|
, lib
|
|
, fetchFromGitHub
|
|
, blas
|
|
, boost
|
|
, cmake
|
|
, gfortran
|
|
, lapack
|
|
, mpi
|
|
, suitesparse
|
|
, swig
|
|
, withMPI ? false
|
|
}:
|
|
|
|
# NOTE: Not all packages are enabled. We specifically enable the ones
|
|
# required to build Xyce. If the need comes, we can enable more of them.
|
|
|
|
let
|
|
flagsBase = ''
|
|
-G "Unix Makefiles"
|
|
-DBUILD_SHARED_LIBS=ON
|
|
-DCMAKE_CXX_FLAGS="-O3 -fPIC"
|
|
-DCMAKE_C_FLAGS="-O3 -fPIC"
|
|
-DCMAKE_Fortran_FLAGS="-O3 -fPIC"
|
|
-DTrilinos_ENABLE_NOX=ON
|
|
-DNOX_ENABLE_LOCA=ON
|
|
-DTrilinos_ENABLE_EpetraExt=ON
|
|
-DEpetraExt_BUILD_BTF=ON
|
|
-DEpetraExt_BUILD_EXPERIMENTAL=ON
|
|
-DEpetraExt_BUILD_GRAPH_REORDERINGS=ON
|
|
-DTrilinos_ENABLE_TrilinosCouplings=ON
|
|
-DTrilinos_ENABLE_Ifpack=ON
|
|
-DTrilinos_ENABLE_AztecOO=ON
|
|
-DTrilinos_ENABLE_Belos=ON
|
|
-DTrilinos_ENABLE_Teuchos=ON
|
|
-DTeuchos_ENABLE_COMPLEX=ON
|
|
-DTrilinos_ENABLE_Amesos=ON
|
|
-DAmesos_ENABLE_KLU=ON
|
|
-DTrilinos_ENABLE_Amesos2=ON
|
|
-DAmesos2_ENABLE_KLU2=ON
|
|
-DAmesos2_ENABLE_Basker=ON
|
|
-DTrilinos_ENABLE_Sacado=ON
|
|
-DTrilinos_ENABLE_Stokhos=ON
|
|
-DTrilinos_ENABLE_Kokkos=ON
|
|
-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF
|
|
-DTrilinos_ENABLE_CXX11=ON
|
|
-DTPL_ENABLE_AMD=ON
|
|
-DTPL_ENABLE_BLAS=ON
|
|
-DTPL_ENABLE_LAPACK=ON
|
|
'';
|
|
flagsParallel = ''
|
|
-DCMAKE_C_COMPILER=mpicc
|
|
-DCMAKE_CXX_COMPILER=mpic++
|
|
-DCMAKE_Fortran_COMPILER=mpif77
|
|
-DTrilinos_ENABLE_Isorropia=ON
|
|
-DTrilinos_ENABLE_Zoltan=ON
|
|
-DTPL_ENABLE_MPI=ON
|
|
'';
|
|
in
|
|
stdenv.mkDerivation rec {
|
|
pname = "trilinos";
|
|
version = "12.12.1"; # Xyce 7.4 requires version 12.12.1
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "trilinos";
|
|
repo = "Trilinos";
|
|
rev = "${pname}-release-${lib.replaceStrings [ "." ] [ "-" ] version}";
|
|
sha256 = "sha256-Nqjr7RAlUHm6vs87a1P84Y7BIZEL0Vs/A1Z6dykfv+o=";
|
|
};
|
|
|
|
nativeBuildInputs = [ cmake gfortran swig ];
|
|
|
|
buildInputs = [ blas boost lapack suitesparse ] ++ lib.optionals withMPI [ mpi ];
|
|
|
|
preConfigure =
|
|
if withMPI then ''
|
|
cmakeFlagsArray+=(${flagsBase} ${flagsParallel})
|
|
''
|
|
else ''
|
|
cmakeFlagsArray+=(${flagsBase})
|
|
'';
|
|
|
|
passthru = {
|
|
inherit withMPI;
|
|
};
|
|
|
|
meta = with lib; {
|
|
description = "Engineering and scientific problems algorithms";
|
|
longDescription = ''
|
|
The Trilinos Project is an effort to develop algorithms and enabling
|
|
technologies within an object-oriented software framework for the
|
|
solution of large-scale, complex multi-physics engineering and scientific
|
|
problems.
|
|
'';
|
|
homepage = "https://trilinos.org";
|
|
license = licenses.bsd3;
|
|
maintainers = with maintainers; [ fbeffa ];
|
|
platforms = platforms.all;
|
|
};
|
|
}
|