1{ fetchFromGitHub
2, lib, stdenv
3, cmake
4, eigen
5, nlopt
6, ipopt
7, boost
8, tbb
9 # tests pass but take 30+ minutes
10, runTests ? false
11}:
12
13stdenv.mkDerivation rec {
14 pname = "pagmo2";
15 version = "2.19.0";
16
17 src = fetchFromGitHub {
18 owner = "esa";
19 repo = "pagmo2";
20 rev = "v${version}";
21 sha256 = "sha256-z5kg2xKZ666EPK844yp+hi4iGisaIPme9xNdzsAEEjw=";
22 };
23
24 nativeBuildInputs = [ cmake ];
25 buildInputs = [ eigen nlopt boost tbb ] ++ lib.optional (!stdenv.isDarwin) ipopt;
26
27 cmakeFlags = [
28 "-DPAGMO_BUILD_TESTS=${if runTests then "ON" else "OFF"}"
29 "-DPAGMO_WITH_EIGEN3=yes"
30 "-DPAGMO_WITH_NLOPT=yes"
31 "-DNLOPT_LIBRARY=${nlopt}/lib/libnlopt${stdenv.hostPlatform.extensions.sharedLibrary}"
32 ] ++ lib.optionals stdenv.isLinux [
33 "-DPAGMO_WITH_IPOPT=yes"
34 "-DCMAKE_CXX_FLAGS='-fuse-ld=gold'"
35 ] ++ lib.optionals stdenv.isDarwin [
36 # FIXME: fails ipopt test with Invalid_Option on darwin, so disable.
37 "-DPAGMO_WITH_IPOPT=no"
38 "-DLLVM_USE_LINKER=gold"
39 ];
40
41 doCheck = runTests;
42
43 meta = with lib; {
44 homepage = "https://esa.github.io/pagmo2/";
45 description = "Scientific library for massively parallel optimization";
46 license = licenses.gpl3Plus;
47 platforms = platforms.unix;
48 maintainers = [ maintainers.costrouc ];
49 };
50}