pw_ide: Auto-run build system command

It's a common point of friction for a new user to run `pw ide sync`
before they have run their build for the first time, resulting in an
error since there's no compilation database to process.

Now, `pw_ide` can catch this mistake and run your build system
command for you, so you automatically end up in the right place.
Projects should define their build system command in the `pw_ide`
settings.

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