@@ -16,14 +16,23 @@ import("//build_overrides/build.gni")
16
16
import (" //build_overrides/chip.gni" )
17
17
18
18
import (" ${ chip_root } /build/chip/tools.gni" )
19
+ import (" ${ chip_root } /src/app/common_flags.gni" )
20
+
21
+ import (" ${ chip_root } /examples/common/pigweed/pigweed_rpcs.gni" )
22
+
23
+ if (chip_enable_pw_rpc ) {
24
+ import (" //build_overrides/pigweed.gni" )
25
+ import (" $dir_pw_build /target_types.gni" )
26
+ }
19
27
20
28
assert (chip_build_tools )
21
29
22
30
action (" chip-bridge-codegen" ) {
23
31
script = " ${ chip_root } /scripts/codegen.py"
24
32
sources =
25
33
[ " ${ chip_root } /examples/bridge-app/bridge-common/bridge-app.matter" ]
26
- outputs = [ " $target_gen_dir /cpp/BridgeClustersImpl.h" ]
34
+ # Also several other files, but this is sufficient for dependency purposes.
35
+ outputs = [ " $target_gen_dir /bridge/BridgeClustersImpl.h" ]
27
36
28
37
args = [
29
38
" --generator" ,
@@ -41,6 +50,7 @@ executable("chip-bridge-app") {
41
50
sources = [
42
51
" ${ chip_root } /examples/bridge-app/linux/bridged-actions-stub.cpp" ,
43
52
" ${ chip_root } /examples/tv-app/tv-common/include/CHIPProjectAppConfig.h" ,
53
+ " Backend.cpp" ,
44
54
" Clusters.cpp" ,
45
55
" Device.cpp" ,
46
56
" DynamicDevice.cpp" ,
@@ -58,13 +68,57 @@ executable("chip-bridge-app") {
58
68
" ${ chip_root } /src/lib" ,
59
69
]
60
70
61
- cflags = [ " -Wconversion" ]
62
-
63
71
include_dirs = [
64
72
" include" ,
65
73
target_gen_dir ,
66
74
]
67
75
76
+ if (chip_enable_pw_rpc ) {
77
+ defines = [
78
+ " PW_RPC_ENABLED" ,
79
+ " PW_RPC_ATTRIBUTE_SERVICE=1" ,
80
+ " PW_RPC_DESCRIPTOR_SERVICE=1" ,
81
+ " PW_RPC_DEVICE_SERVICE=1" ,
82
+ " PW_RPC_TRACING_SERVICE=1"
83
+ ]
84
+
85
+ sources += [
86
+ " ${ chip_root } /examples/platform/linux/Rpc.cpp" ,
87
+ " ${ chip_root } /examples/platform/linux/system_rpc_server.cc" ,
88
+ " bridge_service.cpp"
89
+ ]
90
+
91
+ deps += [
92
+ " $dir_pw_hdlc :pw_rpc" ,
93
+ " $dir_pw_hdlc :rpc_channel_output" ,
94
+ " $dir_pw_log " ,
95
+ " $dir_pw_rpc :server" ,
96
+ " $dir_pw_rpc /system_server:facade" ,
97
+ " $dir_pw_stream :socket_stream" ,
98
+ " $dir_pw_stream :sys_io_stream" ,
99
+ " $dir_pw_sync :mutex" ,
100
+ " $dir_pw_trace " ,
101
+ " $dir_pw_trace_tokenized " ,
102
+ " $dir_pw_trace_tokenized :trace_rpc_service" ,
103
+ " ${ chip_root } /config/linux/lib/pw_rpc:pw_rpc" ,
104
+ " ${ chip_root } /examples/bridge-app/bridge-common:bridge_service.nanopb_rpc" ,
105
+ " ${ chip_root } /examples/common/pigweed:attributes_service.nanopb_rpc" ,
106
+ " ${ chip_root } /examples/common/pigweed:button_service.nanopb_rpc" ,
107
+ " ${ chip_root } /examples/common/pigweed:descriptor_service.nanopb_rpc" ,
108
+ " ${ chip_root } /examples/common/pigweed:device_service.nanopb_rpc" ,
109
+ " ${ chip_root } /examples/common/pigweed:lighting_service.nanopb_rpc" ,
110
+ " ${ chip_root } /examples/common/pigweed:rpc_services" ,
111
+ ]
112
+
113
+ deps += pw_build_LINK_DEPS
114
+
115
+ include_dirs += [ " ${ chip_root } /examples/common" ]
116
+ } else {
117
+ # The system_rpc_server.cc file is in pigweed and doesn't compile with
118
+ # -Wconversion, remove check for RPC build only.
119
+ cflags = [ " -Wconversion" ]
120
+ }
121
+
68
122
output_dir = root_out_dir
69
123
}
70
124
0 commit comments