@@ -63,6 +63,10 @@ set(CHIP_CFLAG_EXCLUDES
63
63
# Helper macros
64
64
# ==============================================================================
65
65
66
+ macro (chip_gn_arg_import FILE)
67
+ string (APPEND CHIP_GN_ARGS "import(\" ${FILE} \" )\n " )
68
+ endmacro ()
69
+
66
70
macro (chip_gn_arg_string ARG STRING )
67
71
string (APPEND CHIP_GN_ARGS "${ARG} = \" ${STRING} \"\n " )
68
72
endmacro ()
@@ -95,6 +99,19 @@ macro(mbed_interface_library_named name)
95
99
add_library (${name} INTERFACE )
96
100
endmacro ()
97
101
102
+ # Select gnu++<YY> standard based on project configuration
103
+ macro (mbed_get_gnu_cpp_standard VAR)
104
+ if (CONFIG_STD_CPP11)
105
+ list (APPEND ${VAR} -std=gnu++11)
106
+ elseif (CONFIG_STD_CPP14)
107
+ list (APPEND ${VAR} -std=gnu++14)
108
+ elseif (CONFIG_STD_CPP17)
109
+ list (APPEND ${VAR} -std=gnu++17)
110
+ elseif (CONFIG_STD_CPP2A)
111
+ list (APPEND ${VAR} -std=gnu++20)
112
+ endif ()
113
+ endmacro ()
114
+
98
115
# ==============================================================================
99
116
# Prepare CHIP configuration based on the project configuration
100
117
# ==============================================================================
@@ -111,10 +128,16 @@ foreach(NameAndValue ${ConfigContents})
111
128
set (${Name} "${Value} " )
112
129
endforeach ()
113
130
131
+ if (CONFIG_CHIP_PW_RPC)
132
+ set (CONFIG_STD_CPP17 y)
133
+ endif ()
134
+
114
135
if (NOT CHIP_ROOT)
115
136
get_filename_component (CHIP_ROOT ${CMAKE_CURRENT_SOURCE_DIR} /../.. REALPATH)
116
137
endif ()
117
138
139
+ set (GN_ROOT_TARGET ${CHIP_ROOT} /config/mbed/chip-gn)
140
+
118
141
# Prepare compiler flags
119
142
120
143
mbed_get_target_common_compile_flags(CHIP_CFLAGS mbed-core)
@@ -165,6 +188,8 @@ if (CONFIG_CHIP_WITH_EXTERNAL_MBEDTLS)
165
188
list (APPEND CHIP_CFLAGS ${CHIP_MBEDTLS_CFLAGS} )
166
189
endif ()
167
190
191
+ mbed_get_gnu_cpp_standard(CHIP_CFLAGS_CC)
192
+
168
193
list (APPEND CHIP_CFLAGS
169
194
\"-D__LINUX_ERRNO_EXTENSIONS__=1\"
170
195
)
@@ -196,6 +221,15 @@ if (CONFIG_CHIP_LIB_SHELL)
196
221
list (APPEND CHIP_LIBRARIES -lCHIPShell)
197
222
endif ()
198
223
224
+ if (CONFIG_CHIP_PW_RPC)
225
+ list (APPEND CHIP_LIBRARIES -lPwRpc)
226
+ if (${APP_TARGET} MATCHES "pigweed-app" )
227
+ set (CONFIG_CHIP_PW_RPC_ECHO_PROTO "y" )
228
+ else ()
229
+ set (CONFIG_CHIP_PW_RPC_ECHO_PROTO "n" )
230
+ endif ()
231
+ endif (CONFIG_CHIP_PW_RPC)
232
+
199
233
# Set up CHIP project configuration file
200
234
201
235
set (CHIP_DEFAULT_CONFIG_FILE "<${CHIP_ROOT} /config/mbed/CHIPProjectConfig.h>" )
@@ -217,6 +251,9 @@ endif()
217
251
# ==============================================================================
218
252
# Generate configuration for CHIP GN build system
219
253
# ==============================================================================
254
+ if (CONFIG_CHIP_PW_RPC)
255
+ chip_gn_arg_import("${GN_ROOT_TARGET} /lib/pw_rpc/pw_rpc.gni" )
256
+ endif ()
220
257
221
258
chip_gn_arg_flags("target_cflags" ${CHIP_CFLAGS} )
222
259
chip_gn_arg_lang_flags("target_cflags_c" ${CHIP_CFLAGS_C} )
@@ -231,6 +268,10 @@ chip_gn_arg_bool ("chip_monolithic_tests" CONFIG_CHIP_BUILD_TEST
231
268
chip_gn_arg_bool ("chip_build_libshell" CONFIG_CHIP_LIB_SHELL)
232
269
chip_gn_arg_bool ("chip_with_platform_mbedtls" CONFIG_CHIP_WITH_EXTERNAL_MBEDTLS)
233
270
chip_gn_arg_bool ("chip_bypass_rendezvous" CONFIG_CHIP_BYPASS_RENDEZVOUS)
271
+ chip_gn_arg_bool ("chip_build_pw_rpc_lib" CONFIG_CHIP_PW_RPC)
272
+ if (CONFIG_CHIP_PW_RPC)
273
+ chip_gn_arg_bool ("chip_build_pw_rpc_echo_proto" CONFIG_CHIP_PW_RPC_ECHO_PROTO)
274
+ endif (CONFIG_CHIP_PW_RPC)
234
275
235
276
file (GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /args.gn CONTENT ${CHIP_GN_ARGS} )
236
277
@@ -242,7 +283,7 @@ ExternalProject_Add(
242
283
PREFIX ${CMAKE_CURRENT_BINARY_DIR}
243
284
SOURCE_DIR ${CHIP_ROOT}
244
285
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}
245
- CONFIGURE_COMMAND gn --root=${CHIP_ROOT} /config/mbed/chip-gn gen --export-compile-commands --check --fail-on -unused-args ${CMAKE_CURRENT_BINARY_DIR}
286
+ CONFIGURE_COMMAND gn --root=${GN_ROOT_TARGET} gen --export-compile-commands --check --fail-on -unused-args ${CMAKE_CURRENT_BINARY_DIR}
246
287
BUILD_COMMAND ninja
247
288
INSTALL_COMMAND ""
248
289
BUILD_BYPRODUCTS ${CHIP_LIBRARIES}
@@ -291,10 +332,73 @@ if (CONFIG_MBED_BSD_SOCKET_TRACE)
291
332
)
292
333
endif ()
293
334
335
+ if (CONFIG_CHIP_PW_RPC)
336
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++17" PARENT_SCOPE)
337
+ list (APPEND CHIP_DEFINES
338
+ CONFIG_CHIP_PW_RPC=1
339
+ )
340
+ endif ()
341
+
294
342
target_include_directories (${APP_TARGET} PRIVATE
295
343
${CHIP_INCLUDES}
296
344
)
297
345
298
346
target_compile_definitions (${APP_TARGET} PRIVATE
299
347
${CHIP_DEFINES}
300
348
)
349
+
350
+
351
+ if (CONFIG_CHIP_PW_RPC)
352
+
353
+ set (PIGWEED_ROOT "${CHIP_ROOT} /third_party/pigweed/repo" )
354
+
355
+ target_sources (${APP_TARGET} PRIVATE
356
+ ${CHIP_ROOT} /examples/common/pigweed/RpcService.cpp
357
+ ${CHIP_ROOT} /examples/common/pigweed/mbed/PigweedLoggerMutex.cpp
358
+ ${MBED_COMMON} /util/PigweedLogger.cpp
359
+ )
360
+
361
+ target_include_directories (${APP_TARGET} PRIVATE
362
+ ${PIGWEED_ROOT} /pw_sys_io/public
363
+ ${PIGWEED_ROOT} /pw_assert/public
364
+ ${PIGWEED_ROOT} /pw_assert_log/public
365
+ ${PIGWEED_ROOT} /pw_assert_log/public_overrides
366
+ ${PIGWEED_ROOT} /pw_bytes/public
367
+ ${PIGWEED_ROOT} /pw_checksum/public
368
+ ${PIGWEED_ROOT} /pw_containers/public
369
+ ${PIGWEED_ROOT} /pw_hdlc/public
370
+ ${PIGWEED_ROOT} /pw_log/public
371
+ ${PIGWEED_ROOT} /pw_log_basic/public
372
+ ${PIGWEED_ROOT} /pw_log_basic/public_overrides
373
+ ${PIGWEED_ROOT} /pw_span/public_overrides
374
+ ${PIGWEED_ROOT} /pw_span/public
375
+ ${PIGWEED_ROOT} /pw_polyfill/public
376
+ ${PIGWEED_ROOT} /pw_polyfill/standard_library_public
377
+ ${PIGWEED_ROOT} /pw_polyfill/public_overrides
378
+ ${PIGWEED_ROOT} /pw_rpc/public
379
+ ${PIGWEED_ROOT} /pw_rpc/nanopb/public
380
+ ${PIGWEED_ROOT} /pw_rpc/raw/public
381
+ ${PIGWEED_ROOT} /pw_protobuf/public
382
+ ${PIGWEED_ROOT} /pw_status/public
383
+ ${PIGWEED_ROOT} /pw_stream/public
384
+ ${PIGWEED_ROOT} /pw_result/public
385
+ ${PIGWEED_ROOT} /pw_varint/public
386
+ ${PIGWEED_ROOT} /pw_function/public
387
+ ${PIGWEED_ROOT} /pw_preprocessor/public
388
+ ${PIGWEED_ROOT} /pw_rpc/system_server/public
389
+ ${CHIP_ROOT} /third_party/nanopb/repo
390
+
391
+ ${CHIP_ROOT} /examples/common
392
+ ${CHIP_ROOT} /examples//common/pigweed/mbed
393
+ ${MBED_COMMON} /pw_sys_io/public
394
+ )
395
+
396
+ if (CONFIG_CHIP_PW_RPC_ECHO_PROTO)
397
+ target_include_directories (${APP_TARGET} PRIVATE
398
+ ${CMAKE_CURRENT_BINARY_DIR} /protocol_buffer/gen/third_party/connectedhomeip/third_party/pigweed/repo/pw_rpc/protos.proto_library/nanopb_rpc
399
+ ${CMAKE_CURRENT_BINARY_DIR} /protocol_buffer/gen/third_party/connectedhomeip/third_party/pigweed/repo/pw_rpc/protos.proto_library/nanopb
400
+ ${CMAKE_CURRENT_BINARY_DIR} /protocol_buffer/gen/third_party/connectedhomeip/third_party/pigweed/repo/pw_rpc/protos.proto_library/pwpb
401
+ )
402
+ endif (CONFIG_CHIP_PW_RPC_ECHO_PROTO)
403
+
404
+ endif (CONFIG_CHIP_PW_RPC)
0 commit comments