Add presubmit checks for RPCs (#6056)

Add presubmit checks for RPC lighting app example of
linux, EFR32, NRF32
diff --git a/.github/workflows/examples-efr32.yaml b/.github/workflows/examples-efr32.yaml
index 2e1aa48..81462a0 100644
--- a/.github/workflows/examples-efr32.yaml
+++ b/.github/workflows/examples-efr32.yaml
@@ -52,6 +52,11 @@
               run:
                   scripts/examples/gn_efr32_example.sh
                   examples/lighting-app/efr32/ out/lighting_app_debug BRD4161A
+            - name: Build example EFR32 Lighting App for BRD4161A with RPCs
+              run:
+                  scripts/examples/gn_efr32_example.sh
+                  examples/lighting-app/efr32/ out/lighting_app_debug_rpc BRD4161A
+                  -args='import("//with_pw_rpc.gni")'
             - name: Build example EFR32 Window Covering for BRD4161A
               run:
                   scripts/examples/gn_efr32_example.sh examples/window-app/efr32/
@@ -72,6 +77,7 @@
                   path: |
                       out/lock_app_debug/BRD4161A/chip-efr32-lock-example.out
                       out/lighting_app_debug/BRD4161A/chip-efr32-lighting-example.out
+                      out/lighting_app_debug_rpc/BRD4161A/chip-efr32-lighting-example.out
             - name: Remove third_party binaries for CodeQL Analysis
               run: find out -type d -name "third_party" -exec rm -rf {} +
             - name: Remove SiliconLabs binaries for CodeQL Analysis
diff --git a/.github/workflows/examples-linux-standalone.yaml b/.github/workflows/examples-linux-standalone.yaml
index 24f446a..79bb89b 100644
--- a/.github/workflows/examples-linux-standalone.yaml
+++ b/.github/workflows/examples-linux-standalone.yaml
@@ -59,6 +59,10 @@
               run:
                   scripts/examples/gn_build_example.sh examples/all-clusters-app/linux
                   out/all_clusters_debug chip_bypass_rendezvous=true
+            - name: Build example lighting app with RPCs
+              run:
+                  scripts/examples/gn_build_example.sh examples/lighting-app/linux
+                  out/lighting_app_debug_rpc 'import("//with_pw_rpc.gni")'
             - name: Build example Standalone Bridge
               run:
                   scripts/examples/gn_build_example.sh examples/bridge-app/linux out/bridge_debug
@@ -79,6 +83,7 @@
                       out/all_clusters_debug/all-clusters-server
                       out/bridge_debug/bridge-app-server
                       out/chip_tool_debug/chip-tool
+                      out/lighting_app_debug_rpc/chip-lighting-app
                       out/shell_debug/chip-shell
             - name: Remove third_party binaries for CodeQL Analysis
               run: find out -type d -name "third_party" -exec rm -rf {} +
diff --git a/.github/workflows/examples-nrfconnect.yaml b/.github/workflows/examples-nrfconnect.yaml
index 093a9c2..57f1543 100644
--- a/.github/workflows/examples-nrfconnect.yaml
+++ b/.github/workflows/examples-nrfconnect.yaml
@@ -52,6 +52,8 @@
               run: scripts/examples/nrfconnect_example.sh lock-app nrf52840dk_nrf52840
             - name: Build example nRF Connect SDK Lighting App on nRF52840 DK
               run: scripts/examples/nrfconnect_example.sh lighting-app nrf52840dk_nrf52840
+            - name: Build example nRF Connect SDK Lighting App on nRF52840 DK with RPC
+              run: scripts/examples/nrfconnect_example.sh lighting-app nrf52840dk_nrf52840 -DOVERLAY_CONFIG=rpc.overlay
             - name: Build example nRF Connect SDK Shell on nRF52840 DK
               run: scripts/examples/nrfconnect_example.sh shell nrf52840dk_nrf52840
             - name: Build example nRF Connect SDK Pigweed on nRF52840 DK
diff --git a/scripts/examples/gn_build_example.sh b/scripts/examples/gn_build_example.sh
index b141fe8..b03e166 100755
--- a/scripts/examples/gn_build_example.sh
+++ b/scripts/examples/gn_build_example.sh
@@ -38,6 +38,9 @@
         *=*)
             GN_ARGS+=("$arg")
             ;;
+        *import*)
+            GN_ARGS+=("$arg")
+            ;;
         *)
             echo >&2 "invalid argument: $arg"
             exit 2
diff --git a/scripts/examples/gn_efr32_example.sh b/scripts/examples/gn_efr32_example.sh
index 16d8cee..1054dba 100755
--- a/scripts/examples/gn_efr32_example.sh
+++ b/scripts/examples/gn_efr32_example.sh
@@ -31,7 +31,11 @@
     #print stats
     arm-none-eabi-size -A "$2"/"$EFR32_BOARD"/*.out
 else
-    gn gen --check --fail-on-unused-args --root="$1" --args="efr32_board=\"$3\"" "$2/$3"
+    if [ -z "$4" ]; then
+        gn gen --check --fail-on-unused-args --root="$1" --args="efr32_board=\"$3\"" "$2/$3"
+    else
+        gn gen --check --fail-on-unused-args --root="$1" --args="efr32_board=\"$3\"" "$2/$3" "$4"
+    fi
     ninja -v -C "$2/$3"
     #print stats
     arm-none-eabi-size -A "$2"/"$3"/*.out