pw_protobuf_compiler: Allow protoc override

Normally pw_protobuf_compiler uses the protobuf compiler that comes as a
prebuilt from cipd. The Fuchsia build doesn't fetch pigweed's cipd
prebuilts but does actually build protoc itself.

This CL adds a gn two build args that allows a build to specify a target
for the protoc executable:
 pw_protobuf_compiler_PROTOC_TARGET
    The GN label to build the protoc binary.
 pw_protobuf_compiler_PROTOC_BINARY
    The path, relative to root_build_dir, of the built protoc binary.

Normal pw_protobuf_compiler usage is unaffected.

Change-Id: Iabf1058994cc501f995a8dbf536f2ed3222fc557
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/147310
Reviewed-by: Alexei Frolov <frolv@google.com>
Commit-Queue: Ian McKellar <ianloic@google.com>
Pigweed-Auto-Submit: Ian McKellar <ianloic@google.com>
2 files changed
tree: df4b103ee0dfe0ced02ce224c4755077c8024c27
  1. .allstar/
  2. .vscode/
  3. build_overrides/
  4. docker/
  5. docs/
  6. pw_alignment/
  7. pw_allocator/
  8. pw_analog/
  9. pw_android_toolchain/
  10. pw_arduino_build/
  11. pw_assert/
  12. pw_assert_basic/
  13. pw_assert_log/
  14. pw_assert_tokenized/
  15. pw_assert_zephyr/
  16. pw_async/
  17. pw_async_basic/
  18. pw_base64/
  19. pw_bloat/
  20. pw_blob_store/
  21. pw_bluetooth/
  22. pw_bluetooth_hci/
  23. pw_bluetooth_profiles/
  24. pw_boot/
  25. pw_boot_cortex_m/
  26. pw_build/
  27. pw_build_info/
  28. pw_build_mcuxpresso/
  29. pw_bytes/
  30. pw_checksum/
  31. pw_chrono/
  32. pw_chrono_embos/
  33. pw_chrono_freertos/
  34. pw_chrono_stl/
  35. pw_chrono_threadx/
  36. pw_chrono_zephyr/
  37. pw_cli/
  38. pw_compilation_testing/
  39. pw_console/
  40. pw_containers/
  41. pw_cpu_exception/
  42. pw_cpu_exception_cortex_m/
  43. pw_crypto/
  44. pw_digital_io/
  45. pw_docgen/
  46. pw_doctor/
  47. pw_env_setup/
  48. pw_file/
  49. pw_function/
  50. pw_fuzzer/
  51. pw_hdlc/
  52. pw_hex_dump/
  53. pw_i2c/
  54. pw_i2c_mcuxpresso/
  55. pw_ide/
  56. pw_interrupt/
  57. pw_interrupt_cortex_m/
  58. pw_interrupt_zephyr/
  59. pw_intrusive_ptr/
  60. pw_kvs/
  61. pw_libc/
  62. pw_log/
  63. pw_log_android/
  64. pw_log_basic/
  65. pw_log_null/
  66. pw_log_rpc/
  67. pw_log_string/
  68. pw_log_tokenized/
  69. pw_log_zephyr/
  70. pw_malloc/
  71. pw_malloc_freelist/
  72. pw_metric/
  73. pw_minimal_cpp_stdlib/
  74. pw_module/
  75. pw_multisink/
  76. pw_package/
  77. pw_perf_test/
  78. pw_persistent_ram/
  79. pw_polyfill/
  80. pw_preprocessor/
  81. pw_presubmit/
  82. pw_protobuf/
  83. pw_protobuf_compiler/
  84. pw_random/
  85. pw_result/
  86. pw_ring_buffer/
  87. pw_router/
  88. pw_rpc/
  89. pw_rpc_transport/
  90. pw_rust/
  91. pw_snapshot/
  92. pw_software_update/
  93. pw_span/
  94. pw_spi/
  95. pw_status/
  96. pw_stm32cube_build/
  97. pw_stream/
  98. pw_string/
  99. pw_symbolizer/
  100. pw_sync/
  101. pw_sync_baremetal/
  102. pw_sync_embos/
  103. pw_sync_freertos/
  104. pw_sync_stl/
  105. pw_sync_threadx/
  106. pw_sync_zephyr/
  107. pw_sys_io/
  108. pw_sys_io_arduino/
  109. pw_sys_io_baremetal_lm3s6965evb/
  110. pw_sys_io_baremetal_stm32f429/
  111. pw_sys_io_emcraft_sf2/
  112. pw_sys_io_mcuxpresso/
  113. pw_sys_io_pico/
  114. pw_sys_io_stdio/
  115. pw_sys_io_stm32cube/
  116. pw_sys_io_zephyr/
  117. pw_system/
  118. pw_target_runner/
  119. pw_thread/
  120. pw_thread_embos/
  121. pw_thread_freertos/
  122. pw_thread_stl/
  123. pw_thread_threadx/
  124. pw_thread_zephyr/
  125. pw_tls_client/
  126. pw_tls_client_boringssl/
  127. pw_tls_client_mbedtls/
  128. pw_tokenizer/
  129. pw_tool/
  130. pw_toolchain/
  131. pw_trace/
  132. pw_trace_tokenized/
  133. pw_transfer/
  134. pw_unit_test/
  135. pw_unit_test_zephyr/
  136. pw_varint/
  137. pw_watch/
  138. pw_web/
  139. pw_work_queue/
  140. seed/
  141. targets/
  142. third_party/
  143. ts/
  144. zephyr/
  145. .bazelignore
  146. .bazelrc
  147. .black.toml
  148. .clang-format
  149. .clang-tidy
  150. .eslintrc.json
  151. .git-blame-ignore-revs
  152. .gitattributes
  153. .gitignore
  154. .gn
  155. .mypy.ini
  156. .prettierrc.js
  157. .pw_ide.yaml
  158. .pylintrc
  159. activate.bat
  160. Android.bp
  161. AUTHORS
  162. bootstrap.bat
  163. bootstrap.sh
  164. BUILD.bazel
  165. BUILD.gn
  166. BUILDCONFIG.gn
  167. CMakeLists.txt
  168. jest.config.ts
  169. Kconfig.zephyr
  170. LICENSE
  171. modules.gni
  172. OWNERS
  173. package-lock.json
  174. package.json
  175. pigweed.json
  176. PIGWEED_MODULES
  177. README.md
  178. rollup.config.js
  179. tsconfig.json
  180. WORKSPACE
README.md

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/.

Links