mirror of
https://fuchsia.googlesource.com/third_party/pigweed.googlesource.com/pigweed/pigweed
synced 2024-09-21 06:12:09 +00:00
4a257c1bc5
This change updates the protobuf docs to explain the module's design decisions. Change-Id: Idccacf28651cf091218dabb1d1ad09365d445776
92 lines
2.6 KiB
ReStructuredText
92 lines
2.6 KiB
ReStructuredText
.. default-domain:: py
|
|
.. highlight:: py
|
|
|
|
.. _chapter-pw-protobuf-compiler:
|
|
|
|
--------------------
|
|
pw_protobuf_compiler
|
|
--------------------
|
|
|
|
The Protobuf compiler module provides build system integration and wrapper
|
|
scripts for generating source code for Protobuf definitions.
|
|
|
|
Language support
|
|
================
|
|
|
|
Protobuf code generation is currently supported for the following languages:
|
|
|
|
+----------+--------+----------------------------------------------------------+
|
|
| Language | Code | Notes |
|
|
+----------+--------+----------------------------------------------------------+
|
|
| C++ | ``cc`` | Currently only supports using ``pw_protobuf``. |
|
|
| | | |
|
|
| | | Support for other libraries such as ``nanopb`` is |
|
|
| | | planned. |
|
|
+----------+--------+----------------------------------------------------------+
|
|
| Go | ``go`` | Compiles using the standard Go protobuf plugin with gRPC |
|
|
| | | service support. |
|
|
+----------+--------+----------------------------------------------------------+
|
|
|
|
The build variable ``pw_protobuf_langs`` tells the module the languages for
|
|
which it should compile code. It is defined as a list of language codes.
|
|
|
|
GN template
|
|
===========
|
|
|
|
The ``pw_proto_library`` GN template is provided by the module.
|
|
|
|
It tells the build system to compile a set of source proto files to a library in
|
|
each chosen language. A different target is created for each language, with the
|
|
language's code appended as a suffix to the template's target name.
|
|
|
|
For example, given the definitions:
|
|
|
|
.. code::
|
|
|
|
pw_protobuf_langs = [ "cc", "py" ]
|
|
|
|
pw_proto_library("test_protos") {
|
|
sources = [ "test.proto" ]
|
|
}
|
|
|
|
Two targets are created, named ``test_protos_cc`` and ``test_protos_py``,
|
|
containing the generated code for their respective languages.
|
|
|
|
**Arguments**
|
|
|
|
* ``sources``: List of ``.proto`` files.
|
|
* ``deps``: Other ``pw_proto_library`` targets that this one depends on.
|
|
|
|
**Example**
|
|
|
|
.. code::
|
|
|
|
import("$dir_pw_protobuf_compiler/proto.gni")
|
|
|
|
pw_proto_library("my_protos") {
|
|
sources = [
|
|
"foo.proto",
|
|
"bar.proto",
|
|
]
|
|
}
|
|
|
|
pw_proto_library("my_other_protos") {
|
|
sources = [
|
|
"baz.proto", # imports foo.proto
|
|
]
|
|
deps = [
|
|
":my_protos",
|
|
]
|
|
}
|
|
|
|
source_set("my_cc_code") {
|
|
sources = [
|
|
"foo.cc",
|
|
"bar.cc",
|
|
"baz.cc",
|
|
]
|
|
deps = [
|
|
":my_other_protos_cc",
|
|
]
|
|
}
|