pw_protobuf: Fix support for import_prefix on protos with options

If import_prefix was used on a proto_library with .options files, they
would not be applied, since rules_proto places those files in a virtual
include directory and the normal plugin logic to locate .options files
doesn't work.

Add an option to pwpb plugin to handle the import_prefix when looking
for .options files

Add test case for this and enable message codegen tests that were
disabled for bazel before.

Change-Id: I0711e49e9a4a944d57ef8ab932592ed0a97e450c
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204671
Presubmit-Verified: CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Ted Pudlik <tpudlik@google.com>
Commit-Queue: Austin Foxley <afoxley@google.com>
10 files changed
tree: 1574b7cec9149da4ec05d972e1f738fe1392b2eb
  1. .allstar/
  2. .vscode/
  3. build_overrides/
  4. docker/
  5. docs/
  6. kudzu/
  7. pw_alignment/
  8. pw_allocator/
  9. pw_analog/
  10. pw_android_toolchain/
  11. pw_arduino_build/
  12. pw_assert/
  13. pw_assert_basic/
  14. pw_assert_log/
  15. pw_assert_tokenized/
  16. pw_assert_zephyr/
  17. pw_async/
  18. pw_async2/
  19. pw_async2_basic/
  20. pw_async2_epoll/
  21. pw_async_basic/
  22. pw_base64/
  23. pw_bloat/
  24. pw_blob_store/
  25. pw_bluetooth/
  26. pw_bluetooth_hci/
  27. pw_bluetooth_profiles/
  28. pw_bluetooth_proxy/
  29. pw_bluetooth_sapphire/
  30. pw_boot/
  31. pw_boot_cortex_m/
  32. pw_build/
  33. pw_build_android/
  34. pw_build_info/
  35. pw_build_mcuxpresso/
  36. pw_bytes/
  37. pw_channel/
  38. pw_checksum/
  39. pw_chre/
  40. pw_chrono/
  41. pw_chrono_embos/
  42. pw_chrono_freertos/
  43. pw_chrono_rp2040/
  44. pw_chrono_stl/
  45. pw_chrono_threadx/
  46. pw_chrono_zephyr/
  47. pw_cli/
  48. pw_compilation_testing/
  49. pw_config_loader/
  50. pw_console/
  51. pw_containers/
  52. pw_cpu_exception/
  53. pw_cpu_exception_cortex_m/
  54. pw_cpu_exception_risc_v/
  55. pw_crypto/
  56. pw_digital_io/
  57. pw_digital_io_linux/
  58. pw_digital_io_mcuxpresso/
  59. pw_digital_io_rp2040/
  60. pw_docgen/
  61. pw_doctor/
  62. pw_emu/
  63. pw_env_setup/
  64. pw_env_setup_zephyr/
  65. pw_file/
  66. pw_format/
  67. pw_function/
  68. pw_fuzzer/
  69. pw_grpc/
  70. pw_hdlc/
  71. pw_hex_dump/
  72. pw_i2c/
  73. pw_i2c_linux/
  74. pw_i2c_mcuxpresso/
  75. pw_i2c_rp2040/
  76. pw_ide/
  77. pw_interrupt/
  78. pw_interrupt_cortex_m/
  79. pw_interrupt_xtensa/
  80. pw_interrupt_zephyr/
  81. pw_intrusive_ptr/
  82. pw_json/
  83. pw_kvs/
  84. pw_libc/
  85. pw_libcxx/
  86. pw_log/
  87. pw_log_android/
  88. pw_log_basic/
  89. pw_log_null/
  90. pw_log_rpc/
  91. pw_log_string/
  92. pw_log_tokenized/
  93. pw_log_zephyr/
  94. pw_malloc/
  95. pw_malloc_freelist/
  96. pw_malloc_freertos/
  97. pw_metric/
  98. pw_minimal_cpp_stdlib/
  99. pw_module/
  100. pw_multibuf/
  101. pw_multisink/
  102. pw_package/
  103. pw_perf_test/
  104. pw_persistent_ram/
  105. pw_polyfill/
  106. pw_preprocessor/
  107. pw_presubmit/
  108. pw_protobuf/
  109. pw_protobuf_compiler/
  110. pw_random/
  111. pw_result/
  112. pw_ring_buffer/
  113. pw_router/
  114. pw_rpc/
  115. pw_rpc_transport/
  116. pw_rust/
  117. pw_sensor/
  118. pw_snapshot/
  119. pw_software_update/
  120. pw_span/
  121. pw_spi/
  122. pw_spi_linux/
  123. pw_spi_mcuxpresso/
  124. pw_spi_rp2040/
  125. pw_status/
  126. pw_stm32cube_build/
  127. pw_stream/
  128. pw_stream_shmem_mcuxpresso/
  129. pw_stream_uart_linux/
  130. pw_stream_uart_mcuxpresso/
  131. pw_string/
  132. pw_symbolizer/
  133. pw_sync/
  134. pw_sync_baremetal/
  135. pw_sync_embos/
  136. pw_sync_freertos/
  137. pw_sync_stl/
  138. pw_sync_threadx/
  139. pw_sync_zephyr/
  140. pw_sys_io/
  141. pw_sys_io_ambiq_sdk/
  142. pw_sys_io_arduino/
  143. pw_sys_io_baremetal_lm3s6965evb/
  144. pw_sys_io_baremetal_stm32f429/
  145. pw_sys_io_emcraft_sf2/
  146. pw_sys_io_mcuxpresso/
  147. pw_sys_io_rp2040/
  148. pw_sys_io_stdio/
  149. pw_sys_io_stm32cube/
  150. pw_sys_io_zephyr/
  151. pw_system/
  152. pw_target_runner/
  153. pw_thread/
  154. pw_thread_embos/
  155. pw_thread_freertos/
  156. pw_thread_stl/
  157. pw_thread_threadx/
  158. pw_thread_zephyr/
  159. pw_tls_client/
  160. pw_tls_client_boringssl/
  161. pw_tls_client_mbedtls/
  162. pw_tokenizer/
  163. pw_toolchain/
  164. pw_toolchain_bazel/
  165. pw_trace/
  166. pw_trace_tokenized/
  167. pw_transfer/
  168. pw_uart/
  169. pw_unit_test/
  170. pw_unit_test_zephyr/
  171. pw_varint/
  172. pw_watch/
  173. pw_web/
  174. pw_work_queue/
  175. seed/
  176. targets/
  177. third_party/
  178. ts/
  179. zephyr/
  180. .bazelignore
  181. .bazelrc
  182. .black.toml
  183. .clang-format
  184. .clang-tidy
  185. .eslintrc.cjs
  186. .git-blame-ignore-revs
  187. .gitattributes
  188. .gitignore
  189. .gn
  190. .mypy.ini
  191. .prettierignore
  192. .prettierrc.cjs
  193. .pw_ide.yaml
  194. .pylintrc
  195. activate.bat
  196. Android.bp
  197. AUTHORS
  198. bootstrap.bat
  199. bootstrap.sh
  200. BUILD.bazel
  201. BUILD.gn
  202. BUILDCONFIG.gn
  203. CMakeLists.txt
  204. jest.config.ts
  205. Kconfig.zephyr
  206. LICENSE
  207. modules.gni
  208. OWNERS
  209. package-lock.json
  210. package.json
  211. pigweed.json
  212. PIGWEED_MODULES
  213. README.md
  214. rollup.config.js
  215. tsconfig.json
  216. 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