nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 118 lines 2.9 kB view raw
1{ 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, 23}: 24 25stdenv.mkDerivation { 26 pname = "nanopb-runtime"; 27 inherit src version; 28 29 nativeBuildInputs = [ 30 cmake 31 protobuf 32 python3 33 ]; 34 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 ''; 111 112 cmakeFlags = [ 113 "-DBUILD_SHARED_LIBS=ON" 114 "-DBUILD_STATIC_LIBS=ON" 115 "-Dnanopb_BUILD_GENERATOR=OFF" 116 "-Dnanopb_BUILD_RUNTIME=ON" 117 ]; 118}