1{ lib, stdenv, fetchFromGitHub, cmake, boost, eigen, libxml2, mpi, python3
2, mklSupport ? true, mkl
3, substituteAll
4}:
5
6stdenv.mkDerivation rec {
7 pname = "FEBio";
8 version = "3.6";
9
10 src = fetchFromGitHub {
11 owner = "febiosoftware";
12 repo = pname;
13 rev = "v${version}";
14 sha256 = "187s4lyzr806xla3smq3lsvj3f6wxlhfkban89w0fnyfmfb8w9am";
15 };
16
17 patches = [
18 (substituteAll {
19 src = ./fix-cmake.patch; # cannot find mkl libraries without this
20 so = stdenv.hostPlatform.extensions.sharedLibrary;
21 })
22 ];
23
24 cmakeFlags = lib.optional mklSupport "-DUSE_MKL=On"
25 ++ lib.optional mklSupport "-DMKLROOT=${mkl}"
26 ;
27
28 env.CXXFLAGS = lib.optionalString stdenv.isLinux "-include cstring";
29
30 installPhase = ''
31 runHook preInstall
32
33 mkdir -p $out/include
34 cp -R lib bin $out/
35 cp -R ../FECore \
36 ../FEBioFluid \
37 ../FEBioLib \
38 ../FEBioMech \
39 ../FEBioMix \
40 ../FEBioOpt \
41 ../FEBioPlot \
42 ../FEBioXML \
43 ../NumCore \
44 $out/include
45
46 runHook postInstall
47 '';
48
49 nativeBuildInputs = [ cmake ];
50 buildInputs = [ boost eigen libxml2 mpi python3 python3.pkgs.numpy ]
51 ++ lib.optional mklSupport mkl
52 ;
53
54 meta = {
55 description = "FEBio Suite Solver";
56 license = with lib.licenses; [ mit ];
57 homepage = "https://febio.org/";
58 platforms = lib.platforms.unix;
59 maintainers = with lib.maintainers; [ Scriptkiddi ];
60 };
61}