1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 ocaml,
6 findlib,
7 ocamlbuild,
8 buildDunePackage,
9}:
10
11let
12 pname = "cppo";
13
14 meta = with lib; {
15 description = "C preprocessor for OCaml";
16 mainProgram = "cppo";
17 longDescription = ''
18 Cppo is an equivalent of the C preprocessor targeted at the OCaml language and its variants.
19 '';
20 homepage = "https://github.com/ocaml-community/${pname}";
21 maintainers = [ maintainers.vbgl ];
22 license = licenses.bsd3;
23 };
24
25in
26
27if lib.versionAtLeast ocaml.version "4.02" then
28
29 buildDunePackage rec {
30 inherit pname;
31 version = "1.8.0";
32
33 src = fetchFromGitHub {
34 owner = "ocaml-community";
35 repo = pname;
36 rev = "v${version}";
37 hash = "sha256-+HnAGM+GddYJK0RCvKrs+baZS+1o8Yq+/cVa3U3nFWg=";
38 };
39
40 doCheck = true;
41
42 inherit meta;
43 }
44
45else
46
47 let
48 version = "1.5.0";
49 in
50
51 stdenv.mkDerivation {
52
53 name = "${pname}-${version}";
54
55 src = fetchFromGitHub {
56 owner = "mjambon";
57 repo = pname;
58 rev = "v${version}";
59 sha256 = "1xqldjz9risndnabvadw41fdbi5sa2hl4fnqls7j9xfbby1izbg8";
60 };
61
62 strictDeps = true;
63
64 nativeBuildInputs = [
65 ocaml
66 findlib
67 ocamlbuild
68 ];
69
70 inherit meta;
71
72 createFindlibDestdir = true;
73
74 makeFlags = [ "PREFIX=$(out)" ];
75
76 preBuild = ''
77 mkdir -p $out/bin
78 '';
79
80 }