118 lines
2.8 KiB
Nix
118 lines
2.8 KiB
Nix
{
|
|
cmake,
|
|
lib,
|
|
stdenv,
|
|
protobuf,
|
|
python3,
|
|
src,
|
|
version,
|
|
enableMalloc,
|
|
noPackedStructs,
|
|
maxRequiredFields,
|
|
field32bit,
|
|
noErrmsg,
|
|
bufferOnly,
|
|
systemHeader,
|
|
without64bit,
|
|
encodeArraysUnpacked,
|
|
convertDoubleFloat,
|
|
validateUtf8,
|
|
littleEndian8bit,
|
|
c99StaticAssert,
|
|
noStaticAssert,
|
|
}:
|
|
|
|
stdenv.mkDerivation ({
|
|
pname = "nanopb-runtime";
|
|
inherit src version;
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
protobuf
|
|
python3
|
|
];
|
|
|
|
patchPhase =
|
|
let
|
|
compile_definitions = target: ''
|
|
target_compile_definitions(${target}
|
|
PUBLIC
|
|
${lib.concatStringsSep "\n\t" (
|
|
map (x: "PB_${x.flag}") (
|
|
builtins.filter (x: x.cond) [
|
|
{
|
|
cond = enableMalloc;
|
|
flag = "ENABLE_MALLOC=1";
|
|
}
|
|
{
|
|
cond = noPackedStructs;
|
|
flag = "NO_PACKED_STRUCTS=1";
|
|
}
|
|
{
|
|
cond = maxRequiredFields != null;
|
|
flag = "MAX_REQUIRED_FIELDS=${maxRequiredFields}";
|
|
}
|
|
{
|
|
cond = field32bit;
|
|
flag = "FIELD_32BIT=1";
|
|
}
|
|
{
|
|
cond = noErrmsg;
|
|
flag = "NO_ERRMSG=1";
|
|
}
|
|
{
|
|
cond = bufferOnly;
|
|
flag = "BUFFER_ONLY=1";
|
|
}
|
|
{
|
|
cond = systemHeader != null;
|
|
flag = "SYSTEM_HEADER=${systemHeader}";
|
|
}
|
|
{
|
|
cond = without64bit;
|
|
flag = "WITHOUT_64BIT=1";
|
|
}
|
|
{
|
|
cond = encodeArraysUnpacked;
|
|
flag = "ENCODE_ARRAYS_UNPACKED=1";
|
|
}
|
|
{
|
|
cond = convertDoubleFloat;
|
|
flag = "CONVERT_DOUBLE_FLOAT=1";
|
|
}
|
|
{
|
|
cond = validateUtf8;
|
|
flag = "VALIDATE_UTF8=1";
|
|
}
|
|
{
|
|
cond = littleEndian8bit;
|
|
flag = "LITTLE_ENDIAN_8BIT=1";
|
|
}
|
|
{
|
|
cond = c99StaticAssert;
|
|
flag = "C99_STATIC_ASSERT=1";
|
|
}
|
|
{
|
|
cond = noStaticAssert;
|
|
flag = "NO_STATIC_ASSERT=1";
|
|
}
|
|
]
|
|
)
|
|
)}
|
|
)
|
|
'';
|
|
in
|
|
''
|
|
cat << EOF >> CMakeLists.txt
|
|
${compile_definitions "protobuf-nanopb"}
|
|
${compile_definitions "protobuf-nanopb-static"}
|
|
EOF
|
|
'';
|
|
|
|
cmakeFlags = [
|
|
"-DBUILD_SHARED_LIBS=ON"
|
|
"-DBUILD_STATIC_LIBS=ON"
|
|
"-Dnanopb_BUILD_GENERATOR=OFF"
|
|
"-Dnanopb_BUILD_RUNTIME=ON"
|
|
];
|
|
})
|