pw_rpc: Add size report for server

This change adds a size report showing the memory cost of the RPC server
both by itself and with a nanopb service.

Change-Id: I5ed465888b757e706de90fc4b4a7247f2930dd3a
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/18246
Commit-Queue: Alexei Frolov <frolv@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
diff --git a/pw_rpc/BUILD.gn b/pw_rpc/BUILD.gn
index 9a3478c..fbf3a74 100644
--- a/pw_rpc/BUILD.gn
+++ b/pw_rpc/BUILD.gn
@@ -15,9 +15,11 @@
 # gn-format disable
 import("//build_overrides/pigweed.gni")
 
+import("$dir_pw_bloat/bloat.gni")
 import("$dir_pw_build/target_types.gni")
 import("$dir_pw_docgen/docs.gni")
 import("$dir_pw_protobuf_compiler/proto.gni")
+import("$dir_pw_third_party/nanopb/nanopb.gni")
 import("$dir_pw_unit_test/test.gni")
 config("default_config") {
   include_dirs = [ "public" ]
@@ -116,6 +118,29 @@
     "pw_rpc_protos/packet.proto",
   ]
   group_deps = [ "nanopb:docs" ]
+  report_deps = [ ":server_size" ]
+}
+
+pw_size_report("server_size") {
+  title = "Pigweed RPC server size report"
+
+  binaries = [
+    {
+      target = "size_report:server_only"
+      base = "size_report:base"
+      label = "Server by itself"
+    },
+  ]
+
+  if (dir_pw_third_party_nanopb != "") {
+    binaries += [
+      {
+        target = "size_report:server_with_echo_service"
+        base = "size_report:base_with_nanopb"
+        label = "Server with a registered nanopb EchoService"
+      },
+    ]
+  }
 }
 
 pw_test_group("tests") {