zoxide: 0.9.6 -> 0.9.7 (#380745)
[NixPkgs.git] / pkgs / by-name / na / nanopb / runtime.nix
blobfba88ee37e2cb8c6a1b439b85847915f3d13158c
2   cmake,
3   lib,
4   stdenv,
5   protobuf,
6   python3,
7   src,
8   version,
9   enableMalloc,
10   noPackedStructs,
11   maxRequiredFields,
12   field32bit,
13   noErrmsg,
14   bufferOnly,
15   systemHeader,
16   without64bit,
17   encodeArraysUnpacked,
18   convertDoubleFloat,
19   validateUtf8,
20   littleEndian8bit,
21   c99StaticAssert,
22   noStaticAssert,
25 stdenv.mkDerivation ({
26   pname = "nanopb-runtime";
27   inherit src version;
29   nativeBuildInputs = [
30     cmake
31     protobuf
32     python3
33   ];
35   patchPhase =
36     let
37       compile_definitions = target: ''
38         target_compile_definitions(${target}
39           PUBLIC
40           ${lib.concatStringsSep "\n\t" (
41             map (x: "PB_${x.flag}") (
42               builtins.filter (x: x.cond) [
43                 {
44                   cond = enableMalloc;
45                   flag = "ENABLE_MALLOC=1";
46                 }
47                 {
48                   cond = noPackedStructs;
49                   flag = "NO_PACKED_STRUCTS=1";
50                 }
51                 {
52                   cond = maxRequiredFields != null;
53                   flag = "MAX_REQUIRED_FIELDS=${maxRequiredFields}";
54                 }
55                 {
56                   cond = field32bit;
57                   flag = "FIELD_32BIT=1";
58                 }
59                 {
60                   cond = noErrmsg;
61                   flag = "NO_ERRMSG=1";
62                 }
63                 {
64                   cond = bufferOnly;
65                   flag = "BUFFER_ONLY=1";
66                 }
67                 {
68                   cond = systemHeader != null;
69                   flag = "SYSTEM_HEADER=${systemHeader}";
70                 }
71                 {
72                   cond = without64bit;
73                   flag = "WITHOUT_64BIT=1";
74                 }
75                 {
76                   cond = encodeArraysUnpacked;
77                   flag = "ENCODE_ARRAYS_UNPACKED=1";
78                 }
79                 {
80                   cond = convertDoubleFloat;
81                   flag = "CONVERT_DOUBLE_FLOAT=1";
82                 }
83                 {
84                   cond = validateUtf8;
85                   flag = "VALIDATE_UTF8=1";
86                 }
87                 {
88                   cond = littleEndian8bit;
89                   flag = "LITTLE_ENDIAN_8BIT=1";
90                 }
91                 {
92                   cond = c99StaticAssert;
93                   flag = "C99_STATIC_ASSERT=1";
94                 }
95                 {
96                   cond = noStaticAssert;
97                   flag = "NO_STATIC_ASSERT=1";
98                 }
99               ]
100             )
101           )}
102         )
103       '';
104     in
105     ''
106       cat << EOF >> CMakeLists.txt
107         ${compile_definitions "protobuf-nanopb"}
108         ${compile_definitions "protobuf-nanopb-static"}
109       EOF
110     '';
112   cmakeFlags = [
113     "-DBUILD_SHARED_LIBS=ON"
114     "-DBUILD_STATIC_LIBS=ON"
115     "-Dnanopb_BUILD_GENERATOR=OFF"
116     "-Dnanopb_BUILD_RUNTIME=ON"
117   ];