1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 pkg-config,
6 autoreconfHook,
7 enablePsm2 ? (stdenv.hostPlatform.isx86_64 && stdenv.hostPlatform.isLinux),
8 libpsm2,
9 enableOpx ? (stdenv.hostPlatform.isx86_64 && stdenv.hostPlatform.isLinux),
10 libuuid,
11 numactl,
12}:
13
14stdenv.mkDerivation rec {
15 pname = "libfabric";
16 version = "2.2.0";
17
18 enableParallelBuilding = true;
19
20 src = fetchFromGitHub {
21 owner = "ofiwg";
22 repo = "libfabric";
23 rev = "v${version}";
24 sha256 = "sha256-BY3a7CxtMJl5/+7t4BzJRTbMnDs1oL3UhDOPRB+D3+U=";
25 };
26
27 outputs = [
28 "out"
29 "dev"
30 "man"
31 ];
32
33 nativeBuildInputs = [
34 pkg-config
35 autoreconfHook
36 ];
37
38 buildInputs =
39 lib.optionals enableOpx [
40 libuuid
41 numactl
42 ]
43 ++ lib.optionals enablePsm2 [ libpsm2 ];
44
45 configureFlags = [
46 (if enablePsm2 then "--enable-psm2=${libpsm2}" else "--disable-psm2")
47 (if enableOpx then "--enable-opx" else "--disable-opx")
48 ];
49
50 meta = with lib; {
51 homepage = "https://ofiwg.github.io/libfabric/";
52 description = "Open Fabric Interfaces";
53 license = with licenses; [
54 gpl2
55 bsd2
56 ];
57 platforms = platforms.all;
58 maintainers = [ maintainers.bzizou ];
59 };
60}