25 stdenv.mkDerivation ({
26 pname = "nanopb-runtime";
37 compile_definitions = target: ''
38 target_compile_definitions(${target}
40 ${lib.concatStringsSep "\n\t" (
41 map (x: "PB_${x.flag}") (
42 builtins.filter (x: x.cond) [
45 flag = "ENABLE_MALLOC=1";
48 cond = noPackedStructs;
49 flag = "NO_PACKED_STRUCTS=1";
52 cond = maxRequiredFields != null;
53 flag = "MAX_REQUIRED_FIELDS=${maxRequiredFields}";
57 flag = "FIELD_32BIT=1";
65 flag = "BUFFER_ONLY=1";
68 cond = systemHeader != null;
69 flag = "SYSTEM_HEADER=${systemHeader}";
73 flag = "WITHOUT_64BIT=1";
76 cond = encodeArraysUnpacked;
77 flag = "ENCODE_ARRAYS_UNPACKED=1";
80 cond = convertDoubleFloat;
81 flag = "CONVERT_DOUBLE_FLOAT=1";
85 flag = "VALIDATE_UTF8=1";
88 cond = littleEndian8bit;
89 flag = "LITTLE_ENDIAN_8BIT=1";
92 cond = c99StaticAssert;
93 flag = "C99_STATIC_ASSERT=1";
96 cond = noStaticAssert;
97 flag = "NO_STATIC_ASSERT=1";
106 cat << EOF >> CMakeLists.txt
107 ${compile_definitions "protobuf-nanopb"}
108 ${compile_definitions "protobuf-nanopb-static"}
113 "-DBUILD_SHARED_LIBS=ON"
114 "-DBUILD_STATIC_LIBS=ON"
115 "-Dnanopb_BUILD_GENERATOR=OFF"
116 "-Dnanopb_BUILD_RUNTIME=ON"